9、下面代码的输出结果是 for i in range(1,6): if i%3 == 0: break else: print(i,end =",") a、1,2, b、1,2,3,4,5,6 c、1,2,3,4,5, d、1,2,3,
10、while true:可以构成一个死循环。请编写程序,利用这个死循环完成如下功能,循环获得用户输入,直至用户输入字符y或y为止,并退出程序。 while true: s=input() if _____________: break
11、若某自然数除它本身之外的所有因子之和等于该数,则称该数为完数。输出1000以内的完数。请完善代码。 for i in range(2,1000): sum=0 for j in range(1,i): if __________: sum=sum j if sum==i: print(i)
12、获得用户输入的一个字符串,统计中文字符的个数。基本中文字符的unicode编码范围是0x4e00~0x9fa5(十六进制数),请完善代码。获取字符的unicode编码值,可通过ord()函数实现。 s=input("请输入:") count=0 for ch in s: if _________________: count =1 print(count)
8、请补充横线处的代码。dictmenu中存放了你的双人下午套餐(包括咖啡2份和点心2份)的价格,让python帮忙计算并输出消费总额。 d= {'cappuccino':32,'mocha':30,'mathca cake':28,'brownie':26} sum=0 for i in ____________: sum = i print(sum)
9、d 是一个字典,内容如下: d = {123:"123", 456:"456", 789:"789"} 请补充如下代码,将字典 d 中所有值以列表形式输出 d = {123:"123", 456:"456", 789:"789"} print(list(________))
10、d 是一字典,内容如下: d = {123:"123", 456:"456", 789:"789"} 请补充如下代码,将字典 d 中所有键以列表形式输出 d = {123:"123", 456:"456", 789:"789"} print(list(_________))
11、列表ls中存储了我国39所985高校所对应的学校类型。请以这个列表未数据变量,完善代码,统计输出各类型的数量。 ls = ["综合", "理工", "综合", "综合", "综合", "综合", "综合", "综合", "综合", "综合",\ "师范", "理工", "综合", "理工", "综合", "综合", "综合", "综合", "综合","理工",\ "理工", "理工", "理工", "师范", "综合", "农林", "理工", "综合", "理工", "理工",\ "理工", "综合", "理工", "综合", "综合", "理工", "农林", "民族", "军事"] d = {} for word in ls: d[word] = d.get(word,0) 1 for k in d: print("{}:{}".format(_________)
12、输出字典fruits中键值最大的键值对,完善代码。 fruits={"apple":10,"mango":12,"durian":20,"banana":5} m="apple" for key in fruits.keys(): if __________: m=key print("{}:{}".format(m,fruits[m]))
第四单元作业
1、用列表的其他方法,解决约瑟夫环问题。
2、设计一个注册登录程序,用字典记录用户名和密码。
第五单元 函数
第五单元测验
1、给出如下代码: def func(a,b): c=a**2 b b=a return c a=10 b=100 c=func(a,b) a 以下选项中描述错误的是 a、执行该函数后,变量c的值为200 b、该函数名称为func c、执行该函数后,变量a的值为10 d、执行该函数后,变量b的值为100
17、如下函数返回两个数的平方和与n的乘积,此处n使用的是全局变量,请补充横线处代码。 n = 2 def psum(a,b): _____________ return (a**2 b**2)*n
18、从键盘输入一个列表,计算输出列表元素的平均值。完善代码。 def mean(numlist): s=0 for num in numlist: s=s num return s/______________ ls=eval(input()) print("平均值为:{}".format(mean(ls)))
19、输入一个自然数n,如果n为奇数,输出表达式1 1/3 ... 1/n的值;如果n为偶数,输出表达式1/2 1/4 ... 1/n的值;输出表达式结果,并保留2位小数。请完善代码。 def f(n): sum=0 if ____________: for i in range(1,n 1,2): sum =1/i else: for i in range(2,n 1,2): sum =1/i return sum n=int(input()) print(f(n))
2、给出如下代码: fname = input("请输入要打开的文件: ") fi = open(fname, "r") for line in fi.readlines(): print(line) fi.close() 以下选项中描述错误的是 a、通过fi.readlines()方法将文件的全部内容读入一个字典 b、上述代码中fi.readlines()可以优化为fi c、用户输入文件路径,以文本文件方式读入文件内容并逐行打印 d、通过fi.readlines()方法将文件的全部内容读入一个列表
3、执行如下代码: fname = input("请输入要写入的文件: ") fo = open(fname, "w ") ls = ["清明时节雨纷纷,","路上行人欲断魂,","借问酒家何处有?","牧童遥指杏花村。"] fo.writelines(ls) fo.seek(0,0) for line in fo: print(line) fo.close() 以下选项中描述错误的是 a、fo.seek(0,0)这行代码可以省略,不影响输出效果 b、代码主要功能为向文件写入一个列表类型,并打印输出结果 c、执行代码时,从键盘输入“清明.txt”,则清明.txt被创建 d、fo.writelines(ls)将元素全为字符串的ls列表写入文件
12、《笑傲江湖》是金庸的重要武侠作品之一。这里给出一个《笑傲江湖》的网络版本,文件名为“笑傲江湖-网络版.txt”。 请完善程序,统计该文件中出现的所有中文字符及标点符号的数量,每个字符及数量之间用冒号:分隔,例如“笑:1024”,将所有字符及数量的对应采用逗号分隔,以csv文件格式保存到“笑傲江湖-字符统计.txt”文件中。注意,统计字符不包括空格和回车。 f1=open("d:\\笑傲江湖-网络版.txt","r",encoding="utf-8") f2=open("d:\\笑傲江湖-字符统计.txt","w",encoding="utf-8") txt=f1.read() d={} for ch in txt: d[ch]=d.get(ch,0) 1 del d["\n"] del d[" "] ls=[] for k in d: ls.append("{}:{}".format(k,d[k])) f2.write(___________________) f1.close() f2.close()
13、使用字典和列表型变量完成某课程的考勤记录统计。某班有74名同学,名单由考生目录下的name.txt给出,某课程第一次考勤数据由考生目录下文件1.csv给出。请求出第一次缺勤同学的名单,完善代码。 f1=open("d:\\1.csv","r",encoding="utf-8") f2=open("d:\\name.txt","r",encoding="utf-8") f1r=f1.readlines() #读取出勤人员名单 ls=[] for line in f1r: line=line.replace("\n","") ls.extend(line.split(",")) print(ls) lsall=[] f2r=f2.readlines() #读取所有同学名单 for line in f2r: line=line.replace("\n","") lsall.append(line) print(lsall) for i in ls: #遍历出勤人员名单列表ls if i in lsall: #若该人员出现在所有人员名单列表lsall中 lsall.____________ #从列表lsall中删除出现在列表ls中的姓名,剩余的lsall就是缺勤人员名单 print("第一次缺勤同学有:",end="") for i in lsall: print(i,end=" ") f1.close() f2.close()
14、从键盘输入一些字符,逐个把它们写到指定的文件,直到输入一个@为止,请完善代码。 例如: 请输入文件名: out.txt 请输入字符串: python is open.@ 执行代码后,out.txt文件内容为: python is open. 参考程序代码如下: filename=input("请输入文件名:") f=open(filename,"w") ch=input("请输入字符串:\n") while true: if '@' in ch: #若当前输入行包含@字符 i=ch.find('@') #获取@字符的下标i s=ch[0:i] #获取当前行中,@符号之前的字符串s ____________ #将字符串s写入文件f break else: f.write(ch " ") #否则,将当前行字符串,加上空格后,写入文件f ch=input() f.close()
15、下面是一个传感器采集数据文件sensor.txt的一部分: 2018-02-28 01:03:16 19 38 45 2.6 2018-02-28 01:06:16 18 35 46 2.5 2018-02-28 01:09:16 17 33 49 2.1 ...... 其中,每行是一个读数,空格分隔多个数据项,分别包括日期、时间、温度、湿度、光照、电压,其中温度处于第3列,列号为2。 完善程序,统计并输出传感器采集数据中温度部分的平均值,保留小数点后2位。 f=open("d:\\sensor.txt","r") ls=[] for line in f: ls.append(line.split(" ")) sum=0 for row in ls: sum=sum _________________ #对温度值求和,注意处理成数值型 print("平均温度值是{:.2f}".format(sum/len(ls))) f.close()
16、《孙子兵法》是我国军事学的重要历史名著,现有"孙子兵法-网络版.txt",对该文件进行清洗,去掉所有带有“ 作者”二字的行;去掉带有形如“【***】”的注释行,在正文中去掉①②③等注释标注,将清洗后的文件输出为"孙子兵法-清洗版.txt"。 f1=open("d:\\孙子兵法-网络版.txt","r",encoding="utf-8") f2=open("d:\\孙子兵法-清洗版.txt","w",encoding="utf-8") for line in f1: if "作者" in line: continue if "【" in line : continue for c in "①②③": line.replace(c,"") f2._____________ #将当前行的字符串,写入文件f2 f1.close() f2.close()
3、执行如下代码: import turtle as t t.circle(40) t.circle(60) t.circle(80) t.done() 在python turtle graphics中,绘制的是 a、同切圆 b、笛卡尔心形 c、太极图 d、同心圆
4、执行如下代码: import turtle as t def drwacctcircle(n): t.penup() t.goto(0,-n) t.pendown() t.circle(n) for i in range(20,80,20): drwacctcircle(i) t.done() 在python turtle graphics中,绘制的是 a、同心圆 b、笛卡尔心形 c、太极图 d、同切圆
10、使用 turtle 库绘制红色五角星图形,效果如下图所示。阅读程序框架,补充横线处代码。 from turtle import * setup(400,400) penup() goto(–100,50) pendown() color("red") begin_fill() for i in range(5): forward(200) _____________ end_fill() hideturtle() done()
11、使用 turtle 库绘制正方形螺旋线,效果如下图所示。阅读程序框架,补充横线处代码。 import turtle n = 10 for i in range(1,10,1): for j in [90,180,270,360]: turtle.seth (j) turtle.fd(_______) n = 5
12、使用 turtle 库绘制同心圆图形,效果如下图所示。阅读程序框架,补充横线处代码。 import turtle as t def drawcctcircle(n): t.penup() t.goto(0,–n) t.pendown() ___________ for i in range(20,100,20): drawcctcircle(i) t.hideturtle() t.done()
14、使用 turtle 库绘制八角星形,效果如下图所示。阅读程序框架,补充横线处代码。 import turtle as t t.colormode(255) t.color(______________) #设置颜色取值为金色(255,215,0) t.begin_fill() for x in range(8): #绘制8条线 t.forward(200) t.left(225) t.end_fill() t.hideturtle() t.done()
15、绘制如图所示的花形图形。假设花瓣圆弧半径为50像素。 import turtle as t for i in range(4): t.right(90) t.circle(__________)
16、绘制如下图的星形图形,假设花瓣半径100像素,效果如下图所示: import turtle as t for i in range(4): t.circle(100,90) t.right(______)
17、绘制图形,最小的圆圈半径为20像素,不同圆圈之间的半径差20像素。效果如下图,完善代码。 import turtle r=20 head=90 for i in range(3): turtle.seth(head) turtle.circle(r) r=r 20 r=20 head=__________ for i in range(3): turtle.seth(head) turtle.circle(r) r=r 20 turtle.done
18、绘制嵌套五边形,边长从1像素开始,从0°方向开始;边长按照3个像素递增,效果如下图,完善代码。 import turtle d=0 k=1 for j in range(10): for i in range(5): turtle.fd(k) __________ turtle.seth(d) k=k 3 turtle.done()
19、编写程序随机产生20个长度不超过3位的数字,让其首尾相连以字符串的形式输出,随机数种子为17。完善代码。 import random random.seed(17) s="" for i in range(20): s=s str(random.___________(0,999)) print(s)
20、随机选择一个饮品,完善代码。 import random ls=['加多宝','雪碧','可乐','椰子汁','果粒橙'] print(random._________)
14、请对《阿甘正传-网络版》进行中文分词,删除单个字符的分词结果,输出排序后的前10的词语。完善代码。 import jieba f=open("阿甘正传-网络版.txt","r",encoding="utf-8") txt=f.read() #读入文本,到字符串txt words=_______________ #对txt进行中文分词,生成词语列表words counts={} #字典,用于统计词频 for word in words: #遍历词语列表words counts[word]=counts.get(word,0) 1 #统计词频到字典counts中 items=list(counts.items()) #将字典转换为列表类型 items.sort(key=lambda x:x[1],reverse=true) #按照词频进行排序 for i in range(10): #输出前10项 word,count=items[i] print("{}:{}".format(word,count)) f.close()
15、这里有一个中文文本片段:"今天北京有个好天气,大家一起去爬山。"该句子分上下两部分,用逗号和句号分隔。请对该句子进行分词,并以8为随机种子,在上下半句,分别重新排列组合词语,并组合输出10种不重复的可能。其中上下半句词语不交叉,每个可能的组合单行输出,存储到“句子组合.txt”文件中。 北京今天有个好天气,一起大家去爬山。 有个好天气今天北京,一起大家爬山去。 (略) import jieba import random f=open("d:\\句子组合.txt","w",encoding="utf-8") random.seed(8) s="今天北京有个好天气,大家一起去爬山。" s=s[:-1] ls=s.split(",") ls1=jieba.lcut(ls[0]) ls2=jieba.lcut(ls[1]) lines=[] #lines列表,存放各语句组合结果 for i in range(10): #循环10次 line="" #初始字符串line为空 random.shuffle(ls1) #打乱第一个语句词语顺序 random.shuffle(ls2) #打乱第地方二个语句词语顺序 for item in ls1: line=line item #形成重新组合的第一个语句 line ="," for item in ls2: line=line item #形成重新组合的第一、二个语句 line ="。" if line in lines: #若重新组合的新语句,已经在语句列表lines中出现 continue #忽略 else: lines.______________ #将该语句添加到列表lines中 f.write("\n".join(lines)) #将结果写入文件 f.close()
16、《射雕英雄传》是金庸的重要武侠作品之一。这里给出一个《射雕英雄传》的网络版本,文件名为“射雕英雄传-网络版.txt”。 请编写程序,统计该文件出现的所有中文词语及出现次数(不要求输出),并输出按照出现次数最多的8个词语,忽略标点符号及单个字符,采用如下方式打印输出。 输出格式 词语1,词语2,词语3,词语4,词语5,词语6,词语7,词语8 import jieba f=open("射雕英雄传-网络版.txt","r",encoding="utf-8") txt=f.read() words=jieba.lcut(txt) counts={} for word in words: if len(word)>1: counts[word]=counts.get(word,0) 1 items=list(counts.items()) items.sort(key=lambda x:x[1],reverse=true) ls=[] for i in range(8): ls.append(_____________) #将前8名的词语,添加到列表ls中 print(",".join(ls)) f.close()
29、给出如下代码 import random num = random.randint(1,10) while true: if num >= 9: break else: num = random.randint(1,10) 以下选项中描述错误的是 a、import random代码是可以省略的 b、while true: 创建了一个永远执行的循环 c、random.randint(1,10) 生成[1,10]之间的整数 d、这段代码的功能是程序自动猜数字
33、给出如下代码 import random as ran listv = [] ran.seed(100) for i in range(10): i = ran.randint(100,999) listv.append(i) 以下选项中能输出随机列表元素最大值的是 a、print(max(listv)) b、print(listv.reverse(i)) c、print(listv.pop(i)) d、print(listv.max())
50、以中国共产党第十九次全国代表大会报告中一句话作为字符串变量s,完善python程序,分别用python内置函数及jieba库中已有函数计算字符串s的中文字符个数及中文词语个数。注意,中文字符包含中文标点符号。(提交的代码应包括题目中给出的部分) import jieba s = "中国特色社会主义进入新时代,我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不平衡不充分的发展之间的矛盾。" n = len(s) m = __________ print("中文字符数为{},中文词语数为{}。".format(n, m))
52、使用 turtle 库的 turtle.fd() 函数和 turtle.seth() 函数绘制一个边长为 200 的正方形,效果如下图所示。请结合格式框架,补充横线处代码。 import turtle d = 0 for i in range(4): turtle.fd(200) d = ____③____ turtle.seth(d)
55、以论语中一句话作为字符串变量s,补充程序,分别输出字符串s中汉字和标点符号的个数。 s = "学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎?" n = 0 # 汉字个数 m = 0 # 标点符号个数 m=s.count(",") s.count("?") n=________-m print("字符数为{},标点符号数为{}。".format(n, m))
56、使用程序计算整数 n 到整数 n 100 之间所有奇数的数值和,不包含 n 100,并将结果输出。整数 n 由用户给出,代码片段如下,补全代码。不判断输入异常。 n = input("请输入一个整数: ") sum=0 for i in range(____________________): if i%2!=0: sum=sum i print(sum)
57、使用 turtle 库的 turtle.fd() 函数和 turtle.left() 函数绘制一个六边形,边长为 200 像素,效果如下图所示。 import turtle for i in range(6): turtle.fd(200) ____________
58、根据输入字符串s,输出一个宽度为15字符,字符串s居中显示,以“=”填充的格式。如果输入字符串超过15个字符,则输出字符串前15个字符。提示代码如下: s = input() print("________________".format(s))
60、使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个等边三角形,边长为200像素,效果如下图所示。请结合程序整体框架,根据提示代码完成程序。 提示代码: import turtle as t for i in range(3): t.seth(____________) t.fd(200)
64、请编写程序,生成随机密码。具体要求如下: (1)使用random库,采用0x1010作为随机数种子。 (2)密码由26个字母大小写、10个数字字符和!@#$%^&*等8个特殊符号组成。 (3)每个密码长度固定为10个字符。 (4)程序运行每次产生10个密码,每个密码一行。 (5)每次产生的10个密码首字符不能一样。 (6)程序运行后产生的密码保存在“随机密码.txt”文件中。 import random f=open("d:\\随机密码.txt","w") random.seed(0x1010) s="abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*" ls=[] lt=[] while len(ls)<10: pwd="" for i in range(10): pwd=pwd _______________________ if pwd[0] not in lt: ls.append(pwd) lt.append(pwd[0]) f.write(pwd "\n") f.close()
65、根据输入正整数n,作为财务数据,输出一个宽度为20字符,n右对齐显示,带千位分隔符的效果,使用减号字符“-”填充。如果输入正整数超过20位,则按照真实长度输出。提示代码如下: n = input() print(" ".format(eval(n)))
66、以123为随机数种子,随机生成10个在1到999(含)之间的随机数,以逗号分隔,打印输出,请补充横线处代码。提示代码如下 import random random.seed(123) for i in range(10): print(________________, end=",")
67、使用turtle库的turtle.right()函数和turtle.fd()函数绘制一个菱形四边形,边长为200像素,效果如下图所示。请勿修改已经给出的第一行代码,并完善程序。绘图时,从菱形的底部顶点开始绘制。 提示代码: import turtle as t t.right(30) for i in range(2): t.left(60) t.fd(200) t.left(____________) t.fd(200)
68、补充完善如下代码,使得程序能够计算a中各元素与b逐项乘积的累加和。 提示代码如下: a = [[1,2,3], [4,5,6], [7,8,9]] b = [3,6,9] s=0 for c in a: for j in range( ): s = c[j]*b[j] print(s)
69、编写程序,从键盘上获得用户连续输入且用逗号分隔的若干个数字(不必以逗号结尾),计算所有输入数字的和并输出,给出代码提示如下。 n = input("") nums =n.split(",") s = 0 for i in nums: s=______________ print(s)
70、编写程序,获得用户输入的数值m和n,求m和n的最大公约数。提示代码如下。 def gcd(a,b): if a > b: a,b = b,a r = 1 while r != 0: r=a%b a = b b = r return a m = eval(input("")) n = eval(input("")) print(_____________)
71、jieba是一个中文分词库,一些句子可能存在多种分词结果,请补充横线处代码,产生字符串s可能的所有分词结果列表,提示代码如下。 import jieba s = "世界冠军运动员的乒乓球拍卖完了" ls = jieba.lcut(_________________) print(ls)
72、一个列表 使用turtle库的turtle.circle()函数、turtle.seth()函数和turtle.left()函数绘制一个四瓣花图形,效果如下图所示。请结合程序整体框架,补充横线处代码。 import turtle as t for i in range(4): t.seth(____________) t.circle(200, 90) t.left(90) t.circle(200, 90)
73、编写程序,实现将列表ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]中的素数去除,并输出去除素数后列表ls的元素个数。请结合程序整体框架,补充横线处代码。 def is_prime(n): #判别是否是素数 for i in range(2,n): if n%i==0: return false return true ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] k=len(ls)-1 while true: if is_prime(ls[k])==true: ls.remove( ) if k==0: break k=k-1 print(len(ls))