还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
一.程序结构与算法部分编写一个程序,输入两个数,比较它们的大小并输出其中较
1.python大者参考代码x=intinputPlease enterfirst integer:y=intinputPlease entersecond integer:if x==y:print两数相同!elif xy:print,较大数为,xelse:printC1较大数为,y;写一个算法(流程图和程序)输入三个数,输出其最大
2.python参考代码a,b,c=3,4,5if a=b:if cb:print“b是最大的数”else:print“c是最大的数else:if ca:print a是最大的数”else:print c是最大的数”.使用编程,求间所有偶数的和3Python1-100参考代码sum=0for xin rangel,101:if x%2==0:
5.当前目录下有一个文本文件sampled.txt,其内容包含小写字母和大写字母请将该文件复制到另一文件samplel2_copy.txt,并将原文件中的小写字母全部转换为大写字母,其余格式均不变参考答案f=opensamplel
2.txtLl=f.readlinesf2=opensamplel2_copy.txt,,w,for linein LI:f
2.writeline.upperf.closef
2.close
6.当前目录下有一个文件名为class_score.txt的文本文件,存放着某班学生的学号、数学课成绩第2列和语文谏成绩第3列请编程完成下列要求1分别求这个班数学和语文的平均分保留1位小数并输出2找出两门课都不及格60的学生,输出他们的学号和各科成绩3找出两门课的平均分在90分以上的学生,输出他们的学号和各科成绩建议用三个函数分别实现以上要求参考答案def output_avgL:suml,sum2=0,0for linein L:Ll=line.strip.splitsuml+=intLl[l]sum2+=intLl
[2]count=lenLavgl=roundsuml/count,lavg2=roundsum2/count,lprint这个班的数学平均分为%
4.1f,语文平均分为%
4.1f%avgl avg2def,output_notpassL:print扁门课均不及格的学生学号及数学、语文成绩为”for linein L:Ll=line.strip.splitif intLl[l]60and intLl
[2]60:printlinedef output_goodL:print南门课平均分在90分以上的学生学号及数学、语文成绩为”for linein L:Ll=line.strip.splitf_score=roundintLl[l]+intLl
[2]/2if f_score=90:printlinef=openclass_score.txtL=f.readlinesdel L
[0]output_avgL output_notpassL output_goodL三.算法分析与设计部分
1.编程,从键盘接收若干个整数(直接输入回车表示结束),用冒泡法或选择法进行排序(从小到大),并将排序结果在屏幕上输出同时估计算法的复杂度参考答案选择排序def bubbleList:num=lenListfor i in range0,num-1:for jin rangei+l,num:if Ust[i]Ust[j]:List[i],List[j]=List[j],List[i]return ListLl=[]num_str=input,请输入一个需排序的整数while lennum_str!=0:Ll.appendintnum_strnum_str二input请输入一个需排序的整数,print排序后结果bubbleLl或冒泡排序def bubbleList:for iin rangeO,lenList-l:for jin rangelenList-l,i,-l:if List[j-l]List[j]:List[j-l],List[j]=Ust[j],List[j-l]return ListLl=[]num_str二input,请输入一个需排序的整数,while lennum_str!=0:Ll.appendintnum_strnum_str二inputs请输入一个需排序的整数1prints排序后结果bubbleLl上述两个程序算法的时间复杂度均为0n
2.
2.从键盘接收一个正整数n,输出对应斐波那契Fibonacci数列的前n项计算数列中某项的值请用递归函数实现另外,请指出所用算法的复杂度有能力的同学还可进一步改进算法的效率参考答案:def fibn:if n==0or n==l:return nelse:return fibn-l+fibn-2n=intinputn=for iin rangen+l:printfibi,end=算法时间复杂度为00*2可改进为def fibn,List:a,b=0,l List.appenda whileb=n:算法的时间复杂性为List.appendb a,b=b,a+b n=intinputn=Ll=[]fibn,Ll printLl0n
3.当前目录下有一个文件名为score
2.txt的文本文件,存放着某班学生的计算机课成绩,共有学号、总评成绩两列请查找最高分和最低分的学生,并在屏幕上显示其学号和成绩另外,请指出所用算法的复杂度参考答案f=openscore
2.txta=f.readlinesdel a
[0]L2=[]L3=[]for linein a:line=line.stripLl=line.splitL
2.appendLl
[0]L
3.appendLl[l]f.closemaxScore=L3
[0]maxlndex=OminScore=L3
[0]minlndex=Ofor iin rangel,lenL3:if L3[i]maxScore:maxScore=L3[i]maxlndex=iif L3[i]minScore:最高分为分,该学生学号minScore=L3[i]minlndex=i print”+strmaxScore+”为”“最低分为分,该学生学号+strL2[maxlndex]print”+strminScore+“为时间复杂度为”+strL2[minlndex]0n.四.数据结构部分
1.编程,输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数参考答案letters,space,digitother^O,0,0s二input“请输入一行字符“for iin rangelens:if s[i]=,a,and s[i]=z ors[i]=W and s[i]=,Z,:letters+=lelifs[i]==,1:space+=lelif s[i]=0ands[i]=9:digit+=lelse:other+=l字母数printH%d\n空格数%d\n数字数%d\n其他字符数%d\n%letters,space,digit,other或p=input,请输入一行字符:,a,b,c d=0,0,0,0zfor iin p:ifi=Z and i=A ori=,z,and i=a:a+=lelifi==:b+=lelifi=0andi=9:c+=lelse:d+=lprint英文字母的个数为,+straprint空格的个数为:+strbprint数字的个数为,+strcprint其他字符的个数为,+strd或letter,space,digit,other=0,0,0,0s=inputinput astring:1for cin s:if c.isalpha:letter+=1elif c.isspace:space+=1elif c.isdigit:digit+=1else:other+=1printH字母数%d\n空格数%d\n数字数%d\n其他字符数%d\n%letter spacedigit,other/z
2.小王希望用电脑记录他每天掌握的英文单词请设计程序和相应的数据结构,使小王能记录新学的英文单词和其中文翻译,并能很方便地根据英文来查找中文参考数据结构建议用集合集合添加dic[key]=value判断key是否在集合中if keyin die参考答案def add_dicdic:while True:word二input请输入英文单词直接按回车结束if lenword==0:break;meaning二input“请输入中文翻译”dic[word]=meaningprint“该单词已添加到字典库returndef search_dicdic:while True:word二inputC,请输入要查询的英文单词直接按回车结束”if lenword==0:break;if wordindie:print%s的中文翻译是%s%word,dic[word]else:print1字典库中未找到这个单词returnworddic=dictwhile True:print请选择功能\nl:输入\n2查找\n3退出c=inputif c==,,lN:add_dicworddicelif c==,,2M:search_dicworddicelif c==3H:breakelse:print“输入有误!”五.异常处理部分
1.以下是两数相加的程序x=intinput,,x=Hy=intinput,,y=nprint,,x+y=,,x+y;/该程序要求接收两个整数,并输出相加结果但如果输入的不是整数如字母、浮点数等,程序就会终止执行并输出异常信息请对程序进行修改,要求输入非整数时,给出“输入内容必须为整数!”的提示,并提示用户重新输入,直至输入正确参考答案while True:try:x=intinputx=except ValueError:print输入内容必须为整数!else:breakwhile True:try:y=intinputy=except ValueError:print输入内容必须为整数!”else:breakprintx+y=,x+y
2.编程,请输入一个文件路径名或文件名,查看该文件是否存在,如存在,打开文件并在屏幕上输出该文件内容;如不存在,显示“输入的文件未找到!”并要求重新输入;如文件存在但在读文件过程中发生异常,则显示“文件无法正常读出!”并要求重新输入提示请使用异常处理”文件未找到”对应的异常名为FileNotFoundError,其他异常直接用except匹配参考答案while True:try:filename二input,请输入文件路径名或文件名f=openfilename.stripprintf.readexcept FileNotFoundError:print“输入的文件未找到!”except:print文件无法正常读出!”else:breakf.close五.函数部分:
1.写一判素数的函数,在主函数中输入一个整数,调用该函数进行判断并输出结果.参考答案def shushun:import mathi,w=2,0if n=l:w=lwhile i=intmath.sqrtn andw==0:if n%i==0:w=1break else:i=i+lreturn wn=intinputn=if shushun==0:是素数!printnJelse:不是素数!”printn,
2.当前目录下有一个文件名为score
3.txt的文本文件,存放着某班学生的学号和其两门专业课的成绩分别用函数实现以下功能1定义函数functionL计算每个学生的平均分取整数,并将所有学生的学号和平均分在屏幕上输出函数参数为要读取文件的文件名def functionlflname:#函数代码functionlCcAXtestWscoreS.txt参考答案def functionlflname:f=openflname a=f.readlines dela
[0]L3=[]for linein a:line=line.stripLl=line.splitavg_score=intintLl[l]+intLl
[2]/2L
3.append[Ll
[0],avg_score]f.close学号平均分“printfor L2in L3:printL2
[0]++strL2[l]2定义函数calAvgO,计算某一门课程的平均分函数参数为某门课成绩对应的列表名,返回值为该门课的平均分def calAvgL:#函数代码f=open,,c:\\test\\score
3.txta=f.readlinesdel a
[0]L2=[]L3=[]for linein a:line=line.stripLl=line.splitL
2.appendintLl[l]L
3.appendintLl
[2]f.closef“专业课的总平均分为,print1calAvgL2print专业课2的总平均分为,calAvgL3参考答案def calAvgL:sum,count=0,0for scorein L:sum+=scorecount+=lavg_score=intsum/countreturn avg_score
3.用函数或函数的递归实现求n!的算法主程序已给出同时估计程序的复杂度def factn:〃函数代码n=intinputCalculate n!Enter n=printn,!=,,factn参考答案def factn:value=lfor countin rangel,n+l:value*=countreturn value或def factn:if n==l:value=lelse:value=n*factn-l returnvalue程序复杂度为0n.
4.分别编写求两个整数的最大公约数的函数hcf和求最小公倍数的函数Icdo主函数已给出,其从键盘接收两个整数,调用这两个函数后输出结果提示求最大公约数可用辗转相除法即将大数作为被除数,小数作为除数,若二者余数不为0,则将小数作为被除数,余数作为除数,…直到余数为0o求最小公倍数则用两数的积除以最大公约数即可参考答案def hcfu,v:if vu:u,v=v,u r=u%v whiler!=0:r=u%vreturn vdeflcdu,v,h:return u*v/hu=intinput请输入第一个整数v=intinput请输入第二个整数”h=hcfu,vprintH%d和%€1的最大公约数为%5”%u,yhl=lcdu,v,hprintn%d和%1的最小公倍数为%5,,%付乂
15.编程,统计列表中各数据的方差和标准差主函数已给出,请编写计算方差的函数varo提示方差的计算公式为£Xi2/n-EX/n2,其中,n为列表中元素个数,尤为列表中的第i项标准差则为方差的算术平方根参考答案import mathdef varLl:printxsum=sum+xprint(累力口和是:,sum)用编写程序,输入一年份,判断该年份是否是闰年并输出
4.Python结果能被整除但不能被整除14100注凡符合下面两个条件之一的年份是闰年能被整除2400参考代码year=intinputPlease enterthe year:if year%4==0and year%100!=0or year%400==0:printyear/is a leap year.else:printyear,is notaleapyear.用编程,假设一年期定期利率为计算一下需要过
5.Python
3.25%,多少年,一万元的一年定期存款连本带息能翻番?参考代码cunkuan=10000#本金10000元years=0while cunkuan20000:years+=lcunkuan=cunkuan,1+
0.0325print(str仅ears)+”年以后,存款会翻番”)
6.从键盘接收一百分制成绩(0~100),要求输出其对应的成绩等级A~E其中,90分以上为A,80~89分为上70~79分为上60~69分为上,60分以下为E参考答案score=intinput请输入成绩0~100*if score100:输入错误!”grade=elif score=90:grade=As,psum=0,0for iin rangelenLl:v=Ll[i]s+=vpsum+=v*vs=s/lenLlmse=psum/lenLl-s*s returnmseLl=[5,3,7,8,14,9,12,6]dx=varLlprint方差为%.2f%dxmse=math.sqrtdxprint标准差为%.2f,%mse主程序中已有一个排好序的列表,请编写函数将从键盘接收的整数按原来从
6.insertList,小到大的排序规律插入到该列表中def insertListLl,x:#函数代码Ll=[l,4,6,9,13,16,28,40,100]二,请输入一个要插入的整数力x intinputinsertListLl,xprintLl参考答案def insertListLLx:if xLl[lenLl-l]:Ll.appendx returnfor iin range0JenLl:if xLl[i]:Ll.inserti,x breakreturnLl=[l,4,6,9,13,16,28,40,100]x二intinput,请输入一个要插入的整数,insertListLl,xprintLlelif score=80:grade=B elifscore=70:grade=Celif score=60:grade=*Delif score=0:grade=Eelse:”输入错误!()grade=print grade
7.猜数游戏预设一个0~9之间的整数,让用户猜一猜并输入所猜的数,如果大于预设的数,显示“太大”;小于预设的数,显示“太小”,如此循环,直至猜中该数,显示“恭喜!你猜中了!、参考答案num=7while True:guess=int(input(请输入你猜的数(0~9)))if guess==num:print(恭喜!你猜中了!)break;elif guessnum:print(太大”)else:print(太小”)
8.输入一个数,判断这个数是否为素数,并输出判断结果(所谓素数,是指除了1和该数本身之外,不能被其它任何整数整除的数下图为参考流程图)参考答案import mathn=intinput请输入一个数:“x=intmath.sqrtni,w=2,0for iin range2,x+l:if n%i==0:w=lif w==l:printnj不是素数else:printnj是素数”或import mathn=intinput请输入一个数i,w=2,0while i=intmath.sqrtn andw==0:if n%i==0:w=1breakelse:i=i+lif w==0:printnj是素数!”else:printnj不是素数!”或import mathn=intinput请输入一个数i=2while i=intmath.sqrtn:if n%i==0:printnj不是素数!breakelse:i=i+lelse:printn”是素数!”
9.输入一个时间小时:分钟:秒,输出该时间经过5分30秒后的时间参考答案houisminute,second=input请输入一个时间h:m:s:.split,:hour=inthourminute=intminutesecond=intsecondsecond+=30if second=60:second=second-60minute+=1minute+=5if minute=60:minute=minute-60hour+=1if hour==24:hour=0prinH^d^d^d^houtminute,second
10.一个数如果恰好等于它的因子之和,这个数就称为“完数例如,6的因子为
1、
2、3,而6=1+2+3,因此6是完数编程,找出1000之内的所有完数,并输出该完数及对应的因子枚举法参考答案m=1000for ainrange2,m+l:s=aLl=[]for iin rangel,a:if a%i==0:s-=iLl.appendiif s==0:print“完数:%d,因子包括“%a,end=”for jin rangel,lenLl:print%d,,%Ll[j]end=,7zprint\n
11.编程,解决猴子吃桃问题猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个以后每天早上都吃了前一天剩下的一半零一个到第天10早上想吃时,只剩下一个桃子了求第一天共摘多少个桃子迭代法参考答案day=9x=lwhile day0:x=x+l*2day-=lprintCtotak^x二.输入输出与文件部分编写一个程序,输入两个数,输出两数之和参考代码
1.pythonx=intinputPlease enterfirst integer:y=intinputPlease entersecondinteger:printThe sumis:;printx+y;在当前目录下有一个文件名为的文件,存放着上海从年月日周一
2.temp.txt20143至」月日周日间一周的最高和最低气温单位为摄氏度10I316其中,第一行为最高气温,第二行为最低气温编程,找出这一周中第几天最热按最高气温计算?最高多少度?这一周中第几天最冷按最低气温计算?最冷多少度参考答案flname=,,temp.txtf=openflnameht=f.readline.stripLl=listht.split7lt=f.readline,stripL2=listlt.split7f.closefor iin rangelenLl:Ll[i]=intLl[i]L2[i]=intL2[i]maxVal=Ll[O]maxDay=0minVal=L2
[0]minDay=0for iin rangel,lenLl:if Ll[i]maxVal:maxVal=Ll[i]maxDay=iif L2[i]minVal:minVal=L2[i]minDay=iprint这周第+strmaxDay+l+”天最热,最高”+strmaxVal+“摄氏度”print1这周第,,+strminDay+l+1天最冷,最低,,+strminVal+,1摄氏度”
3.在上题的基础上,求出全周的平均气温这一周各天平均温度的平均值,取整数假设在气象意义上,入春标准是连续天日均气温超过根据这一周的气象数据是否能判断510C,上海已经入春?参考答案flname=temp.txtf=openflnameht=f.readline.stripLl=listht.split,lt=f.readline.stripL2=listlt.split,;f.closeL3=[]for iin rangelenLl:Ll[i]=intLl[i]L2[i]=intL2[i]L
3.appendintLl[i]+L2[i]/2sum=0k=0foriin rangelenL3:sum=sum+L3[i]if L3[i]=10:k+=lelse:k=0avg=intsum/lenL3print周平均气温为:avgif k=5:prints上海这周已入春else:print上海这周未入春”
4.当前目录下有一个文件名为scorel.txt的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列请根据平时成绩占40%,期末成绩占60%的比例计算总评成绩取整数,并分学号、总评成绩两列写入另一文件score
2.txt同时在屏幕上输出学生总人数,按总评成绩计90以上、80〜
89、70〜
79、60〜
69、60分以下各成绩档的人数和班级总平均分取整数参考答案f=openscorel.txta=f.readlineline=f.readline.stripf2=openHscore
2.txt,7w学号平均成绩f
2.write\n“;L2=[0,0,0,0,0]count=0sum=0while lenline!=0:#printlineLl=line.splitf
2.writeLl
[0]+f_score=intintLl[l]*
0.4+intLl
[2]*
0.6if90f_score=100:L2
[0]+=lelif f_score=80:L2[l]+=1elif f_score=70:L2
[2]+=lelif f_score=60:L2
[3]+=lelse:L2
[4]+=lcount+=lsum+=f_scoref
2.writestrf_score+\nIine=f.readline.stripf.closeff
2.closeavg_score=intsum/countprint学生总人数为%d,按总评成绩计,90以上%d人、80~89间%d人、70~79间%d人、60〜69间%d人、60分以下%d人班级总平均分为%d分%count L2
[0],L2[l]L2
[2]L2
[3],L2
[4],avg_scorez,,或f=openscorel.txta=f.readlinesdel a
[0]L3=[]for linein a:line=line.stripLl=line.splitf_score=intintLl[l]*
0.4+intLl
[2]*
0.6L
3.append[Ll
[0],f_score]f.closefc=[0,0,0,0,0]count=0sum=0f2=openscore
2.txt,w学号平均成绩学”;f
2.writefor L2in L3:if90L2[l]=100:c
[0]+=lelif L2[l]=80:c[l]+=lelif L2[l]=70:c
[2]+=lelif L2[l]=60:c
[3]+=lelse:c
[4]+=lcount+=lsum+=L2[l]f
2.writeL2
[0]+*n+strL2[l]+\nf
2.closeavg_score=intsum/countprint学生总人数为%d,按总评成绩计,90以上%d人、80~89间%d人、70~79间%d人、60〜69间%d人、60分以下%d人班级总平均分为%d分%count c
[0],c[l],c
[2],c
[3],c
[4],avg_scorez。
个人认证
优秀文档
获得点赞 0