《2022年python练习题-答案 .pdf》由会员分享,可在线阅读,更多相关《2022年python练习题-答案 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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、, 2 , 3 )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 f
3、or i in range(10))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(r
4、ange(1,10,3) 执行结果为 _。 (1, 4, 7 )18.切片操作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) 的值为 _。 (
5、3)24.表达式min(11, 2, 3) 的值为 _。 (11)25.已知列表对象x = 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整 除 的 数 的 代 码 可 以 写 作_ 。
6、 (i for i in range(100) if i%13=0)31.表达式3 * 2 的值为 _。 (9)32.表达式3 * 2 的值为 _。 ( 6)33.已知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
7、) k=k/2 3.写出下面代码的运行结果。def Sum(a, b=3, c=5): return sum(a, b, c) print(Sum(a=8, c=2) print(Sum(8) print(Sum(8,2) 答:13 16 15 4.写出下列程序输出结果i=1 while i+1: if i4: print(%d%i) i+=1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 精品文档. break print
8、(%d%i) i+=1 i+=1 5.写出下面代码的运行结果。def Sum(*p): return sum(p) print(Sum(3, 5, 8) print(Sum(8) print(Sum(8, 2, 10) 答:16 8 20 6.下面程序的执行结果是_。 (1)s = 0 for i in range(1,101): s += i else: print(1) 7.下面程序的执行结果是_。 (1275)s = 0 for i in range(1,101): s += i if i = 50: print(s) break else: print(1) 8.阅读下面的代码,输出结
9、果为_。x = list(range(10) for index, value in enumerate(x): if value = 3: xindex = 5 else: print(x) 答:将列表x 中值为 3 的元素修改为5。9.阅读下面的代码,解释其功能: import string x = string.ascii_letters + string.digits import random print(.join(random.sample(x, 10) 答:输出由英文字母大小写或数字组成的长度为10 且不重复的随机字符串。10.下面的代码输出结果为_。 (3)def demo(
10、): x = 5 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 精品文档. x = 3 demo() 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 lov
11、e I def rev1(s): s=s.split() s1= .join(reversed(s)return s1 19.阅读程序,打印结果是1000 def addInterest(balance,rate): newBalance=balance*(1+rate) balance=newBalance def main(): amount=1000 rate=0.05 addInterest(amount,rate) print (amount) main() 20.阅读程序,打印结果是def demo(newitem,old_list=): old_list.append(newit
12、em) return old_list def main(): print(demo(a ) print(demo(b ) main() 答案: a a, b 21.阅读程序,打印结果是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 fo
13、r i in para if iavg return (avg,)+tuple(g) print(demo(1,2,3,4) 23.阅读程序,打印结果是def f(w=1,h=2): print(w,h) f() f(w=3) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 精品文档. f(h=7) f(a=3) 答案: 1 2 3 2 1 7 错误24.阅读程序,打印结果是def sort(number1,number2):
14、 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 random x = random._(1,20) for i in range(_) r = dict() for i in x: ri = r.get(i, _)+1 for k, v in r.items(): print(k, v) 答:分别填写 r
15、andint、50、0 2.生成包含1000 个随机字符的字符串,然后统计前20 个高频字符, 最后以 15 个位左对齐输出高频字符,以5 个位右对齐输出个数。请把缺少的代码补全。import random x = string.ascii_letters + string.digits + string.punctuation y = for i in range(1000) d = dict() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - -
16、 - - - - - 精品文档. 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): pr
17、int( ,end= )for j in range(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 += 1 5.验证哥德巴赫猜想:一个大于等于6 的偶数可以表示为两个素数之和
18、,请补全代码。import math x=eval(input( “ 输入一个数 ” ) 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: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
19、 - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 精品文档. else: print(x, = ,n1,+ ,n2) 答案: range(3,x/2,2),n1%i=0, n2=x-n1, break 6.右对齐九九乘法表,请补全代码:for i in 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
20、( * *(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=0 high= while lowhigh: if : #倒序和顺序不一样print(s, 不是回文 ) low +=1 else: print(s, 是回文串 ) 答案: len(s)-1,slow!=shigh ,break,high -=1 ;9.输出右边图形,请补充程序:s=I am a teacher! You are stud
21、ents! print(=*30) print( 统计信息 .center(28) print( ) item_width=25 line=s.count(n)+1 word=s.split() char=list(s) #包含空格、标点符号w_num=0 for w in word: w_num+= print(%-*s %5d%(item_width-3,行数 ,line) print(%-*s %5d%( ,单词数 ,len(word) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
22、- 第 8 页,共 14 页 - - - - - - - - - 精品文档. 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( ) lin
23、e = 1+r+1 print(line) demo( ) 答案: print(1,1) ,r = ,linej+linej+1,10 四、编程题1.编写程序,在D 盘根目录下创建一个文本文件test.txt,并向其中写入字符串hello world 。答:fp = open(r D:test.txt , a+ ) print( hello world , file=fp) fp.close() 2.编写程序,生成一个包含20 个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。 (提示:使用切片。 )答:import random x = random.randint
24、(0,100) for i in range(20) print(x) y = x:2 y.sort(reverse=True) x:2 = y print(x) 3.编写函数,判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO。再编写测试函数。答:import math def IsPrime(v): n = int(math.sqrt(v)+1) for i in range(2,n): if v%i=0: return No else: return Yes print(IsPrime(77) 11, 11, 2, 11, 3, 3, 11, 4, 6, 4, 11, 5,
25、 10, 10, 5, 11, 6, 15, 20, 15, 6, 11, 7, 21, 35, 35, 21, 7, 11, 8, 28, 56, 70, 56, 28, 8, 11, 9, 36, 84, 126, 126, 84, 36, 9, 1名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 精品文档. 4.编写函数,模拟Python 内置函数sorted(lst)。答:def sorted(v): t = v: r
26、= while t: tt = min(t) r.append(tt) t.remove(tt) return r print(sorted(1,3,2,4) 5.编写程序, 生成包含20 个随机数的列表, 然后将前10 个元素升序排列, 后 10 个元素降序排列,并输出结果。答:import random x = random.randint(0,100) for i in range(20) print(x) y = x0:10 y.sort() x0:10 = y y = x10:20 y.sort(reverse=True) x10:20 = y print(x) 6.编写程序,运行后
27、用户输入4 位整数作为年份,判断其是否为闰年。如果年份能被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=
28、x5: print(x) elif 5=x10: print(3*x-5) elif 10=x20: print(0.5*x-2) x y x0 0 0=x5 x 5=x10 3x-5 10=x20 0.5x-2 20=x 0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - 精品文档. 8.已知有一个包含一些同学成绩的字典,计算成绩的最高分、最低分、平均分,并查找最高分同学,最后打印最高分、最低分、平均分、最高分同学。sco
29、res = 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: 60 highest = max(scores.values() lowest = min(scores.values() average = sum(scores.values()/len(scores) highestPerson = name for name, score in scores.items() if / score = highe
30、st # 分行print(highest,lowest,average,highestPerson) 9.统计不及格的学生及成绩,要求:给定一些学生姓名和成绩;询问用户是否还需要输入更多的学生姓名和成绩,用户回答是就继续输入,继续询问;打印所有补考学生名单和成绩。d= 张三,76, 李四 ,45, 王五 ,83, 郑六 ,66,a,54,c,68,b,89 s1=input( 输入数据Y or N:).strip()# 去掉前后空格while s1 = Y: s2=input(请输入学生及成绩(空格隔开)) name,grade=s2.split() d.append(name,grade)
31、#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(”请输入数字个数:” )for i in range(n): number=eval(input(”请输入数字:” )lst.append(number) for value in lst: p
32、rint(value,end= )11.序列求和, n 通过用户输入: n=int(input( “ 请输入 N 的值 : ” ) s=0 fh=1 for 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.randint(1,100) for i in range(50) print(50 个随机两位整数:,lst) k=len(lst)-1 nn1)1(.4
33、1312111名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 精品文档. for i in range(k,-1,-1):# 从后往前删,减少列表元素移动if lsti % 2=1: lst.pop(i) print( 偶数为 ,lst) 13.恺撒( kaisa)密码:原文:ABCDEFGHIJKLMNOPQRSTUVWXYZ,对应的密文为:DEFGHIJKLMNOPQRSTUVWXYZABC,请设计程序实现之。plain
34、code=input( 请输入明文: ) for p in plaincode: if a=p=z: c=chr(ord(a)+(ord(p)-ord(a)+3)%26) #ord 是字符编码的值,都减掉ord(A) 才可以得到字符的顺序0-25 print(c,end=) elif A=p=Z : c=chr(ord(A)+(ord(p)-ord(A)+3)%26) print(c,end=) else: print(p,end=) 14.如果一个字符串从前往后和从后往前读时是一样的,那么这个字符串就是回文串。请编写一个函数判断是否为回文串,同时编写测试代码检验回文串。def isPalin
35、drome(s) if s=s:-1: #切片操作,倒序和顺序一样return True else: return False s=input(input a string:) if isPalindrome(s): print( %s is a palindrome! %s)else: print( %s is not a palindrome! %s)15.输入一串字符,统计每个字符数,用字典输出. s=input( 输入一行字符串或句子:) char_counts= for char in s: char_countschar= char_counts.get(char,0)+1 pri
36、nt(char_counts) 16.生成包含100 个随机字符的字符串,然后统计前20 个高频字符 . import string,random str1=string.ascii_letters +string.digits str1=str1.lower() str2=random.choice (str1) for i in range(100) print(str2) str_count= for char in str2: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
37、12 页,共 14 页 - - - - - - - - - 精品文档. str_countchar=str_count.get(char,0)+1 print(str_count) items=list(str_count.items() items.sort(key=lambda x:x1,reverse=True) #以数量降序for i in range(20): word,count = itemsi print(%-15s %5d%(word,count) #-表示左对齐, s 表字符, d 表示整数17.统计 ” HarryPotterSorcerStone.txt”文件中的英文单
38、词及其数量,打印出单词及其个数filename =rHarryPotterSorcerStone.txt infile = open(filename, r) # Open the file txt=infile.read() words=txt.split() #以空格分割单词words_counts= for word in words: words_countsword=words_counts.get(word,0)+1 print(words_counts) 18.读取文本文件data.txt 中所有整数,将其排序后写入文本文件data_asc.txt 中. with open(da
39、ta.txt,r) as fp: data=fp.readlines() #文件全部读完返回字符列表print(字符列表 ,data)data=int(line.strip() for line in data #列表的数据变成整数data.sort() n for i in data #数字后加换行符with open( data_asc.txt ,w) as fp:fp.writelines(data) # 一次全部写入19.编程,如图,在文件score.txt 中写入五名学生的姓名、学号和3 门考试课的成绩,然后将所有两门以上(含两门)课程不及格的学生信息输出到文件bad.txt、其他学
40、生信息输出到pass.txt。fw=open(rscore2.txt,w) s=张三 , 2017010101, 66, 77, 88,n fw.writelines(s) fw.write( 李四 , 2017010102, 60, 70, 80n) fw.write( 王五 , 2017010103, 64, 73, 82n) fw.write( 赵六 , 2017010104, 56, 67, 48n) fw.write( 钱七 , 2017010105, 46, 57, 68n) fw.close() f1=open(rscore2.txt,r) f2=open(rbad2.txt,w
41、) f3=open(rpass2.txt,w) lines=f1.readlines() for line in lines: data=list(line.split(,) print(data)# 张三 , 2017010101, 66, 77, 88n k=0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 精品文档. for i in data2: if int(i)=2: #两门以上(含两门)课程不及格f2.write(line) else: f3.write(line) f1.close();f2.close();f3.close() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -