1、资料收集于网络,如有侵权请联系网站删除Python练习题库By 郑红波 2017-12-19一、 填空题1. Python标准库math中用来计算平方根的函数是_。(sqrt)2. 在Python中_表示空类型。(None)3. 列表、元组、字符串是Python的_(有序?无序)序列。(有序)4. 查看变量类型的Python内置函数是_。(type())5. 查看变量内存地址的Python内置函数是_。(id())6. 表达式1, 2, 3*3的执行结果为_。(1, 2, 3, 1, 2, 3, 1, 2, 3)7. list(map(str, 1, 2, 3)的执行结果为_。(1, 2, 3
2、)8. 已知 x = 3,并且id(x)的返回值为 496103280,那么执行语句 x += 6 之后,表达式 id(x) = 496103280 的值为_。(False)9. 已知 x = 3,那么执行语句 x *= 6 之后,x的值为_。(18)10. 表达式“3 in 1, 2, 3, 4”的值为_。(False)11. 假设列表对象aList的值为3, 4, 5, 6, 7, 9, 11, 13, 15, 17,那么切片aList3:7得到的值是_。(6, 7, 9, 11)12. 使用列表推导式生成包含10个数字5的列表,语句可以写为_。(5 for i in range(10))
3、13. 假设有列表a = name, age, sex和b = Dong, 38, Male,请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为_。(c = dict(zip(a, b))14. 任意长度的Python列表、元组和字符串中最后一个元素的下标为_。(-1)15. Python语句.join(list(hello world!)执行的结果是_。(hello world!)16. 转义字符n的含义是_。(回车换行)17. Python语句list(range(1,10,3)执行结果为_。(1, 4, 7)18. 切片操
4、作list(range(6):2执行结果为_。(0, 2, 4)19. 表达式 ab in acbed 的值为_。(False)20. Python 3.x语句 print(1, 2, 3, sep=:) 的输出结果为_。(1:2:3)21. 表达式 int(4*0.5) 的值为_。(2)22. 达式 sorted(111, 2, 33, key=lambda x: -len(str(x) 的值为_。(111, 33, 2)23. 已知列表对象x = 11, 2, 3,则表达式 max(x) 的值为_。(3)24. 表达式 min(11, 2, 3) 的值为_。(11)25. 已知列表对象x
5、= 11, 2, 3,则表达式max(x, key=len) 的值为_。(11)26. 语句 x = (3,) 执行后x的值为_。((3,))27. 语句 x = (3) 执行后x的值为_。(3)28. 已知 x = 1:2,那么执行语句 x2 = 3之后,x的值为_。(1: 2, 2: 3)29. 字典对象的_方法返回字典中的“键-值对”列表。(items())30. 使用列表推导式得到100以内所有能被13整除的数的代码可以写作_。(i for i in range(100) if i%13=0)31. 表达式 3 * 2 的值为_。(9)32. 表达式 3 * 2的值为_。(6)33.
6、已知 x = 3, 5, 7,那么执行语句 xlen(x): = 1, 2之后,x的值为_。(3, 5, 7, 1, 2)34. 表达式 list(zip(1,2, 3,4) 的值为_。((1, 3), (2, 4))35. 已知 x = 1, 2, 3, 2, 3,执行语句 x.pop() 之后,x的值为_。(1, 2, 3, 2)36. 表达式 x for x in 1,2,3,4,5 if x1: print(k) k=k/23. 写出下面代码的运行结果。def Sum(a, b=3, c=5): return sum(a, b, c)print(Sum(a=8, c=2)print(S
7、um(8)print(Sum(8,2)答:1316154. 写出下列程序输出结果i=1while i+1:if i4:print(%d%i)i+=1breakprint(%d%i)i+=1i+=15. 写出下面代码的运行结果。def Sum(*p): return sum(p)print(Sum(3, 5, 8)print(Sum(8)print(Sum(8, 2, 10)答:168206. 下面程序的执行结果是_。(1)s = 0for i in range(1,101): s += ielse:print(1)7. 下面程序的执行结果是_。(1275)s = 0for i in range
8、(1,101): s += i if i = 50: print(s) breakelse: print(1)8. 阅读下面的代码,输出结果为_。x = list(range(10)for index, value in enumerate(x): if value = 3: xindex = 5else: print(x)答:将列表x中值为3的元素修改为5。9. 阅读下面的代码,解释其功能: import string x = string.ascii_letters + string.digits import random print(.join(random.sample(x, 10)
9、答:输出由英文字母大小写或数字组成的长度为10且不重复的随机字符串。10. 下面的代码输出结果为_。(3)def demo(): x = 5x = 3demo()print(x)11. 下面程序运行的结果为_。(5, 6, 1, 2, 3, 4)def demo(lst, k):if k 25 and subject=电子信息工程) or (college=重点 and subject=电子信息工程 ) or (agerev(I love you)返回值为 you love I def rev1(s): s=s.split() s1= .join(reversed(s)return s119.
10、 阅读程序,打印结果是 1000 def addInterest(balance,rate): newBalance=balance*(1+rate) balance=newBalancedef main(): amount=1000 rate=0.05 addInterest(amount,rate) print (amount)main()20. 阅读程序,打印结果是 def demo(newitem,old_list=): old_list.append(newitem) return old_listdef main(): print(demo(a) print(demo(b) mai
11、n()答案:aa, b21. 阅读程序,打印结果是 def func5(a, b, *c): print(a,b) print(length of c is %d, c is %len(c),c)func5(1,2,3,4,5,6)答案:1 2 length of c is 4,c is (3, 4, 5, 6)22. 阅读程序,打印结果是 (2.5, 3, 4) def demo(*para): avg = sum(para)/len(para) g = i for i in para if iavg return (avg,)+tuple(g)print(demo(1,2,3,4)23.
12、阅读程序,打印结果是 def f(w=1,h=2): print(w,h) f()f(w=3)f(h=7)f(a=3)答案:1 2 3 2 1 7 错误24. 阅读程序,打印结果是 def sort(number1,number2):if number1n: m, n = n, m p = m*n while m!=0: r = n%m n = m m = r return (n,p/n) print( demo(20, 30)三、 程序填空题1. 下面代码的功能是,随机生成50个介于1,20之间的整数,然后统计每个整数出现频率。请把缺少的代码补全。import randomx = rando
13、m._(1,20) for i in range(_)r = dict()for i in x: ri = r.get(i, _)+1for k, v in r.items():print(k, v)答:分别填写randint、50、02. 生成包含1000个随机字符的字符串,然后统计前20个高频字符,最后以15个位左对齐输出高频字符,以5个位右对齐输出个数。请把缺少的代码补全。import random x = string.ascii_letters + string.digits + string.punctuationy = for i in range(1000)d = dict()
14、for ch in y: dch = d.get(ch, 0) + 1 items=list(d.items() items.sort( ,reverse=True) for i in range(20): word,count = itemsi print( %(word,count) 答案:import string 、 random.choice(x) 、key= lambda x:x1、“%-15s%5d”3. 用户输入5,打印如右图字符金字塔图形,请补全代码:n=input(输入行数:) for i in range(1,n+1): print( ,end= ) for j in r
15、ange(1,2*i): print(&, ) print()答案:n=int(n), *(n-i),end=4. 质因数分解,如输入60,则得到60 = 2 * 2 * 3 * 5. 请补全代码:x=eval(input(请输入小于1000的整数:)k=2 while x1: if : print(k,end= ) x = x/k if x 1: print(*,end= ) else: 答案:print(x,=,end= ),x % k=0 ,k += 15. 验证哥德巴赫猜想:一个大于等于6的偶数可以表示为两个素数之和,请补全代码。import mathx=eval(input(“输入一
16、个数”)while x6 or x%2=1: #大于6的偶数 x=eval(input(“输入一个数”)for n1 in : m1=int(math.sqrt(n1)+1) for i in range(2,m1): #2-sqrt(n1) if : break else: m2=math.ceil(math.sqrt(n2)+1) for j in range(2,m2): if n2%j=0 and jn2: else: print(x,=,n1,+,n2)答案:range(3,x/2,2),n1%i=0, n2=x-n1, break6. 右对齐九九乘法表,请补全代码:for i in
17、 range(1,10): s1=str(i)+str(j)+=+str(i*j) print( ) print() 答案:for j in range(1,i+1):,%8s%(s1),end=7. 输出右边图形,请补充程序:for i : print( *(2*i-1).center(30) for i in range(6, 0, -1): print( )答案:in range(6);( *(2*i-1).center(5*n)8. 下面代码判断回文串,请补全代码:s=雾锁山头山锁雾low=0high= while lowhigh: if : #倒序和顺序不一样 print(s,不是回
18、文) low +=1 else: print(s,是回文串)答案:len(s)-1,slow!=shigh,break,high -=1;9. 输出右边图形,请补充程序:s=I am a teacher! You are students!print(=*30)print(统计信息.center(28)print( )item_width=25line=s.count(n)+1word=s.split() char=list(s) #包含空格、标点符号w_num=0for w in word: w_num+= print(%-*s %5d%(item_width-3,行数,line)print
19、(%-*s %5d%( ,单词数,len(word)print(%-*s %5d%(item_width-10,字符数(包含空格), )print(%-*s %5d%(item_width-11,字符数(不包含空格),w_num)print(-*30)答案:-*30;len(w);item_width-4;len(char)10. 输出右边图形,请补充程序:def demo(t): print(1) line = 1,1 for i in range(2,t): for j in range(0,len(line)-1): r.append( ) line = 1+r+1 print(line
20、)demo( )答案:print(1,1),r = ,linej+linej+1,10四、 编程题1. 编写程序,在D盘根目录下创建一个文本文件test.txt,并向其中写入字符串hello world。答:fp = open(rD:test.txt, a+)print(hello world, file=fp)fp.close()2. 编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)答:import randomx = random.randint(0,100) for i in range(20)print(x)y
21、= x:2y.sort(reverse=True)x:2 = yprint(x)3. 编写函数,判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO。再编写测试函数。答:import mathdef IsPrime(v): n = int(math.sqrt(v)+1) for i in range(2,n): if v%i=0: return No else: return Yesprint(IsPrime(77)4. 编写函数,模拟Python内置函数sorted(lst)。答:def sorted(v): t = v: r = while t: tt = min(t) r.a
22、ppend(tt) t.remove(tt)return rprint(sorted(1,3,2,4)5. 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。答:import randomx = random.randint(0,100) for i in range(20)print(x)y = x0:10y.sort()x0:10 = yy = x10:20y.sort(reverse=True)x10:20 = yxyx000=x5x5=x103x-510=x200.5x-220=x0print(x)6. 编写程序,运行后用户输入4位整数
23、作为年份,判断其是否为闰年。如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。答:x = input(Please input an integer of 4 digits meaning the year:)x = eval(x)if x%400=0 or (x%4=0 and not x%100=0): print(Yes)else: print(No)7. 编写程序,实现分段函数计算,如下表所示。答:x = input(Please input x:)x = eval(x)if x=20: print(0)elif 0=x5: print(x)elif 5=
24、x10: print(3*x-5)elif 10=x20:print(0.5*x-2)8. 已知有一个包含一些同学成绩的字典,计算成绩的最高分、最低分、平均分,并查找最高分同学,最后打印最高分、最低分、平均分、最高分同学。scores = Zhang San: 45, Li Si: 78, Wang Wu: 40, Zhou Liu: 96, Zhao Qi: 65, Sun Ba: 90, Zheng Jiu: 78, Wu Shi: 99, Dong Shiyi: 60highest = max(scores.values()lowest = min(scores.values()aver
25、age = sum(scores.values()/len(scores) highestPerson = name for name, score in scores.items() if / score = highest #分行print(highest,lowest,average,highestPerson)9. 统计不及格的学生及成绩,要求:给定一些学生姓名和成绩;询问用户是否还需要输入更多的学生姓名和成绩,用户回答是就继续输入,继续询问;打印所有补考学生名单和成绩。d=张三,76,李四,45,王五,83,郑六,66,a,54,c,68,b,89s1=input(输入数据Y or
26、N:).strip()#去掉前后空格while s1 = Y: s2=input(请输入学生及成绩(空格隔开)) name,grade=s2.split() d.append(name,grade) #dname=int(grade) s1=input(继续输入Y or N:).strip()else: print(d) print(不及格的名单:)for name,grade in d: if float(grade) 60: print(姓名:,name,t,成绩:,grade)10. 由用户一个一个输入一个数值型列表,然后将每个元素逐一打印。lst=n=eval(input(”请输入数字
27、个数:”)for i in range(n): number=eval(input(”请输入数字:”) lst.append(number)for value in lst: print(value,end= )11. 序列求和,n通过用户输入:n=int(input(“请输入N的值:”)s=0fh=1for i in range(1,n+1): s +=fh*1/i # 求和语句 fh=-fh #正负交替print(1-1/2+1/3-1/4.+(-1)(n-1)/n=,s,i)12. 生成一个包含50个两位随机整数的列表,然后删除其中的所有奇数(提示从后向前删)lst=random.ran
28、dint(1,100) for i in range(50)print(50个随机两位整数:,lst)k=len(lst)-1for i in range(k,-1,-1):#从后往前删,减少列表元素移动 if lsti % 2=1: lst.pop(i)print(偶数为,lst)13. 恺撒(kaisa)密码:原文:ABCDEFGHIJKLMNOPQRSTUVWXYZ,对应的密文为:DEFGHIJKLMNOPQRSTUVWXYZABC,请设计程序实现之。 plaincode=input(请输入明文:) for p in plaincode: if a=p=z: c=chr(ord(a)+(ord(p)-or