




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Python习题选编华东师大信息学院计算中心.程序结构与算法部分:1.编写一个python程序,输入两个数,比较它们的大小并输出其中较大者。参考代码:X = in t(i npu t( PI ease en ter first in teger:) y = in t(i npu t( PI ease en ter sec ond in teger:) if (x = y):prin t(两数相同!elif (X y):prin t(较大数为:else:prin t(较大数为:),X),y);参考代码:2.写一个算法(流程图和 python程序):输入三个数,输出其最大者。a,b,c=3,4,5
2、if a = b:if c b:print (b是最大的数) else:print (c是最大的数)else:if c 100:grade =输入错误! ”elif score = 90:grade = Aelif score = 80:grade = Belif score = 70: grade = C elif score = 60:grade = Delif score = 0:grade = Eelse:grade =输入错误!”prin t(grade)7. 猜数游戏。预设一个0-9之间的整数,让用户猜一猜并输入所猜的数,如果 大于预设的数,显示“太大”;小于预设的数,显示“太小”
3、,如此循环,直 至猜中该数,显示“恭喜!你猜中了! ”。参考答案:num=7while True:guess=int(input(请输入你猜的数(09):) if guess = num:)print(恭喜!你猜中了!break;elif guess num:prin t(太大)else:prin t(太小)8. 输入一个数,判断这个数是否为素数,并输出判断结果。(所谓素数,是指除了 1和该数本身之外,不能被其它任何整数整除的数。下图为参考流程图)import mathn=int(input(请输入一个数:) x=i nt(math.sqrt( n)i,w=2,0for i in range
4、(2,x+1):if n%i=0:w=1if w=1:prin t( n,不是素数。) else:print(n,是素数。)或import mathn=i nt(i np ut(请输入一个数:) i,w=2,0while i = in t(math.sqrt( n) and w=0: if n%i = 0:w = 1breakelse:i = i+1if w=0:print(n,是素数!) else:print(n,不是素数!) import mathn=i nt(i np ut(请输入一个数:)i=2while i = 60:second = second-60minute += 1minu
5、 te+=5 if minute = 60:minute = minu te-60hour += 1 if hour = 24:hour = 0prin t(%d:%d:%d%(hour,mi nu te,seco nd)10. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程,找出1000之内的所有完 数,并输出该完数及对应的因子。(枚举法)参考答案: m=1000for a in ran ge(2,m+1):s=aL1=for i in ran ge(1,a):if a%i=0:s-=iL1.a ppen d(i)if
6、s=0:print(完数:d,因子包括:%a,end=) for j in ran ge(1,le n( L1):prin t(%d%L1j,e nd=,)prin t(n)11. 编程,解决猴子吃桃冋题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将 剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到 第10天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。(迭代法)参考答案:day=9x=1while day0: x=(x+1)*2 day-=1 prin t(total=,x).输入输出与文件部分:1.编写一个python
7、程序,输入两个数,输出两数之和。参考代码:x = in t(i npu t( PI ease en ter first in teger:)y = in t(i npu t( PI ease en ter sec ond in teger:)prin t(The sum is:);prin t(x+y);2.在当前目录下有一个文件名为temp .txt的文件,存放着上海从2014年3月 10日(周一)到3月16日(周日)间一周的最高和最低气温(单位为摄氏度)。 其中,第一行为最高气温,第二行为最低气温。编程,找出这一周中第几天最 热(按最高气温计算)?最高多少度?这一周中第几天最冷(按最低气温
8、计算)? 最冷多少度?参考答案:fin ame=tem p. txt f=open(fln ame) ht=(f.readli ne().stri p() L1=list(ht.s plit(,) lt=(f.readli ne().stn p() L2=list(lt.s plit(,) f.close() for i in ran ge(le n( L1):L1i=i nt(L1i)L2i=i nt(L2i) maxVal=L10 maxDay=0 mi nVal=L20 min Day=0 for i in ran ge(1,le n(L1):if L1imaxVal:maxVal=L1
9、i maxDay=iif L2i=10: k+=1 else: k=0 avg=in t(sum/le n( L3) print(周平均气温为:,avg) if k=5:)print(上海这周已入春。else:print(上海这周未入春。)4. 当前目录下有一个文件名为score1.txt的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。请根据平时成绩占40%期末成绩占60%勺比例计算总评成绩(取整数),并分学号、总评成绩两列写入另 一文件score2.txt 。同时在屏幕上输出学生总人数,按总评成绩计90以上、80 89、7079、6069、60分以下各成绩档的人数
10、和班级总平均分(取整数)。 参考答案:f=open (score1.txt)a=f.readli ne()lin e=(f.readli ne().stri p()f2=o pen (score2.txt,w)f2.write(学号 平均成绩n);L2=0,0,0,0,0coun t=0sum=0while (le n(line) != 0):#prin t(l ine)L1=li ne.s plit()f2.write(L10+)f_score=i nt(i nt(L11)*0.4+i nt(L12)*0.6)if 90f_score=80:L21+=1elif f_score=70:L22
11、+=1elif f_score=60:L23+=1else:L24+=1coun t+=1sum+=f_scoref2.write(str(f_score)+n)23li ne=(f.readli ne().stri p()f.close()f2.close()avg_score=in t(sum/co unt)print(学生总人数为 %d,按总评成绩计,90以上%d人、6069 间 %d 人、60 分以下 %d 人。%(cou nt,L20,L21,L22,L23,L24,avg_score)8089间%d人、班级总平均7079间%d人、分为d 分。f=open (score1.txt)a
12、=f.readli nes()del a0L3=for line in a:li ne=li ne.stri p()L1=li ne.s plit()f_score=i nt(i nt(L11)*0.4+i nt(L12)*0.6)L3.a ppen d(L10,f_score)f.close()c=0,0,0,0,0coun t=0sum=0f2=o pen (score2.txt,w) f2.write(学号 平均成绩n); for L2 in L3:if 90L21=80:c1+=1elif L21=70:c2+=1elif L21=60:c3+=1else:c4+=1coun t+=1
13、sum+=L21f2.write(L20+ +str(L21)+n)f2.close()avg_score=in t(sum/co unt)print(学生总人数为 %d,按总评成绩计,90以上%d人、6069 间 %d 人、60 分以下 %d 人。%(cou nt,c0,c1,c2,c3,c4,avg_score)8089间%d人、班级总平均7079间%d人、分为%d 分。5. 当前目录下有一个文本文件sampie12.txt,其内容包含小写字母和大写字母。 请将该文件复制到另一文件sample12_copy.txt ,并将原文件中的小写字母全部 转换为大写字母,其余格式均不变。参考答案:f
14、=o pen (sa mp Ie12.txt)L1=f.readli nes()f2=o pen (sa mp Ie12_co py.txt,w) for line in L1:f2.write(li ne.upp er() f.close() f2.close()6.当前目录下有一个文件名为 的学号、数学课成绩(第2列)的文本文件,存放着某班学生class_score.txt和语文课成绩(第3列)。请编程完成下列要求:(1)分别求这个班数学和语文的平均分(保留(2)找出两门课都不及格(60)的学生,输出他们的学号和各科成绩。(3)找出两门课的平均分在90分以上的学生,输出他们的学号和各科成绩
15、。 建议用三个函数分别实现以上要求。1位小数)并输出。参考答案:def out pu t_avg(L):sum1,sum2=0,0 for line in L:L1=li ne.stri p( ).s pl it()sum1+=i nt(L11)sum2+=i nt(L12)coun t=le n(L)avg1=r oun d(sum1co un t,1)avg2=r oun d(sum2c oun t,1)print(这个班的数学平均分为:%4.1f,语文平均分为:4.1f%(avg1,avg2) def out put_notp ass(L):)prin t(两门课均不及格的学生学号及数学
16、、语文成绩为:for line in L:L1=li ne.stri p( ).s pl it()if in t(L11)60 and in t(L12)=90: prin t(li ne)f=open (class_score.txt) L=f.readli nes()del L0out pu t_avg(L)out put_notp ass(L)out pu t_good(L)算法分析与设计部分1. 编程,从键盘接收若干个整数(直接输入回车表示结束),用冒泡法或选择法进行排序(从小到大),并将排序结果在屏幕上输出。同时估计算法的复 杂度。参考答案:选择排序:def bubble(List)
17、:num=le n( List)for i in ran ge(0, nu m-1): for j in ran ge(i+1, nu m):if ListiListj:Listi,Listj=Listj,Listireturn ListL1= num_str=i np ut(请输入一个需排序的整数: while len(nu m_str) != 0:L1.a ppen d(i nt(nu m_str) num_str=i np ut(请输入一个需排序的整数: print(排序后结果:,bubble(L1) 或冒泡排序:def bubble(List):for i in ran ge(0,le
18、 n(List)-1):for j in ran ge(le n(List)-1,i,-1):if Listj-1Listj:Listj-1,Listj=Listj,Listj-1 return ListL1= num_str=i np ut(请输入一个需排序的整数: while len(nu m_str) != 0:)L1.a ppen d(i nt(nu m_str)num_str=i np ut(请输入一个需排序的整数: print(排序后结果:,bubble(L1)上述两个程序算法的时间复杂度均为0(n2).2. 从键盘接收一个正整数n,输出对应斐波那契(Fibonacci )数列的前
19、n项(计 算数列中某项的值请用递归函数实现)。另外,请指出所用算法的复杂度。有能力的同学还可进一步改进算法的效率。参考答案:def fib( n):if n=0 or n=1:return nelse:return fib( n-1) + fib( n-2)n=i nt(i np ut( n=) for i in range(n+1):prin t(fib(i),e nd=)算法时间复杂度为0( n*2n).可改进为:def fib( n,List):a,b=0,1List.a ppen d(a)while bmaxScore: maxScore=L3i max In dex=iif L3i=
20、a and si=A and si=0 and si=A) or (i=a): a+=1elif (i=):b+=1elif(i=0 and i=9):c+=1else:d+=1print (英文字母的个数为:+str(a)print (空格的个数为:+str(b)print (数字的个数为:+str(c)print (其他字符的个数为:+str(d) letter,s pace,digit,other=0,0,0,0s = inpu t( input a stri ng:)for c in s:if c.isal pha():letter +=1elif c.iss pace():sp ac
21、e +=1elif c.isdigit():digit +=1else:other +=1print(字母数:%dn 空格数:dn 数字数:%dn 其他字符 数:%dn%(letter,space,digit,other)2. 小王希望用电脑记录他每天掌握的英文单词。请设计程序和相应的数据结构,使小王能记录新学的英文单词和其中文翻译,并能很方便地根据英文来查找中 文。(参考:数据结构建议用集合。集合添加:dickey=value 判断key是否在集合中:if key in dic) 。参考答案:def add_dic(dic):while True:word=i nput(请输入英文单词(直接
22、按回车结束):)if len( word)=O: break;)mea nin g=i np ut(请输入中文翻译:)dicword=mea ning prin t(该单词已添加到字典库。returndef search_dic(dic):while True:word=i nput(请输入要查询的英文单词(直接按回车结束):) if len( word)=0:break;if word in dic:print(%s 的中文翻译是 s%(word,dicword)else:print(字典库中未找到这个单词)return worddic=dict()while True:print(请选择功
23、能:n1:输入n2 :查找n3 :退出) c=inpu t() if c=1:add_dic(worddic)elif c=2:search_dic(worddic)elif c=3:breakelse:prin t(输入有误!)五.异常处理部分:1.以下是两数相加的程序:x = in t(i npu t(x=) y = in t(i np ut(y=) prin t(x+y=,x+y);该程序要求接收两个整数,并输出相加结果。但如果输入的不是整数(如字母、 浮点数等),程序就会终止执行并输出异常信息。请对程序进行修改,要求输入 非整数时,给出“输入内容必须为整数!”的提示,并提示用户重新输入
24、,直至输入正确。参考答案:while True:try:x = in t(i np ut(x=)exce pt ValueError: prin t(输入内容必须为整数!else:breakwhile True:try:y = int(inp ut(y=)exce pt ValueError: prin t(输入内容必须为整数!else:break)prin t(x+y=,x+y) 2.编程,请输入一个文件路径名或文件名,查看该文件是否存在,如存在,打 开文件并在屏幕上输出该文件内容;如不存在,显示“输入的文件未找到!” 并要求重新输入;如文件存在但在读文件过程中发生异常,则显示“文件无法 正
25、常读出! ”并要求重新输入。参考答案:while True:try:file name=i npu t(请输入文件路径名或文件名: f=open (file name.stri p() prin t(f.read()exce pt FileNotF oun dError:prin t(输入的文件未找到!exce pt:print(文件无法正常读出!else:breakf.close()(提示:请使用异常处理。“文件未找到”对应的异常名为: FileNotFou ndError ,其他 异常直接用except匹配)五.函数部分:1.写一判素数的函数,在主函数中输入一个整数,调用该函数进行判断并输出结果。参考答案:def shushu (n):imp ort mathi,w=2,0if n=1:w=1while i u:u,v=v,u r=u%v while r!=0:u=vv=r r=u%v return vdef lcd(u,v,h): return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中式面点制作(视频课)知到课后答案智慧树章节测试答案2025年春洛浦县中等职业技术学校
- 海南外国语职业学院《建筑设计与构造(2)》2023-2024学年第二学期期末试卷
- 长沙民政职业技术学院《大气污染控制工程》2023-2024学年第二学期期末试卷
- 柳州职业技术学院《材料连接原理与技术》2023-2024学年第二学期期末试卷
- 厦门海洋职业技术学院《工程地质(一)》2023-2024学年第二学期期末试卷
- 淮北职业技术学院《漆画创作》2023-2024学年第二学期期末试卷
- 古代舆论沟通机制
- 构建人类命运共同体的重要性与必要性
- 高压水枪冲洗施工方案
- 牌楼建筑修缮施工方案
- 巧绘节气图(教学设计)-2024-2025学年二年级上册综合实践活动蒙沪版
- 《2024年 《法学引注手册》示例》范文
- 2022年4月07138工程造价与管理试题及答案含解析
- 气管插管操作并发症
- JT∕T 795-2023 事故汽车修复技术规范
- 预防接种门诊验收表4-副本
- 2024年交管12123学法减分考试题库及完整答案(典优)
- 数智时代的AI人才粮仓模型解读白皮书(2024版)
- (2024年)高中化学校本课程教材《绿色化学》
- 中医-血家药方四物汤
- 2024年北师大版八年级下册数学第二章综合检测试卷及答案
评论
0/150
提交评论