1.等级描述
Level 1:初级。是指刚刚通过Python入门课程的人。他可以用1或2个Python类或函数来解决一些问题。通常,答案可以直接在教科书中找到。
Level 2:中级。是指刚刚学习了Python,但是已经有了较强的编程背景的人。他应该能够解决可能涉及3或3个Python类或函数的问题。答案不能直接在课本上找到。
Level 3:高级。。他应该使用Python来解决更复杂的问题,使用更丰富的库函数、数据结构和算法。他应该使用几个Python标准包和高级技术来解决这个问题。
2.问题的模板
问题
提示
解决方案
3.问题
100道Python编程题
题1
1级
问题:编写一个程序,它将找到所有这些数字,可被7整除,但不是5的倍数,2000年至3200年(包括在内)。得到的数字应按逗号分隔的顺序打印在一行上。
提示:考虑使用range(#begin, #end)方法
l = []for i in range(2000, 3201):if i % 7 ==0 and i % 5 !=0:l.append(str(i))print(','.join(l))
题2
1级
问题:编写一个可以计算给定数的阶乘的程序。结果应该以逗号分隔的顺序打印在一行上。假设向程序提供以下输入:8
则输出为:40320
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
def jiecheng(n):if n==0:return 1return n * jiecheng(n-1)print('请输入一个数字:')x = int(input())print(jiecheng(x))
题3
1级
问题:使用给定的整数n,编写一个程序生成一个包含(i, i*i)的字典,该字典包含1到n之间的整数(两者都包含)。然后程序应该打印字典。
假设向程序提供以下输入:8
则输出为:
{1:1,2:4,3:9,4:16,5:25,6:36,,7:49,8:64}
print("输入整数n:")n = int(input())dict = {i:i*i for i in range(1,n+1)}print(dict)
题4
1级
问题:编写一个程序,该程序接受控制台以逗号分隔的数字序列,并生成包含每个数字的列表和元组。假设向程序提供以下输入:
34岁,67年,55岁,33岁,12日,98年
则输出为:[‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’]
(‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’)
import reprint("输入一组数据:")values = input()l = values.split(",")k = re.findall(r"[0-9]+",values)t = tuple(k)print(k)print(t)
题5
1级
问题:定义一个至少有两个方法的类: getString:从控制台输入获取字符串 printString::打印大写母的字符串。
还请包含简单的测试函数来测试类方法。
提示:使用_init__方法构造一些参数
解决方案:
class InputOutString(object):def __init__(self):self.s = ""def getString(self):print("请输入字符串:")self.s = input()def printString(self):print(self.s.upper())strObj = InputOutString()strObj.getString()strObj.printString()
题6
2级
问题:
编写一个程序,根据给定的公式计算并打印值:Q = sqrt(2CD/H)。以下是C和H的固定值:C是50。H是30。D是一个变量,它的值应该以逗号分隔的序列输入到程序中。
例子假设程序的输入序列是逗号分隔的:100,150,180,
程序输出为:18,22,24
提示:如果接收到的输出是小数,则应四舍五入到其最近的值(例如,如果接收到的输出是26.0,则应打印为26)。在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:
import mathC, H = 50, 30# print(C,H)print("请输入数据:")D = input()l = []for i in D.split(","):Q = (math.sqrt(2*C*float(i)/H))l.append(int(Q))print(l)
题7
2级
问题:编写一个程序,以2位数字,X,Y作为输入,生成一个二维数组。数组的第i行和第j列中的元素值应该是i*j。
注意:i= 0,1,…,X – 1; j = 0, 1, …,Y-1。
例子假设程序有以下输入:3、5
则程序输出为:[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8]]
提示:注意:如果要为问题提供输入数据,应该假设它是一个控制台输入,以逗号分隔。
print("请输入两个数: ")input_num = input()dimensions = [int(x) for x in input_num.split(',')]rowNum = dimensions[0]colNum = dimensions[1]# 列表生成法创建二维列表multilist = [[0 for col in range(colNum)] for row in range(rowNum)]for row in range(rowNum):for col in range(colNum):multilist[row][col] = row*col
题8
2级
问题:编写一个程序,接受逗号分隔的单词序列作为输入,按字母顺序排序后按逗号分隔的序列打印单词。假设向程序提供以下输入:
without,hello,bag,world
则输出为:
bag,hello,without,world
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:
input_str = input()string_list = [x for x in input_str.split(',')]print(sorted(string_list))
题9
2级
问题:编写一个程序,接受一行序列作为输入,并在将句子中的所有字符大写后打印行。
假设向程序提供以下输入:
Hello world
Practice makes perfect
则输出为:
HELLO WORLD
PRACTICE MAKES PERFECT
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:
lines = []while True:s = input()if s:lines.append(s.upper())else:break;for sentence in lines:print(sentence)
题10
2级
问题:编写一个程序,接受一系列空格分隔的单词作为输入,并在删除所有重复的单词并按字母数字排序后打印这些单词。
假设向程序提供以下输入:
hello world and practice makes perfect and hello world again
则输出为:
again and hello makes perfect practice world
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
我们使用set容器自动删除重复的数据,然后使用sort()对数据进行排序。
解决方案:
input_str = input()input_str_set = [x for x in input_str.split(' ')]print(sorted(set(input_str_set)))
题11
2级
问题:编写一个程序,接受一系列逗号分隔的4位二进制数作为输入,然后检查它们是否可被5整除。 可被5整除的数字将以逗号分隔的顺序打印。
例:
0100,0011,1010,1001
那么输出应该是:
1010
注意:假设数据由控制台输入。
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
input_str = input()input_str_list = [x for x in input_str.split(',')]res = []for i in input_str_list:inti = int(i,2) # 将四位二进制数转化为10进制数 进行整除判断if inti % 5 == 0:res.append(i)print(res)
题12
2级
问题:编写一个程序,它将找到1000到3000之间的所有这些数字(均包括在内),这样数字的每个数字都是偶数。
获得的数字应以逗号分隔的顺序打印在一行上。
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
values = []for i in range(1000, 3001):s = str(i)if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0):values.append(s)print (",".join(values))
题13
2级
问题:编写一个接受句子并计算字母和数字的程序。假设为程序提供了以下输入:
Hello world! 123
然后,输出应该是:
字母10
数字3
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
print("请输入:")x = input()d = {'digits':0, 'letters':0}for c in x:if c.isdigit():d['digits'] += 1elif c.isalpha():d['letters'] +=1else:passprint("字母",d['letters'])print('数字',d['digits'])
题14
2级
问题:编写一个接受句子的程序,并计算大写字母和小写字母的数量。
假设为程序提供了以下输入:
Hello world!
然后,输出应该是:
大写实例 1
小写实例 9
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
x = input()d = {'letters_upper':0,'letters_lower':0}for i in x:if i.isupper():d['letters_upper'] += 1elif i.islower():d['letters_lower'] += 1else:passprint("大写实例",d['letters_upper'])print("小写实例",d['letters_lower'])
题15
2级
问题:编写一个程序,计算a + aa + aaa + aaaa的值,给定的数字作为a的值。假设为程序提供了以下输入:
9 然后,输出应该是: 11106
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
a + 10a+a + 100a+10*a+a+ …
n = eval(input())args = 0num = 0for i in range(0,4):args += pow(10,i) * nnum += argsprint(num)
题16
2级
问题:使用列表推导来对列表中的每个奇数。 该列表由一系列逗号分隔的数字输入。
假设为程序提供了以下输入:
1,2,3,4,5,6,7,8,9
然后,输出应该是:
1,3,5,7,9
x = input()res = [i for i in x.split(",") if int(i) % 2 !=0]print(",".join(res))
题17
2级
问题:编写一个程序,根据控制台输入的事务日志计算银行帐户的净金额。 事务日志格式如下所示:
D 100
W 200
D表示存款,而W表示提款。
假设为程序提供了以下输入:
D 300
D 300
W 200
D 100
然后,输出应该是:
500
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。逐个输入
netAmount = 0while True:print("请输入:")s = input()if not s:breakvalues = s.split(" ")operation = values[0]amount = int(values[1])if operation == "D":netAmount += amountelif operation == "W":netAmount -= amountelse:passprint(netAmount)
题18
3级
问题:网站要求用户输入用户名和密码进行注册。编写程序以检查用户输入的密码的有效性。
以下是检查密码的标准:
- [a-z]之间至少有1个字母
- [0-9]之间至少有1个数字
- [A-Z]之间至少有一个字母
- [$#@]中至少有1个字符
4.最短交易密码长度:6
5.交易密码的最大长度:12
您的程序应接受一系列逗号分隔的密码,并将根据上述标准进行检查。将打印符合条件的密码,每个密码用逗号分隔。
例:如果以下密码作为程序的输入:
ABd1234@1,a F1#,2w3E*,2We3345
然后,程序的输出应该是:
ABd1234 @ 1
提示:如果输入数据被提供给问题,则应该假定它是控制台输入
正则表达式匹配
import revalues = []item = [x for x in input().split(",")]for p in item:if len(p)<6 or len(p)>12:continueelif not re.search("[a-z]",p):continueelif not re.search("[0-9]",p):continueelif not re.search("[A-Z]",p):continueelif not re.search("[$#@]",p):continueelif not re.search("[$#@]",p):continue# elif re.search("\s",p):# continueelse:passvalues.append(p)print(",".join(values))
题19
3级
问题:您需要编写一个程序,按升序对(名称,年龄,高度)元组进行排序,其中name是字符串,age和height是数字。 元组由控制台输入。 排序标准是:
1:根据名称排序;
2:然后根据年龄排序;
3:然后按分数排序。
优先级是name> age>得分。
如果给出以下元组作为程序的输入:
Tom,19,80
John,20,90
Jony,17,91
Jony,17,93
Json,21,85
然后,程序的输出应该是:
[(‘John’,‘20’,‘90’),(‘Jony’,‘17’,‘91’),(‘Jony’,‘17’,‘93’),(‘Json’,’21 ‘,‘85’),(‘Tom’,‘19’,‘80’)]
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。我们使用itemgetter来启用多个排序键。
from operator import itemgetterl = []while True:s = input()if not s:breakl.append(tuple(s.split(",")))#类型转换为元组,并将这些元组全都添加到一个列表中print(sorted(l, key=itemgetter(0,1,2)))#itemgetter是对同一个列表内的序列排序,也就是对多维度序列排序,这个索引就是每个元组内元素的索引,
题20
3级
问题:使用生成器定义一个类,该生成器可以在给定范围0和n之间迭代可被7整除的数字。
提示:考虑使用yield。
def putNumebers(n):i = 0while i<n:j=ii = i + 1if j%7==0:yield jfor i in putNumebers(100):print(i)
题21
3级
问题:机器人从原点(0,0)开始在平面中移动。 机器人可以通过给定的步骤向上,向下,向左和向右移动。 机器人运动的痕迹如下所示:
UP 5
DOWN 3
LEFT 3
RIGHT 2
方向之后的数字是步骤。 请编写一个程序来计算一系列运动和原点之后距当前位置的距离。如果距离是浮点数,则只打印最接近的整数。
例:如果给出以下元组作为程序的输入:
然后,程序的输出应该是:2
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
import math#round方法 取浮点数四舍五入值pos = [0,0]while True:s = input()if not s:breakmovement = s.split(" ")direction = movement[0]steps = int(movement[1])if direction == 'UP':pos[1] += stepselif direction == 'DOWN':pos[1] -= stepselif direction == 'LEFT':pos[0] -= stepselif direction == 'RIGHT':pos[0] += stepselse:passprint(int(round(math.sqrt(pos[0]**2+pos[1]**2))))
题22
3级
!!!
问题:编写一个程序来计算输入中单词的频率。 按字母顺序对键进行排序后输出。
假设为程序提供了以下输入:
New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.
然后,输出应该是:
2:2
3.:1
3?:1
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
# #字典的get方法# dict.get(key[, value]) # 参数# key -- 字典中要查找的键。# value -- 可选,如果指定键的值不存在时,返回该默认值freq = {}print("请输入")line = input()for word in line.split(" "):freq[word] = freq.get(word,0)+1words = sorted(freq.keys())for w in words:print("%s:%d" % (w,freq[w]))
题23
1级
问题:写一个可以计算数字平方值的方法
提示:使用**运算符
def square(num):return num ** 2print(square(2))print(square(3))
题24
1级
问题:Python有许多内置函数,如果您不知道如何使用它,您可以在线阅读文档或查找一些书籍。 但是Python为每个内置函数都有一个内置的文档函数。
请编写一个程序来打印一些Python内置函数文档,例如abs(),int(),raw_input() 并为您自己的功能添加文档
提示:内置文档方法是__doc__
print(abs.__doc__)print(int.__doc__)print(input.__doc__)def square(num):'''Return the square value of the input number.The input number must be integer.'''return num ** 2print(square(2))print(square.__doc__)
题25
1级
问题:定义一个类,它具有类参数并具有相同的实例参数。
提示:定义一个实例参数,需要在__init__方法中添加它。您可以使用构造参数初始化对象,也可以稍后设置该值
class Person:# Define the class parameter "name"name = "Person"def __init__(self, name=None):# self.name is instance parameterself.name = namejeffrey = Person("jeffrey")print("%s name is %s" % (Person.name, jeffrey.name))nico = Person()nico.name = "Nico"print("%s name is %s" % (Person.name, nico.name))
第26题
问题:定义一个可以计算两个数之和的函数。
提示:定义一个带有两个数字作为参数的函数。可以在函数中计算和并返回值。
def SumFunction(number1, number2):return number1+number2print(SumFunction(1,2))
第27题
问题:定义一个可以将整数转换为字符串并在控制台中打印的函数。
提示:使用str()将数字转换为字符串。
def printValue(n):return str(n)print(printValue(3))
第28题
问题:定义一个可以将字符串中的数字进行相加的函数。
提示:使用int()将字符串转换为数字。
def sum_str(str1):len1 = len(str1)sum = n =0for i in range(len1):if 40 <= ord(str1[i]) <= 57: # 判断字符ascii码是否在数字ascii码值的范围内n = int(str1[i]) + nelse:sum = n + sumn = 0sum = n+sumprint(sum)str1 = "b532x2x3c4b5"sum_str(str1)
第29题
问题:定义一个函数,它可以接收两个字符串形式的整数并计算它们的和,然后在控制台中输出。
提示:使用int()将字符串转换为整数。
def sum_str_int(str1,str2):return int(str1)+int(str2)sum = sum_str_int('1','2')print(sum)
第30题
问题:定义一个函数,它可以接受两个字符串作为输入,并将它们连接起来,然后在控制台中输出。
提示:使用+连接字符串
def str_l(str1,str2):return str1+str2s = str_l('sdf','sad')print(s)
第31题
问题:定义一个函数,它可以接受两个字符串作为输入,并在控制台中以最大长度打印字符串。如果两个字符串长度相同,则函数应逐行打印所有字符串。
提示:使用len()函数获取字符串的长度。
def printValue(s1,s2):if len(s1) > len(s2):print(s1)elif len(s1) < len(s2):print(s2)else:print(s1)print(s2)printValue('123','456')
第32题
问题:定义一个函数,它可以接受一个整数作为输入,如果这个数字是偶数,则输出“它是偶数”,否则输出“它是奇数”。
提示:使用%运算符检查一个数字是偶数还是奇数。
def check_nums(n):if n % 2 ==0:print("它是偶数")else:print("它是奇数")check_nums(2)
第33题
问题:定义一个函数,它可以打印一个字典,其中键是1到3之间的数字(包括在内),值是键的平方。
提示:使用dict[key]=value模式将条目放入字典中。使用**运算符得到一个数字的幂。
def create_dic(key):dict = {}for i in range(1,key+1):dict[i] = i**2print(dict)create_dic(3)
第34题
问题:定义一个函数,它可以打印一个字典,其中键是1到20之间的数字(包括在内),值是键的平方。
提示:使用dict[key]=value模式将条目放入字典中。使用**操作符获取\*一个数的幂。对循环使用range()
def create_dic(key):dict = {}for i in range(1,key+1):dict[i] = i**2print(dict)create_dic(20)
第35题
问题:定义一个函数,它可以生成一个字典,其中键是1到20之间的数字(包括在内),值是键的平方。函数只输出值即可。
提示:使用dict[key]=value模式将条目放入字典中。使用**操作符获取一个数的幂。对于循环使用range()。使用keys()迭代字典中的键。我们还可以使用item()来获取键/值对。
def create_dic(key):dict = {}for i in range(1,key+1):dict[i] = i**2for (k,v) in dict.items():print(v)create_dic(20)
第36题
问题:定义一个函数,它可以生成一个字典,其中键是1到20之间的数字(包括在内),值是键的平方。函数只打印键即可;
提示:使用dict[key]=value模式将条目放入字典中。
使用**运算符得到一个数字的幂,对循环使用range(),使用keys()迭代字典中的键,我们还可以使用item()来获取键/值对。
def create_dic(key):dict = {}for i in range(1,key+1):dict[i] = i**2for k in dict.keys():print(k)create_dic(20)
第37题
问题:定义一个函数,它可以生成和打印一个列表,其中的值是1到20之间的数的平方(包括这两个数)。
提示:使用**运算符得到一个数字的幂,对于循环使用range(),使用list.append()向列表中添加值。或者使用列表推导式
def c_list(n):l = [i**2 for i in range(1,n+1)]return lprint(c_list(20))
第38题
问题:定义一个函数,它可以生成一个列表,其中的值是1到20之间的数的平方(包括这两个数),然后函数需要打印列表中的前5个元素。
提示:使用**运算符得到一个数字的幂。对循环使用range(),使用list.append()向列表中添加值,使用[n1:n2]对列表进行切片;或者使用列表推导式
def c_list(n):l = [i**2 for i in range(1,n+1)]return l[0:5]print(c_list(20))
第39题
问题:定义一个函数,它可以生成一个列表,其中的值是1到20之间的数的平方(包括这两个数)。然后函数需要打印列表中的最后5个元素。
提示:使用**运算符得到一个数字的幂。对循环使用range()。使用list.append()向列表中添加值。使用[n1:n2]对列表进行切片。或者使用列表推导式
def c_list(n):l = [i**2 for i in range(1,n+1)]return l[-6:-1]print(c_list(20))
第40题
问题:定义一个函数,它可以生成一个列表,其中的值是1到20之间的数的平方(包括这两个数)。然后,该函数需要打印列表中除前5个元素外的所有值。
提示:使用**运算符得到一个数字的幂。对循环使用range()。使用list.append()向列表中添加值。使用[n1:n2]对列表进行切片;或者使用列表推导式
def c_list(n):l = [i**2 for i in range(1,n+1)]return l[5:]print(c_list(20))
第41题
问题:定义一个函数,它可以生成并打印一个元组,其中的值是1到20之间的数的平方(包括这两个数)。
提示:使用**运算符得到一个数字的幂。对循环使用range()。使用list.append()向列表中添加值。使用tuple()从列表中获取一个元组。
def c_list(n):l = [i**2 for i in range(1,n+1)]return tuple(l)print(c_list(20))
第42题
问题:对于给定的元组(1,2,3,4,5,6,7,8,9,10),编写一个程序,在一行中输出前半部分值,在一行中输出后半部分值。
提示:使用[n1:n2]表示法从元组中获取切片。
t = (1,2,3,4,5,6,7,8,9,10)print(t[0:5])print(t[5:])
第43题
问题:编写程序生成并输出另一个元组,其值是给定元组(1,2,3,4,5,6,7,8,9,10)中的偶数。
提示:使用“for”来迭代元组,使用tuple()从列表中生成一个tuple。
t = (1,2,3,4,5,6,7,8,9,10)l = []for i in t:if i % 2 == 0:l.append(i)print(tuple(l))
第44题
问题:写一个程序,接受一个字符串作为输入,如果字符串是“yes”或“YES”或“Yes”,打印”Yes”,否则打印“No”。
提示:使用if语句判断条件。
s = input()if s == 'yes' or s == 'YES' or s == 'Yes':print("Yes")else:print("No")
第45题
问题:编写一个程序,可以使用过滤函数过滤列表中的偶数。列表是:[1,2,3,4,5,6,7,8,9,10]。
提示:使用filter()过滤列表中的一些元素。使用lambda定义匿名函数。
l = [1,2,3,4,5,6,7,8,9,10]filter_l = filter(lambda x:x%2==0,l)for i in filter_l:print(i)
第46题
问题:编写一个程序,可以使用map()构造一个列表,其中的元素是[1,2,3,4,5,6,7,8,9,10]中元素的平方。
提示:使用map()生成列表。使用lambda定义匿名函数。
l = [1,2,3,4,5,6,7,8,9,10]square_l = map(lambda x:x**2, l)print(square_l)
第47题
问题:编写一个程序,它可以map()和filter()生成一个列表,其中的元素是[1,2,3,4,5,6,7,8,9,10]中的偶数的平方。
提示:使用map()生成列表。使用filter()来过滤列表中的元素。使用lambda定义匿名函数。
li = [1,2,3,4,5,6,7,8,9,10]evenNumbers = map(lambda x: x**2, filter(lambda x: x%2==0, li))print(list(evenNumbers))
第48题
问题:编写一个程序,它可以filter()生成一个列表,其中的元素是1到20之间的偶数(包括两个元素)。
提示:使用filter()来过滤列表中的元素。使用lambda定义匿名函数。
evenNumbers = filter(lambda x: x%2==0, range(1,21))for even in evenNumbers:print(even)
第49题
问题:编写一个程序,它可以使用map()生成一个列表,其中的元素是1到20之间的数的平方(包括两个数)。
提示:使用map()生成列表。使用lambda定义匿名函数。
squaredNumbers = map(lambda x: x**2, range(1,21))print(squaredNumbers)
第50题
问题:定义一个名为American的类,它有一个名为printNationality的静态方法。
提示:使用@staticmethod装饰器来定义类的静态方法。
class American(object):@staticmethoddef printNationality():print("America")anAmerican = American()anAmerican.printNationality()American.printNationality()
第51题
问题:定义一个名为American的类及其子类NewYorker。
提示:使用类子类(ParentClass)来定义子类。
class American(object):passclass NewYorker(American):passanAmerican = American()aNewYorker = NewYorker()print(anAmerican)print(aNewYorker)
第52题
问题:定义一个名为Circle的类,可以用半径来构造。Circle类有一个可以计算面积的方法。
提示:使用def methodName(self)定义一个方法。
class Circle(object):def __init__(self,r):self.r = rdef area(self):return self.r**2*2*3.14aCircle = Circle(2)print(aCircle.area())
第53题
问题:定义一个名为Rectangle的类,它可以由长度和宽度构造。矩形类有一个方法可以计算面积。
提示:使用def methodName(self)定义一个方法。
class Rectangle(object):def __init__(self, l, w):self.l = lself.w = wdef area(self):return self.l * self.waRectangle = Rectangle(20,10)print(aRectangle.area())
第54题
问题:定义一个名为Shape的类及其子类Square。Square类有一个init函数,它以长度作为参数。这两个类都有一个area函数,可以打印形状的区域,形状的区域默认为0。
提示:要覆盖父类中的方法,可以在父类中定义一个同名的方法。
class Shape(object):def __init__(self):passdef area(self):passclass Square(Shape):def __init__(self, l):Shape.__init__(self)self.length = ldef area(self):return self.length * self.lengthaSquare = Square(3)print(aSquare.area())
第55题
问题:请引发RuntimeError异常。
提示:使用raise()引发异常。
raise RuntimeError('something wrong')
第56题
问题:编写一个函数来计算5/0,并使用try/except来捕获异常。
提示:使用try/exexception捕获异常。
def throws():return 5/0try:throws()except ZeroDivisionError:print("division by Zero!")
第57题
!!!
问题:定义一个自定义异常类,它将字符串消息作为属性。
提示:要定义一个自定义异常,我们需要定义一个继承自exception的类
class MyError(Exception):"""My own Exception classAttributes:msg-- explantion of the error"""def __init__(self,msg):self.msg = msgerror = MyError("Something wrong")
第58题
问题:假设我们有一些’username@companyname.com ‘格式的电子邮件地址,请编写程序打印给定电子邮件地址的用户名,用户名和公司名都只由字母组成。
示例:如果下面的电子邮件地址作为程序的输入:john@google.com. 那么,程序的输出应该是:john 在向问题提供输入数据的情况下,应该假定它是控制台输入。
提示:使用\w来匹配字母。
import reemailAddress = input()pat2 = "(\w+)@(\w+\.)+(com)"r2 = re.match(pat2,emailAddress)print(r2.group(1))
第59题
问题:假设我们有一些“username@companyname.com”格式的电子邮件地址,请编写程序打印给定的电子邮件地址的公司名称;用户名和公司名都只由字母组成。
示例:如果下面的电子邮件地址作为程序的输入:john@google.com 那么,程序的输出应该是:google 在向问题提供输入数据的情况下,应该假定它是控制台输入。
提示:使用\w来匹配字母。
import reemailAddress = input()pat2 = "(\w+)@(\w+\.)+(com)"r2 = re.match(pat2,emailAddress)print(r2.group(2))
第60题
问题:编写一个程序,接收一个由空格分隔的单词序列作为输入,打印只由数字组成的单词。
示例:如果下面的单词作为程序的输入:2 cats and 3 dogs; 那么,程序的输出应该是:[‘2’, ‘3’] 在向问题提供输入数据的情况下,应该假定它是控制台输入。
提示:使用re.findall()使用正则表达式查找所有子字符串。
import res = input()print(re.findall("\d+",s))
第61题
问题:打印unicode字符串“hello world”。
提示:使用u’strings’格式来定义unicode字符串;
unicodeString = u"hello world!"print(unicodeString)
第62题
问题:python中的解码与编码;
提示:使用encode()与decode()函数进行转换。
s = '我爱中国'enc = s.encode('utf-8')dec = enc.decode('utf-8')print(enc)print(dec)
第63题
问题:编写一个特殊注释来表明Python源代码文件是unicode格式的。
# -*- coding: utf-8 -*-#----------------------------------------#
第64题
问题:写一个程序来计算1/2+2/3+3/4+…+n/(n+1)。
示例:如果下面的n作为程序的输入:5; 那么,程序的输出应该是:3.55;
提示:使用float()将整数转换为浮点数。
n=int(input())sum=0.0for i in range(1,n+1):sum += float(float(i)/(i+1))print(sum)
第65题
问题:编写程序计算:当n>0和F(0)=1时,F(n)=F(n-1)+100通过控制台输入一个给定的n (n>0)。
示例:如果下面的n作为程序的输入:5, 那么,程序的输出应该是:500;
提示:我们可以在Python中定义递归函数。
def f(n):if n==0:return 0else:return f(n-1)+100n=int(input())print(f(n))
第66题
问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序,在控制台输入给定n的情况下计算f(n)的值。
示例:如果下面的n作为程序的输入:7; 那么,程序的输出应该是:13;
提示:我们可以在Python中定义递归函数。
def f(n):if n == 0: return 0elif n == 1: return 1else: return f(n-1)+f(n-2)n=int(input())print(f(n))
第67题
问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序使用列表理解输出逗号分隔的Fibonacci序列,并通过控制台输入给定的n。
示例:如果下面的n作为程序的输入:7; 那么,程序的输出应该是:0,1,1,2,3,5,8,13;
提示:我们可以在Python中定义递归函数。使用列表理解从现有列表生成列表。使用string.join()连接字符串列表。
def f(n):if n == 0: return 0elif n == 1: return 1else: return f(n-1)+f(n-2)n=int(input())values = [str(f(x)) for x in range(0, n+1)]print(",".join(values))
第68题
问题:请使用generator编写一个程序,当n由控制台输入时,以逗号分隔的形式输出0和n之间的偶数;
示例:如果下面的n作为程序的输入10; 那么,程序的输出应该是:0,2,4,6,8,10
提示:使用yield生成生成器中的下一个值。
def EvenGenerator(n):i=0while i<=n:if i%2==0:yield ii+=1n=int(input())values = []for i in EvenGenerator(n):values.append(str(i))print(",".join(values))
第69题
问题:请编写一个生成器程序,以逗号分隔的形式输出0到n之间可以被5和7整除的数字,而n是通过控制台输入的。
示例:如果下面的n作为程序的输入:100; 那么,程序的输出应该是:0,35,70;
提示:使用yield生成生成器中的下一个值。
def NumGenerator(n):for i in range(n+1):if i%5==0 and i%7==0:yield in=int(input())values = []for i in NumGenerator(n):values.append(str(i))print(",".join(values))
第70题
问题:请写assert语句来验证列表[2,4,6,8]中的每个数字都是偶数。
提示:使用“断言表达式”进行断言。
li = [2,4,6,8]for i in li:assert i%2==0
第71题
问题:请编写一个程序,从控制台接收基本数学表达式,并输出计算结果。
示例:如果下面的字符串作为程序的输入:35 + 3; 那么,程序的输出应该是:38;
提示:使用eval()计算表达式。
expression = input()print(eval(expression))
第72题
问题:请编写一个二分搜索函数,搜索排序列表中的项。函数应该返回要在列表中搜索的元素的索引。
提示:使用if/elif来处理条件。
import mathdef bin_search(l, element):""":param l: 查找序列:param element: 待查找元素:return: 待查找元素的索引值"""bottom = 0top = len(l) - 1index = -1 # 索引为-1即查找的元素不存在while top >= bottom and index == -1:mid = int(math.floor((bottom+top)/2.0)) # 该math.floor()方法将数字向下舍入为最接近的整数,并返回结果。if l[mid] == element:index = midelif l[mid] > element:top = mid - 1else:bottom = mid + 1return "查找元素不存在!" if index == -1 else indexli=[2,5,7,9,11,17,222]print(bin_search(li,11))print(bin_search(li,12))
第73题
问题:随机生成1,100内的一个整数;
提示:random.randint()
import randomrandom.randint(a=1,b=100)
第74题
问题:请使用Python math模块生成一个值在10到100之间的随机浮点数。
提示:使用random.random()在[0,1)中生成一个随机浮点数。乘以100
import randomdef fn39():p=random.random()*100if p>=10 and p<=100:return p
第75题
问题:请使用Python数学模块生成一个随机浮点,其值在5到95之间。
import randomdef fn39_1():p=(random.random()*100)-5if p>=5 and p<=95:return p
第76题
问题:请编写一个程序输出O和10之间的随机偶数使用随机模块和列表理解。
提示:对列表中的随机元素使用random.choice()。
import randomprint(random.choice([i for i in range(11) if i%2==0]))
第77题
问题:请编写一个程序输出一个随机数,它可以被5和7整除,介于0和100之间,包括0和100,使用随机模块和列表理解。
提示:对列表中的随机元素使用random.choice()。
import randomprint(random.choice([i for i in range(101) if i%5==0 and i%7==0]))
第78题
问题:请编写一个程序生成一个包含100到200之间的5个随机数的列表。
提示:使用random.sample()生成一个随机值列表。
import randomprint(random.sample(range(100,201), 5))
第79题
问题:请编写一个程序随机生成一个列表,其中包含100到200之间的5个偶数。
提示:使用random.sample()生成一个随机值列表。
import randomprint(random.sample([i for i in range(100,201) if i%2==0], 5))
第80题
问题:请编写一个程序,随机生成一个列表,从1到1000(含1000),有5个数字,可以被5和7整除。
提示:使用random.sample()生成一个随机值列表。
import randomprint(random.sample([i for i in range(1,1001) if i % 5 == 0 and i % 7 == 0],5))
第81题
问题:请写一个程序来随机打印一个7到15之间的整数(包括15)。
提示:使用random.randrange()到一个给定范围内的随机整数。
import randomprint(random.randrange(7,16))
第82题
问题:请编写一个程序来压缩和解压字符串”hello world!hello world!hello world!hello world!”。
提示:使用zlib.compress()和zlib.decompress()来压缩和解压缩字符串。
import zlibs = b'hello world!hello world!hello world!hello world!'t = zlib.compress(s)print(t)print(zlib.decompress(t))
第83题
问题:请编写一个程序打印100次“1+1”执行的运行时间。
提示:使用timeit()函数测量运行时间。
from timeit import Timert = Timer("for i in range(100):1+1")print(t.timeit())
第84题
问题:请编写一个程序洗牌和打印列表[3,6,7,8]。
提示:使用shuffle()函数洗牌列表。
from random import shuffleli = [3,6,7,8]shuffle(li)print(li)
第85题
问题:请编写一个程序洗牌和打印列表[3,6,7,8]。
提示:使用shuffle()函数洗牌列表。
from random import shuffleli = [3,6,7,8]shuffle(li)print(li)
第86题
问题:请编写一个程序,生成主语在 [“I”, “You”],动词在[“Play”, “Love”]中,对象在[“Hockey”,“Football”]中的所有句子.
提示:使用list[index]表示法从列表中获取元素。
subjects=["I", "You"]verbs=["Play", "Love"]objects=["Hockey","Football"]for i in range(len(subjects)):for j in range(len(verbs)):for k in range(len(objects)):sentence = "%s %s %s." % (subjects[i], verbs[j], objects[k])print(sentence)#也可不用索引# subjects=["I", "You"]# verbs=["Play", "Love"]# objects=["Hockey","Football"]# for i in subjects:# for j in verbs:# for k in objects:# sentence = "%s %s %s." % (i, j, k)# print(sentence)
第87题
问题:请写一个程序打印列表,删除后删除偶数[5,6,77,45,22,12,24]。
li = [5,6,77,45,22,12,24]li = [x for x in li if x%2!=0]print(li)
第88题
问题:使用列表,请编写程序,删除[12,24,35,70,88,120,155]中可被5和7整除的删除数后,打印列表。
li = [12,24,35,70,88,120,155]li = [x for x in li if x%5!=0 and x%7!=0]print(li)
第89题
问题:使用列表推导式,请编写一个程序,去掉[12,24,35,70,88,120,155]中的第0,2,4,6位置上的元素后打印列表。
提示:从列表中删除一组元素。使用enumerate()来获取(索引,值)元组。
li = [12,24,35,70,88,120,155]li = [x for (i,x) in enumerate(li) if i%2!=0]print(li)
第90题
问题:使用列表理解,编写一个程序生成一个358三维数组,每个元素为0。
提示:使用列表理解来创建数组。
import numpy as nparray = [[ [0 for col in range(8)] for col in range(5)] for row in range(3)]print(np.shape(array))
第91题
问题:利用列表理解,请编写一个程序,去掉[12,24,35,70,88,120,155]中的第0,第4,第5个数字后,将列表打印出来。
提示:使用列表理解从列表中删除一组元素。使用enumerate()来获取(index, value)元组。
li = [12,24,35,70,88,120,155]li = [x for (i,x) in enumerate(li) if i not in (0,4,5)]print(li)
第92题
问题:通过使用列表理解,请编写一个程序,在[12,24,35,24,88,120,155]中删除值24后打印列表。
li = [12,24,35,24,88,120,155]li = [i for i in li if i != 24]print(li)
第93题
问题:对于两个已知链表[1,3,6,78,35,55]和[12,24,35,24,88,120,155],编写一个程序来生成一个元素为上述两个链表交集的链表。
提示:使用set()和”&”进行集合相交操作。
l1 = [1,3,6,78,35,55]l2 = [12,24,35,24,88,120,155]l = list(set(l1) & set(l2))print(l)
第94题
问题:对于给定的列表[12,24,35,24,88,120,155,88,120,155],编写一个程序来打印这个列表-删除所有重复的值与原始顺序保留。
提示:使用set()来存储一些没有重复的值。set()集合是无序的,不能直接转哦
def removeDuplicate( li ):newli=[]seen = set()for item in li:if item not in seen:seen.add( item )newli.append(item)return newlili=[12,24,35,24,88,120,155,88,120,155]print(removeDuplicate(li))
第95题
问题:定义一个类Person和它的两个子类:Male和Female。所有的类都有一个方法“getGender”,它可以打印“Male”为男性类,“Female”为女性类。
提示:使用子类(Parentclass)来定义子类。
class Person(object):def getGender(self):return "Unknown"class Male(Person):def getGender(self):return "Male"class Female(Person):def getGender(self):return "FeMale"aMale = Male()aFemale= Female()print(aMale.getGender())print(aFemale.getGender())
第96题
问题:请编写一个程序,计算并打印由控制台输入的字符串中的每个字符的数量。
示例:如果下面的字符串作为程序的输入:abcdefgab; 那么,程序的输出应该是:a,2 c,2 b,2 e,1 d,1 g,1 f,1;
提示:使用dict存储键/值对。使用dict.get()方法查找具有默认值的键。
dic = {}s=input()for s in s:dic[s] = dic.get(s,0)+1print('\n'.join(['%s,%s' % (k, v) for k, v in dic.items()]))
第97题
问题:请编写一个程序,从控制台接收一个字符串,并以相反的顺序打印出来。
示例:如果下面的字符串作为程序的输入:rise to vote sir; 那么,程序的输出应该是:ris etov ot esir;
提示:使用list[::-1]以相反的顺序迭代一个列表。
s=input()s = s[::-1]print(s)
第98题
问题:请编写一个程序,从控制台接收一个字符串,并打印具有偶数索引的字符;
示例:如果下面的字符串作为程序的输入:H1e2l3l4o5w6o7r8l9d 那么,程序的输出应该是:Helloworld;
提示:使用list[::2]来迭代第2步中的列表。
s = input()print(s[::2])
第99题
问题:请写一个程序,打印[1,2,3]的所有排列;
提示:使用itertools.permutations)得到list的排列。
from itertools import permutationsl = [1,2,3]print(list(permutations(l)))
第100题
问题:鸡兔同笼问题,写一个程序来解决一个中国古代的经典难题:我们数农场里的鸡和兔子中有35个头和94条腿。我们有多少只兔子和多少只鸡?
提示:使用for循环来迭代所有可能的解决方案。
def solves(numheads, numlegs):res = "No solutions!"for i in range(numheads+1):j = numheads - iif 2*i+4*j == numlegs:return i, jreturn res, resnumheads=35numlegs=94solutions=solves(numheads,numlegs)print(solutions)
1.等级描述
Level 1:初级。是指刚刚通过Python入门课程的人。他可以用1或2个Python类或函数来解决一些问题。通常,答案可以直接在教科书中找到。
Level 2:中级。是指刚刚学习了Python,但是已经有了较强的编程背景的人。他应该能够解决可能涉及3或3个Python类或函数的问题。答案不能直接在课本上找到。
Level 3:高级。。他应该使用Python来解决更复杂的问题,使用更丰富的库函数、数据结构和算法。他应该使用几个Python标准包和高级技术来解决这个问题。
2.问题的模板
问题
提示
解决方案
3.问题
100道Python编程题
题1
1级
问题:编写一个程序,它将找到所有这些数字,可被7整除,但不是5的倍数,2000年至3200年(包括在内)。得到的数字应按逗号分隔的顺序打印在一行上。
提示:考虑使用range(#begin, #end)方法
l = []for i in range(2000, 3201):if i % 7 ==0 and i % 5 !=0:l.append(str(i))print(','.join(l))
题2
1级
问题:编写一个可以计算给定数的阶乘的程序。结果应该以逗号分隔的顺序打印在一行上。假设向程序提供以下输入:8
则输出为:40320
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
def jiecheng(n):if n==0:return 1return n * jiecheng(n-1)print('请输入一个数字:')x = int(input())print(jiecheng(x))
题3
1级
问题:使用给定的整数n,编写一个程序生成一个包含(i, i*i)的字典,该字典包含1到n之间的整数(两者都包含)。然后程序应该打印字典。
假设向程序提供以下输入:8
则输出为:
{1:1,2:4,3:9,4:16,5:25,6:36,,7:49,8:64}
print("输入整数n:")n = int(input())dict = {i:i*i for i in range(1,n+1)}print(dict)
题4
1级
问题:编写一个程序,该程序接受控制台以逗号分隔的数字序列,并生成包含每个数字的列表和元组。假设向程序提供以下输入:
34岁,67年,55岁,33岁,12日,98年
则输出为:[‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’]
(‘34’, ‘67’, ‘55’, ‘33’, ‘12’, ‘98’)
import reprint("输入一组数据:")values = input()l = values.split(",")k = re.findall(r"[0-9]+",values)t = tuple(k)print(k)print(t)
题5
1级
问题:定义一个至少有两个方法的类: getString:从控制台输入获取字符串 printString::打印大写母的字符串。
还请包含简单的测试函数来测试类方法。
提示:使用_init__方法构造一些参数
解决方案:
class InputOutString(object):def __init__(self):self.s = ""def getString(self):print("请输入字符串:")self.s = input()def printString(self):print(self.s.upper())strObj = InputOutString()strObj.getString()strObj.printString()
题6
2级
问题:
编写一个程序,根据给定的公式计算并打印值:Q = sqrt(2CD/H)。以下是C和H的固定值:C是50。H是30。D是一个变量,它的值应该以逗号分隔的序列输入到程序中。
例子假设程序的输入序列是逗号分隔的:100,150,180,
程序输出为:18,22,24
提示:如果接收到的输出是小数,则应四舍五入到其最近的值(例如,如果接收到的输出是26.0,则应打印为26)。在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:
import mathC, H = 50, 30# print(C,H)print("请输入数据:")D = input()l = []for i in D.split(","):Q = (math.sqrt(2*C*float(i)/H))l.append(int(Q))print(l)
题7
2级
问题:编写一个程序,以2位数字,X,Y作为输入,生成一个二维数组。数组的第i行和第j列中的元素值应该是i*j。
注意:i= 0,1,…,X – 1; j = 0, 1, …,Y-1。
例子假设程序有以下输入:3、5
则程序输出为:[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8]]
提示:注意:如果要为问题提供输入数据,应该假设它是一个控制台输入,以逗号分隔。
print("请输入两个数: ")input_num = input()dimensions = [int(x) for x in input_num.split(',')]rowNum = dimensions[0]colNum = dimensions[1]# 列表生成法创建二维列表multilist = [[0 for col in range(colNum)] for row in range(rowNum)]for row in range(rowNum):for col in range(colNum):multilist[row][col] = row*col
题8
2级
问题:编写一个程序,接受逗号分隔的单词序列作为输入,按字母顺序排序后按逗号分隔的序列打印单词。假设向程序提供以下输入:
without,hello,bag,world
则输出为:
bag,hello,without,world
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:
input_str = input()string_list = [x for x in input_str.split(',')]print(sorted(string_list))
题9
2级
问题:编写一个程序,接受一行序列作为输入,并在将句子中的所有字符大写后打印行。
假设向程序提供以下输入:
Hello world
Practice makes perfect
则输出为:
HELLO WORLD
PRACTICE MAKES PERFECT
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
解决方案:
lines = []while True:s = input()if s:lines.append(s.upper())else:break;for sentence in lines:print(sentence)
题10
2级
问题:编写一个程序,接受一系列空格分隔的单词作为输入,并在删除所有重复的单词并按字母数字排序后打印这些单词。
假设向程序提供以下输入:
hello world and practice makes perfect and hello world again
则输出为:
again and hello makes perfect practice world
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
我们使用set容器自动删除重复的数据,然后使用sort()对数据进行排序。
解决方案:
input_str = input()input_str_set = [x for x in input_str.split(' ')]print(sorted(set(input_str_set)))
题11
2级
问题:编写一个程序,接受一系列逗号分隔的4位二进制数作为输入,然后检查它们是否可被5整除。 可被5整除的数字将以逗号分隔的顺序打印。
例:
0100,0011,1010,1001
那么输出应该是:
1010
注意:假设数据由控制台输入。
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
input_str = input()input_str_list = [x for x in input_str.split(',')]res = []for i in input_str_list:inti = int(i,2) # 将四位二进制数转化为10进制数 进行整除判断if inti % 5 == 0:res.append(i)print(res)
题12
2级
问题:编写一个程序,它将找到1000到3000之间的所有这些数字(均包括在内),这样数字的每个数字都是偶数。
获得的数字应以逗号分隔的顺序打印在一行上。
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
values = []for i in range(1000, 3001):s = str(i)if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0):values.append(s)print (",".join(values))
题13
2级
问题:编写一个接受句子并计算字母和数字的程序。假设为程序提供了以下输入:
Hello world! 123
然后,输出应该是:
字母10
数字3
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
print("请输入:")x = input()d = {'digits':0, 'letters':0}for c in x:if c.isdigit():d['digits'] += 1elif c.isalpha():d['letters'] +=1else:passprint("字母",d['letters'])print('数字',d['digits'])
题14
2级
问题:编写一个接受句子的程序,并计算大写字母和小写字母的数量。
假设为程序提供了以下输入:
Hello world!
然后,输出应该是:
大写实例 1
小写实例 9
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
x = input()d = {'letters_upper':0,'letters_lower':0}for i in x:if i.isupper():d['letters_upper'] += 1elif i.islower():d['letters_lower'] += 1else:passprint("大写实例",d['letters_upper'])print("小写实例",d['letters_lower'])
题15
2级
问题:编写一个程序,计算a + aa + aaa + aaaa的值,给定的数字作为a的值。假设为程序提供了以下输入:
9 然后,输出应该是: 11106
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
a + 10a+a + 100a+10*a+a+ …
n = eval(input())args = 0num = 0for i in range(0,4):args += pow(10,i) * nnum += argsprint(num)
题16
2级
问题:使用列表推导来对列表中的每个奇数。 该列表由一系列逗号分隔的数字输入。
假设为程序提供了以下输入:
1,2,3,4,5,6,7,8,9
然后,输出应该是:
1,3,5,7,9
x = input()res = [i for i in x.split(",") if int(i) % 2 !=0]print(",".join(res))
题17
2级
问题:编写一个程序,根据控制台输入的事务日志计算银行帐户的净金额。 事务日志格式如下所示:
D 100
W 200
D表示存款,而W表示提款。
假设为程序提供了以下输入:
D 300
D 300
W 200
D 100
然后,输出应该是:
500
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。逐个输入
netAmount = 0while True:print("请输入:")s = input()if not s:breakvalues = s.split(" ")operation = values[0]amount = int(values[1])if operation == "D":netAmount += amountelif operation == "W":netAmount -= amountelse:passprint(netAmount)
题18
3级
问题:网站要求用户输入用户名和密码进行注册。编写程序以检查用户输入的密码的有效性。
以下是检查密码的标准:
- [a-z]之间至少有1个字母
- [0-9]之间至少有1个数字
- [A-Z]之间至少有一个字母
- [$#@]中至少有1个字符
4.最短交易密码长度:6
5.交易密码的最大长度:12
您的程序应接受一系列逗号分隔的密码,并将根据上述标准进行检查。将打印符合条件的密码,每个密码用逗号分隔。
例:如果以下密码作为程序的输入:
ABd1234@1,a F1#,2w3E*,2We3345
然后,程序的输出应该是:
ABd1234 @ 1
提示:如果输入数据被提供给问题,则应该假定它是控制台输入
正则表达式匹配
import revalues = []item = [x for x in input().split(",")]for p in item:if len(p)<6 or len(p)>12:continueelif not re.search("[a-z]",p):continueelif not re.search("[0-9]",p):continueelif not re.search("[A-Z]",p):continueelif not re.search("[$#@]",p):continueelif not re.search("[$#@]",p):continue# elif re.search("\s",p):# continueelse:passvalues.append(p)print(",".join(values))
题19
3级
问题:您需要编写一个程序,按升序对(名称,年龄,高度)元组进行排序,其中name是字符串,age和height是数字。 元组由控制台输入。 排序标准是:
1:根据名称排序;
2:然后根据年龄排序;
3:然后按分数排序。
优先级是name> age>得分。
如果给出以下元组作为程序的输入:
Tom,19,80
John,20,90
Jony,17,91
Jony,17,93
Json,21,85
然后,程序的输出应该是:
[(‘John’,‘20’,‘90’),(‘Jony’,‘17’,‘91’),(‘Jony’,‘17’,‘93’),(‘Json’,’21 ‘,‘85’),(‘Tom’,‘19’,‘80’)]
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。我们使用itemgetter来启用多个排序键。
from operator import itemgetterl = []while True:s = input()if not s:breakl.append(tuple(s.split(",")))#类型转换为元组,并将这些元组全都添加到一个列表中print(sorted(l, key=itemgetter(0,1,2)))#itemgetter是对同一个列表内的序列排序,也就是对多维度序列排序,这个索引就是每个元组内元素的索引,
题20
3级
问题:使用生成器定义一个类,该生成器可以在给定范围0和n之间迭代可被7整除的数字。
提示:考虑使用yield。
def putNumebers(n):i = 0while i<n:j=ii = i + 1if j%7==0:yield jfor i in putNumebers(100):print(i)
题21
3级
问题:机器人从原点(0,0)开始在平面中移动。 机器人可以通过给定的步骤向上,向下,向左和向右移动。 机器人运动的痕迹如下所示:
UP 5
DOWN 3
LEFT 3
RIGHT 2
方向之后的数字是步骤。 请编写一个程序来计算一系列运动和原点之后距当前位置的距离。如果距离是浮点数,则只打印最接近的整数。
例:如果给出以下元组作为程序的输入:
然后,程序的输出应该是:2
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
import math#round方法 取浮点数四舍五入值pos = [0,0]while True:s = input()if not s:breakmovement = s.split(" ")direction = movement[0]steps = int(movement[1])if direction == 'UP':pos[1] += stepselif direction == 'DOWN':pos[1] -= stepselif direction == 'LEFT':pos[0] -= stepselif direction == 'RIGHT':pos[0] += stepselse:passprint(int(round(math.sqrt(pos[0]**2+pos[1]**2))))
题22
3级
!!!
问题:编写一个程序来计算输入中单词的频率。 按字母顺序对键进行排序后输出。
假设为程序提供了以下输入:
New to Python or choosing between Python 2 and Python 3? Read Python 2 or Python 3.
然后,输出应该是:
2:2
3.:1
3?:1
New:1
Python:5
Read:1
and:1
between:1
choosing:1
or:2
to:1
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
# #字典的get方法# dict.get(key[, value]) # 参数# key -- 字典中要查找的键。# value -- 可选,如果指定键的值不存在时,返回该默认值freq = {}print("请输入")line = input()for word in line.split(" "):freq[word] = freq.get(word,0)+1words = sorted(freq.keys())for w in words:print("%s:%d" % (w,freq[w]))
题23
1级
问题:写一个可以计算数字平方值的方法
提示:使用**运算符
def square(num):return num ** 2print(square(2))print(square(3))
题24
1级
问题:Python有许多内置函数,如果您不知道如何使用它,您可以在线阅读文档或查找一些书籍。 但是Python为每个内置函数都有一个内置的文档函数。
请编写一个程序来打印一些Python内置函数文档,例如abs(),int(),raw_input() 并为您自己的功能添加文档
提示:内置文档方法是__doc__
print(abs.__doc__)print(int.__doc__)print(input.__doc__)def square(num):'''Return the square value of the input number.The input number must be integer.'''return num ** 2print(square(2))print(square.__doc__)
题25
1级
问题:定义一个类,它具有类参数并具有相同的实例参数。
提示:定义一个实例参数,需要在__init__方法中添加它。您可以使用构造参数初始化对象,也可以稍后设置该值
class Person:# Define the class parameter "name"name = "Person"def __init__(self, name=None):# self.name is instance parameterself.name = namejeffrey = Person("jeffrey")print("%s name is %s" % (Person.name, jeffrey.name))nico = Person()nico.name = "Nico"print("%s name is %s" % (Person.name, nico.name))
第26题
问题:定义一个可以计算两个数之和的函数。
提示:定义一个带有两个数字作为参数的函数。可以在函数中计算和并返回值。
def SumFunction(number1, number2):return number1+number2print(SumFunction(1,2))
第27题
问题:定义一个可以将整数转换为字符串并在控制台中打印的函数。
提示:使用str()将数字转换为字符串。
def printValue(n):return str(n)print(printValue(3))
第28题
问题:定义一个可以将字符串中的数字进行相加的函数。
提示:使用int()将字符串转换为数字。
def sum_str(str1):len1 = len(str1)sum = n =0for i in range(len1):if 40 <= ord(str1[i]) <= 57: # 判断字符ascii码是否在数字ascii码值的范围内n = int(str1[i]) + nelse:sum = n + sumn = 0sum = n+sumprint(sum)str1 = "b532x2x3c4b5"sum_str(str1)
第29题
问题:定义一个函数,它可以接收两个字符串形式的整数并计算它们的和,然后在控制台中输出。
提示:使用int()将字符串转换为整数。
def sum_str_int(str1,str2):return int(str1)+int(str2)sum = sum_str_int('1','2')print(sum)
第30题
问题:定义一个函数,它可以接受两个字符串作为输入,并将它们连接起来,然后在控制台中输出。
提示:使用+连接字符串
def str_l(str1,str2):return str1+str2s = str_l('sdf','sad')print(s)
第31题
问题:定义一个函数,它可以接受两个字符串作为输入,并在控制台中以最大长度打印字符串。如果两个字符串长度相同,则函数应逐行打印所有字符串。
提示:使用len()函数获取字符串的长度。
def printValue(s1,s2):if len(s1) > len(s2):print(s1)elif len(s1) < len(s2):print(s2)else:print(s1)print(s2)printValue('123','456')
第32题
问题:定义一个函数,它可以接受一个整数作为输入,如果这个数字是偶数,则输出“它是偶数”,否则输出“它是奇数”。
提示:使用%运算符检查一个数字是偶数还是奇数。
def check_nums(n):if n % 2 ==0:print("它是偶数")else:print("它是奇数")check_nums(2)
第33题
问题:定义一个函数,它可以打印一个字典,其中键是1到3之间的数字(包括在内),值是键的平方。
提示:使用dict[key]=value模式将条目放入字典中。使用**运算符得到一个数字的幂。
def create_dic(key):dict = {}for i in range(1,key+1):dict[i] = i**2print(dict)create_dic(3)
第34题
问题:定义一个函数,它可以打印一个字典,其中键是1到20之间的数字(包括在内),值是键的平方。
提示:使用dict[key]=value模式将条目放入字典中。使用**操作符获取\*一个数的幂。对循环使用range()
def create_dic(key):dict = {}for i in range(1,key+1):dict[i] = i**2print(dict)create_dic(20)
第35题
问题:定义一个函数,它可以生成一个字典,其中键是1到20之间的数字(包括在内),值是键的平方。函数只输出值即可。
提示:使用dict[key]=value模式将条目放入字典中。使用**操作符获取一个数的幂。对于循环使用range()。使用keys()迭代字典中的键。我们还可以使用item()来获取键/值对。
def create_dic(key):dict = {}for i in range(1,key+1):dict[i] = i**2for (k,v) in dict.items():print(v)create_dic(20)
第36题
问题:定义一个函数,它可以生成一个字典,其中键是1到20之间的数字(包括在内),值是键的平方。函数只打印键即可;
提示:使用dict[key]=value模式将条目放入字典中。
使用**运算符得到一个数字的幂,对循环使用range(),使用keys()迭代字典中的键,我们还可以使用item()来获取键/值对。
def create_dic(key):dict = {}for i in range(1,key+1):dict[i] = i**2for k in dict.keys():print(k)create_dic(20)
第37题
问题:定义一个函数,它可以生成和打印一个列表,其中的值是1到20之间的数的平方(包括这两个数)。
提示:使用**运算符得到一个数字的幂,对于循环使用range(),使用list.append()向列表中添加值。或者使用列表推导式
def c_list(n):l = [i**2 for i in range(1,n+1)]return lprint(c_list(20))
第38题
问题:定义一个函数,它可以生成一个列表,其中的值是1到20之间的数的平方(包括这两个数),然后函数需要打印列表中的前5个元素。
提示:使用**运算符得到一个数字的幂。对循环使用range(),使用list.append()向列表中添加值,使用[n1:n2]对列表进行切片;或者使用列表推导式
def c_list(n):l = [i**2 for i in range(1,n+1)]return l[0:5]print(c_list(20))
第39题
问题:定义一个函数,它可以生成一个列表,其中的值是1到20之间的数的平方(包括这两个数)。然后函数需要打印列表中的最后5个元素。
提示:使用**运算符得到一个数字的幂。对循环使用range()。使用list.append()向列表中添加值。使用[n1:n2]对列表进行切片。或者使用列表推导式
def c_list(n):l = [i**2 for i in range(1,n+1)]return l[-6:-1]print(c_list(20))
第40题
问题:定义一个函数,它可以生成一个列表,其中的值是1到20之间的数的平方(包括这两个数)。然后,该函数需要打印列表中除前5个元素外的所有值。
提示:使用**运算符得到一个数字的幂。对循环使用range()。使用list.append()向列表中添加值。使用[n1:n2]对列表进行切片;或者使用列表推导式
def c_list(n):l = [i**2 for i in range(1,n+1)]return l[5:]print(c_list(20))
第41题
问题:定义一个函数,它可以生成并打印一个元组,其中的值是1到20之间的数的平方(包括这两个数)。
提示:使用**运算符得到一个数字的幂。对循环使用range()。使用list.append()向列表中添加值。使用tuple()从列表中获取一个元组。
def c_list(n):l = [i**2 for i in range(1,n+1)]return tuple(l)print(c_list(20))
第42题
问题:对于给定的元组(1,2,3,4,5,6,7,8,9,10),编写一个程序,在一行中输出前半部分值,在一行中输出后半部分值。
提示:使用[n1:n2]表示法从元组中获取切片。
t = (1,2,3,4,5,6,7,8,9,10)print(t[0:5])print(t[5:])
第43题
问题:编写程序生成并输出另一个元组,其值是给定元组(1,2,3,4,5,6,7,8,9,10)中的偶数。
提示:使用“for”来迭代元组,使用tuple()从列表中生成一个tuple。
t = (1,2,3,4,5,6,7,8,9,10)l = []for i in t:if i % 2 == 0:l.append(i)print(tuple(l))
第44题
问题:写一个程序,接受一个字符串作为输入,如果字符串是“yes”或“YES”或“Yes”,打印”Yes”,否则打印“No”。
提示:使用if语句判断条件。
s = input()if s == 'yes' or s == 'YES' or s == 'Yes':print("Yes")else:print("No")
第45题
问题:编写一个程序,可以使用过滤函数过滤列表中的偶数。列表是:[1,2,3,4,5,6,7,8,9,10]。
提示:使用filter()过滤列表中的一些元素。使用lambda定义匿名函数。
l = [1,2,3,4,5,6,7,8,9,10]filter_l = filter(lambda x:x%2==0,l)for i in filter_l:print(i)
第46题
问题:编写一个程序,可以使用map()构造一个列表,其中的元素是[1,2,3,4,5,6,7,8,9,10]中元素的平方。
提示:使用map()生成列表。使用lambda定义匿名函数。
l = [1,2,3,4,5,6,7,8,9,10]square_l = map(lambda x:x**2, l)print(square_l)
第47题
问题:编写一个程序,它可以map()和filter()生成一个列表,其中的元素是[1,2,3,4,5,6,7,8,9,10]中的偶数的平方。
提示:使用map()生成列表。使用filter()来过滤列表中的元素。使用lambda定义匿名函数。
li = [1,2,3,4,5,6,7,8,9,10]evenNumbers = map(lambda x: x**2, filter(lambda x: x%2==0, li))print(list(evenNumbers))
第48题
问题:编写一个程序,它可以filter()生成一个列表,其中的元素是1到20之间的偶数(包括两个元素)。
提示:使用filter()来过滤列表中的元素。使用lambda定义匿名函数。
evenNumbers = filter(lambda x: x%2==0, range(1,21))for even in evenNumbers:print(even)
第49题
问题:编写一个程序,它可以使用map()生成一个列表,其中的元素是1到20之间的数的平方(包括两个数)。
提示:使用map()生成列表。使用lambda定义匿名函数。
squaredNumbers = map(lambda x: x**2, range(1,21))print(squaredNumbers)
第50题
问题:定义一个名为American的类,它有一个名为printNationality的静态方法。
提示:使用@staticmethod装饰器来定义类的静态方法。
class American(object):@staticmethoddef printNationality():print("America")anAmerican = American()anAmerican.printNationality()American.printNationality()
第51题
问题:定义一个名为American的类及其子类NewYorker。
提示:使用类子类(ParentClass)来定义子类。
class American(object):passclass NewYorker(American):passanAmerican = American()aNewYorker = NewYorker()print(anAmerican)print(aNewYorker)
第52题
问题:定义一个名为Circle的类,可以用半径来构造。Circle类有一个可以计算面积的方法。
提示:使用def methodName(self)定义一个方法。
class Circle(object):def __init__(self,r):self.r = rdef area(self):return self.r**2*2*3.14aCircle = Circle(2)print(aCircle.area())
第53题
问题:定义一个名为Rectangle的类,它可以由长度和宽度构造。矩形类有一个方法可以计算面积。
提示:使用def methodName(self)定义一个方法。
class Rectangle(object):def __init__(self, l, w):self.l = lself.w = wdef area(self):return self.l * self.waRectangle = Rectangle(20,10)print(aRectangle.area())
第54题
问题:定义一个名为Shape的类及其子类Square。Square类有一个init函数,它以长度作为参数。这两个类都有一个area函数,可以打印形状的区域,形状的区域默认为0。
提示:要覆盖父类中的方法,可以在父类中定义一个同名的方法。
class Shape(object):def __init__(self):passdef area(self):passclass Square(Shape):def __init__(self, l):Shape.__init__(self)self.length = ldef area(self):return self.length * self.lengthaSquare = Square(3)print(aSquare.area())
第55题
问题:请引发RuntimeError异常。
提示:使用raise()引发异常。
raise RuntimeError('something wrong')
第56题
问题:编写一个函数来计算5/0,并使用try/except来捕获异常。
提示:使用try/exexception捕获异常。
def throws():return 5/0try:throws()except ZeroDivisionError:print("division by Zero!")
第57题
!!!
问题:定义一个自定义异常类,它将字符串消息作为属性。
提示:要定义一个自定义异常,我们需要定义一个继承自exception的类
class MyError(Exception):"""My own Exception classAttributes:msg-- explantion of the error"""def __init__(self,msg):self.msg = msgerror = MyError("Something wrong")
第58题
问题:假设我们有一些’username@companyname.com ‘格式的电子邮件地址,请编写程序打印给定电子邮件地址的用户名,用户名和公司名都只由字母组成。
示例:如果下面的电子邮件地址作为程序的输入:john@google.com. 那么,程序的输出应该是:john 在向问题提供输入数据的情况下,应该假定它是控制台输入。
提示:使用\w来匹配字母。
import reemailAddress = input()pat2 = "(\w+)@(\w+\.)+(com)"r2 = re.match(pat2,emailAddress)print(r2.group(1))
第59题
问题:假设我们有一些“username@companyname.com”格式的电子邮件地址,请编写程序打印给定的电子邮件地址的公司名称;用户名和公司名都只由字母组成。
示例:如果下面的电子邮件地址作为程序的输入:john@google.com 那么,程序的输出应该是:google 在向问题提供输入数据的情况下,应该假定它是控制台输入。
提示:使用\w来匹配字母。
import reemailAddress = input()pat2 = "(\w+)@(\w+\.)+(com)"r2 = re.match(pat2,emailAddress)print(r2.group(2))
第60题
问题:编写一个程序,接收一个由空格分隔的单词序列作为输入,打印只由数字组成的单词。
示例:如果下面的单词作为程序的输入:2 cats and 3 dogs; 那么,程序的输出应该是:[‘2’, ‘3’] 在向问题提供输入数据的情况下,应该假定它是控制台输入。
提示:使用re.findall()使用正则表达式查找所有子字符串。
import res = input()print(re.findall("\d+",s))
第61题
问题:打印unicode字符串“hello world”。
提示:使用u’strings’格式来定义unicode字符串;
unicodeString = u"hello world!"print(unicodeString)
第62题
问题:python中的解码与编码;
提示:使用encode()与decode()函数进行转换。
s = '我爱中国'enc = s.encode('utf-8')dec = enc.decode('utf-8')print(enc)print(dec)
第63题
问题:编写一个特殊注释来表明Python源代码文件是unicode格式的。
# -*- coding: utf-8 -*-#----------------------------------------#
第64题
问题:写一个程序来计算1/2+2/3+3/4+…+n/(n+1)。
示例:如果下面的n作为程序的输入:5; 那么,程序的输出应该是:3.55;
提示:使用float()将整数转换为浮点数。
n=int(input())sum=0.0for i in range(1,n+1):sum += float(float(i)/(i+1))print(sum)
第65题
问题:编写程序计算:当n>0和F(0)=1时,F(n)=F(n-1)+100通过控制台输入一个给定的n (n>0)。
示例:如果下面的n作为程序的输入:5, 那么,程序的输出应该是:500;
提示:我们可以在Python中定义递归函数。
def f(n):if n==0:return 0else:return f(n-1)+100n=int(input())print(f(n))
第66题
问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序,在控制台输入给定n的情况下计算f(n)的值。
示例:如果下面的n作为程序的输入:7; 那么,程序的输出应该是:13;
提示:我们可以在Python中定义递归函数。
def f(n):if n == 0: return 0elif n == 1: return 1else: return f(n-1)+f(n-2)n=int(input())print(f(n))
第67题
问题:斐波那契数列的计算公式如下:如果n=0,f(n)=0;如果n=1,f(n)=1;如果n>1,f(n)=f(n-1)+f(n-2);请编写一个程序使用列表理解输出逗号分隔的Fibonacci序列,并通过控制台输入给定的n。
示例:如果下面的n作为程序的输入:7; 那么,程序的输出应该是:0,1,1,2,3,5,8,13;
提示:我们可以在Python中定义递归函数。使用列表理解从现有列表生成列表。使用string.join()连接字符串列表。
def f(n):if n == 0: return 0elif n == 1: return 1else: return f(n-1)+f(n-2)n=int(input())values = [str(f(x)) for x in range(0, n+1)]print(",".join(values))
第68题
问题:请使用generator编写一个程序,当n由控制台输入时,以逗号分隔的形式输出0和n之间的偶数;
示例:如果下面的n作为程序的输入10; 那么,程序的输出应该是:0,2,4,6,8,10
提示:使用yield生成生成器中的下一个值。
def EvenGenerator(n):i=0while i<=n:if i%2==0:yield ii+=1n=int(input())values = []for i in EvenGenerator(n):values.append(str(i))print(",".join(values))
第69题
问题:请编写一个生成器程序,以逗号分隔的形式输出0到n之间可以被5和7整除的数字,而n是通过控制台输入的。
示例:如果下面的n作为程序的输入:100; 那么,程序的输出应该是:0,35,70;
提示:使用yield生成生成器中的下一个值。
def NumGenerator(n):for i in range(n+1):if i%5==0 and i%7==0:yield in=int(input())values = []for i in NumGenerator(n):values.append(str(i))print(",".join(values))
第70题
问题:请写assert语句来验证列表[2,4,6,8]中的每个数字都是偶数。
提示:使用“断言表达式”进行断言。
li = [2,4,6,8]for i in li:assert i%2==0
第71题
问题:请编写一个程序,从控制台接收基本数学表达式,并输出计算结果。
示例:如果下面的字符串作为程序的输入:35 + 3; 那么,程序的输出应该是:38;
提示:使用eval()计算表达式。
expression = input()print(eval(expression))
第72题
问题:请编写一个二分搜索函数,搜索排序列表中的项。函数应该返回要在列表中搜索的元素的索引。
提示:使用if/elif来处理条件。
import mathdef bin_search(l, element):""":param l: 查找序列:param element: 待查找元素:return: 待查找元素的索引值"""bottom = 0top = len(l) - 1index = -1 # 索引为-1即查找的元素不存在while top >= bottom and index == -1:mid = int(math.floor((bottom+top)/2.0)) # 该math.floor()方法将数字向下舍入为最接近的整数,并返回结果。if l[mid] == element:index = midelif l[mid] > element:top = mid - 1else:bottom = mid + 1return "查找元素不存在!" if index == -1 else indexli=[2,5,7,9,11,17,222]print(bin_search(li,11))print(bin_search(li,12))
第73题
问题:随机生成1,100内的一个整数;
提示:random.randint()
import randomrandom.randint(a=1,b=100)
第74题
问题:请使用Python math模块生成一个值在10到100之间的随机浮点数。
提示:使用random.random()在[0,1)中生成一个随机浮点数。乘以100
import randomdef fn39():p=random.random()*100if p>=10 and p<=100:return p
第75题
问题:请使用Python数学模块生成一个随机浮点,其值在5到95之间。
import randomdef fn39_1():p=(random.random()*100)-5if p>=5 and p<=95:return p
第76题
问题:请编写一个程序输出O和10之间的随机偶数使用随机模块和列表理解。
提示:对列表中的随机元素使用random.choice()。
import randomprint(random.choice([i for i in range(11) if i%2==0]))
第77题
问题:请编写一个程序输出一个随机数,它可以被5和7整除,介于0和100之间,包括0和100,使用随机模块和列表理解。
提示:对列表中的随机元素使用random.choice()。
import randomprint(random.choice([i for i in range(101) if i%5==0 and i%7==0]))
第78题
问题:请编写一个程序生成一个包含100到200之间的5个随机数的列表。
提示:使用random.sample()生成一个随机值列表。
import randomprint(random.sample(range(100,201), 5))
第79题
问题:请编写一个程序随机生成一个列表,其中包含100到200之间的5个偶数。
提示:使用random.sample()生成一个随机值列表。
import randomprint(random.sample([i for i in range(100,201) if i%2==0], 5))
第80题
问题:请编写一个程序,随机生成一个列表,从1到1000(含1000),有5个数字,可以被5和7整除。
提示:使用random.sample()生成一个随机值列表。
import randomprint(random.sample([i for i in range(1,1001) if i % 5 == 0 and i % 7 == 0],5))
第81题
问题:请写一个程序来随机打印一个7到15之间的整数(包括15)。
提示:使用random.randrange()到一个给定范围内的随机整数。
import randomprint(random.randrange(7,16))
第82题
问题:请编写一个程序来压缩和解压字符串”hello world!hello world!hello world!hello world!”。
提示:使用zlib.compress()和zlib.decompress()来压缩和解压缩字符串。
import zlibs = b'hello world!hello world!hello world!hello world!'t = zlib.compress(s)print(t)print(zlib.decompress(t))
第83题
问题:请编写一个程序打印100次“1+1”执行的运行时间。
提示:使用timeit()函数测量运行时间。
from timeit import Timert = Timer("for i in range(100):1+1")print(t.timeit())
第84题
问题:请编写一个程序洗牌和打印列表[3,6,7,8]。
提示:使用shuffle()函数洗牌列表。
from random import shuffleli = [3,6,7,8]shuffle(li)print(li)
第85题
问题:请编写一个程序洗牌和打印列表[3,6,7,8]。
提示:使用shuffle()函数洗牌列表。
from random import shuffleli = [3,6,7,8]shuffle(li)print(li)
第86题
问题:请编写一个程序,生成主语在 [“I”, “You”],动词在[“Play”, “Love”]中,对象在[“Hockey”,“Football”]中的所有句子.
提示:使用list[index]表示法从列表中获取元素。
subjects=["I", "You"]verbs=["Play", "Love"]objects=["Hockey","Football"]for i in range(len(subjects)):for j in range(len(verbs)):for k in range(len(objects)):sentence = "%s %s %s." % (subjects[i], verbs[j], objects[k])print(sentence)#也可不用索引# subjects=["I", "You"]# verbs=["Play", "Love"]# objects=["Hockey","Football"]# for i in subjects:# for j in verbs:# for k in objects:# sentence = "%s %s %s." % (i, j, k)# print(sentence)
第87题
问题:请写一个程序打印列表,删除后删除偶数[5,6,77,45,22,12,24]。
li = [5,6,77,45,22,12,24]li = [x for x in li if x%2!=0]print(li)
第88题
问题:使用列表,请编写程序,删除[12,24,35,70,88,120,155]中可被5和7整除的删除数后,打印列表。
li = [12,24,35,70,88,120,155]li = [x for x in li if x%5!=0 and x%7!=0]print(li)
第89题
问题:使用列表推导式,请编写一个程序,去掉[12,24,35,70,88,120,155]中的第0,2,4,6位置上的元素后打印列表。
提示:从列表中删除一组元素。使用enumerate()来获取(索引,值)元组。
li = [12,24,35,70,88,120,155]li = [x for (i,x) in enumerate(li) if i%2!=0]print(li)
第90题
问题:使用列表理解,编写一个程序生成一个358三维数组,每个元素为0。
提示:使用列表理解来创建数组。
import numpy as nparray = [[ [0 for col in range(8)] for col in range(5)] for row in range(3)]print(np.shape(array))
第91题
问题:利用列表理解,请编写一个程序,去掉[12,24,35,70,88,120,155]中的第0,第4,第5个数字后,将列表打印出来。
提示:使用列表理解从列表中删除一组元素。使用enumerate()来获取(index, value)元组。
li = [12,24,35,70,88,120,155]li = [x for (i,x) in enumerate(li) if i not in (0,4,5)]print(li)
第92题
问题:通过使用列表理解,请编写一个程序,在[12,24,35,24,88,120,155]中删除值24后打印列表。
li = [12,24,35,24,88,120,155]li = [i for i in li if i != 24]print(li)
第93题
问题:对于两个已知链表[1,3,6,78,35,55]和[12,24,35,24,88,120,155],编写一个程序来生成一个元素为上述两个链表交集的链表。
提示:使用set()和”&”进行集合相交操作。
l1 = [1,3,6,78,35,55]l2 = [12,24,35,24,88,120,155]l = list(set(l1) & set(l2))print(l)
第94题
问题:对于给定的列表[12,24,35,24,88,120,155,88,120,155],编写一个程序来打印这个列表-删除所有重复的值与原始顺序保留。
提示:使用set()来存储一些没有重复的值。set()集合是无序的,不能直接转哦
def removeDuplicate( li ):newli=[]seen = set()for item in li:if item not in seen:seen.add( item )newli.append(item)return newlili=[12,24,35,24,88,120,155,88,120,155]print(removeDuplicate(li))
第95题
问题:定义一个类Person和它的两个子类:Male和Female。所有的类都有一个方法“getGender”,它可以打印“Male”为男性类,“Female”为女性类。
提示:使用子类(Parentclass)来定义子类。
class Person(object):def getGender(self):return "Unknown"class Male(Person):def getGender(self):return "Male"class Female(Person):def getGender(self):return "FeMale"aMale = Male()aFemale= Female()print(aMale.getGender())print(aFemale.getGender())
第96题
问题:请编写一个程序,计算并打印由控制台输入的字符串中的每个字符的数量。
示例:如果下面的字符串作为程序的输入:abcdefgab; 那么,程序的输出应该是:a,2 c,2 b,2 e,1 d,1 g,1 f,1;
提示:使用dict存储键/值对。使用dict.get()方法查找具有默认值的键。
dic = {}s=input()for s in s:dic[s] = dic.get(s,0)+1print('\n'.join(['%s,%s' % (k, v) for k, v in dic.items()]))
第97题
问题:请编写一个程序,从控制台接收一个字符串,并以相反的顺序打印出来。
示例:如果下面的字符串作为程序的输入:rise to vote sir; 那么,程序的输出应该是:ris etov ot esir;
提示:使用list[::-1]以相反的顺序迭代一个列表。
s=input()s = s[::-1]print(s)
第98题
问题:请编写一个程序,从控制台接收一个字符串,并打印具有偶数索引的字符;
示例:如果下面的字符串作为程序的输入:H1e2l3l4o5w6o7r8l9d 那么,程序的输出应该是:Helloworld;
提示:使用list[::2]来迭代第2步中的列表。
s = input()print(s[::2])
第99题
问题:请写一个程序,打印[1,2,3]的所有排列;
提示:使用itertools.permutations)得到list的排列。
from itertools import permutationsl = [1,2,3]print(list(permutations(l)))
第100题
问题:鸡兔同笼问题,写一个程序来解决一个中国古代的经典难题:我们数农场里的鸡和兔子中有35个头和94条腿。我们有多少只兔子和多少只鸡?
提示:使用for循环来迭代所有可能的解决方案。
def solves(numheads, numlegs):res = "No solutions!"for i in range(numheads+1):j = numheads - iif 2*i+4*j == numlegs:return i, jreturn res, resnumheads=35numlegs=94solutions=solves(numheads,numlegs)print(solutions)