logo资料库

《Python程序设计》题库.pdf

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
Python 习题选编 华东师大信息学院计算中心 一.程序结构与算法部分: 1. 编写一个 python 程序,输入两个数,比较它们的大小并输出其中较大者。 参考代码: x = int(input("Please enter first integer: ")) y = int(input("Please enter secondinteger: ")) if (x ==y): print(" 两数相同! ") elif (x > y): print(" 较大数为: ",x) else: print(" 较大数为: ",y); 2.写一个算法(流程图和 python 程序):输入三个数,输出其最大者。 参考代码: a,b,c=3,4,5 if a <=b: if c < b: print ("b 是最大的数 ") else: print ("c 是最大的数 ") else: if c < a: print ("a 是最大的数 ") else: print ("c 是最大的数 ") 3.使用 Python 编程,求 1~100 间所有偶数的和。 参考代码: sum=0 for x in range(1,101): if x %2==0: print(x) sum=sum+x print(" 累加和是 :",sum) 4.用 Python 编写程序,输入一年份,判断该年份是否是闰年并输出结果。 注:凡符合下面两个条件之一的年份是闰年。
(1) 能被 4 整除但不能被 100 整除。 (2) 能被 400 整除。 参考代码: year = int(input("Please enter the year: ")) if ((year%4==0and year%100!=0)or (year%400==0)): 加个括号即可 print(year,"is a leap year.") else: print(year,"is not a leap year.") 5.用 Python 编程,假设一年期定期利率为 3.25%,计算一下需要过多少年,一 万元的一年定期存款连本带息能翻番? 参考代码: cunkuan = 10000 #本金 10000 元 years=0 while cunkuan<20000: years+=1 cunkuan=cunkuan*(1+0.0325) print(str(years)+"年以后,存款会翻番 ") 6.从键盘接收一百分制成绩( 0~100),要求输出其对应的成绩等级 A~E。其中, 90 分以上为 'A' ,80~89 分为'B',70~79 分为 'C',60~69 分为 'D',60 分以下为 'E'。 参考答案: score=int(input(' 请输入成绩( 0~ 100): ')) if score > 100: grade = "输入错误! " elif score >= 90: grade = 'A' elif score >= 80: grade = 'B' elif score >= 70: grade = 'C' elif score >= 60: grade = 'D' elif score >= 0: grade = 'E' else: 无需写小于什么什么的 因为 elif 就已经是除了这个之外的了 grade = "输入错误! " print(grade) 7.猜数游戏。预设一个 0~9 之间的整数,让用户猜一猜并输入所猜的数,如果 大于预设的数,显示“太大” ;小于预设的数,显示“太小” ,如此循环,直至猜 中该数,显示“恭喜!你猜中了! ”。 参考答案: num=7
while True: guess=int(input('请输入你猜的数( 0~9):')) if guess== num: print(" 恭喜!你猜中了! ") break; elif guess> num: print(" 太大 ") else: print(" 太小 ") 8.输入一个数,判断这个数是否为素数,并输出判断结果。 (所谓素数,是指除了 1 和该数本身之外,不能被其它任何整数整除的数。下 图为参考流程图 ) 参考答案: import math n=int(input(" 请输入一个数 :")) x=int(math.sqrt(n)) i,w=2,0 for i in range (2,x+1): if n%i==0:
w=1 if w==1: print(n," 不是素数。 ") else: print(n," 是素数。 ") 或 import math n=int(input(' 请输入一个数: ')) i,w=2,0 while i <= int(math.sqrt(n)) and w==0: if n%i == 0: w = 1 break else: i = i+1 if w==0: print(n," 是素数! ") else: print(n," 不是素数! ") 或 import math n=int(input(' 请输入一个数: ')) i=2 while i <= int(math.sqrt(n)) : if n%i == 0: print(n," 不是素数! ") break else: i=i+1 else: print(n," 是素数! ") 9.一个数如果恰好等于它的因子之和,这个数就称为“完数” 。例如, 6 的因子 为 1、2、3,而 6=1+2+3,因此 6 是完数。编程,找出 1000 之内的所有完数,并 输出该完数及对应的因子。 (枚举法) 参考答案: m=1000 for a in range(2,m+1): s=a L1=[] for i in range(1,a): if a%i==0:
s-=i L1.append(i) if s==0: print(" 完数: %d,因子包括: "%a,end="") for j in range(1,len(L1)): 为啥不是 0 开头的 print("%d"%L1[j],end=",") print("\n") 10.编程,解决猴子吃桃问题。 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将 剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到 第 10 天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。 (迭代法) 参考答案: day=9 x=1 while day>0: x=(x+1)*2 day-=1 print("total=",x) 二.文件部分: 1. 在当前目录下有一个文件名为 temp.txt 的文件,存放着上海从 2014 年 3 月 10 日(周一)到 3 月 16 日(周日)间一周的最高和最低气温(单位为摄氏度) 。 其中,第一行为最高气温,第二行为最低气温。编程,找出这一周中第几天最 热(按最高气温计算) ?最高多少度?这一周中第几天最冷 (按最低气温计算) ? 最冷多少度? 参考答案: flname="temp.txt" f=open(flname) ht=(f.readline()).strip() L1=list(ht.split(',')) lt=(f.readline()).strip() L2=list(lt.split(',')) f.close() for i in range(len(L1)): 暂且先只读一行 此处再读第二行 L1[i]=int(L1[i]) L2[i]=int(L2[i]) maxVal=L1[0] maxDay=0 minVal=L2[0] minDay=0 for i in range(1,len(L1)): if L1[i]>maxVal: 可用 max.(L1)
maxVal=L1[i] maxDay=i if L2[i]=10: k+=1 else: k=0 这还要写吗??? avg=int(sum/len(L3)) print(" 周平均气温为: ",avg) if k>=5: print(" 上海这周已入春。 ") else: print(" 上海这周未入春。 ") 3.当前目录下有一个文件名为 score1.txt 的文本文件,存放着某班学生的计
40%,期 算机课成绩,共有学号、平时成绩、期末成绩三列。请根据平时成绩占 末成绩占 60%的比例计算总评成绩(取整数) ,并分学号、总评成绩两列写入另 一文件 score2.txt 。同时在屏幕上输出学生总人数, 按总评成绩计 90 以上、80~ 89、70~79、60~69、60 分以下各成绩档的人数 和班级总平均分(取整数) 。 参考答案: f=open("score1.txt") a=f.readline() line=(f.readline()).strip() f2=open("score2.txt",'w') f2.write(" 学号 平均成绩 \n"); L2=[0,0,0,0,0] count=0 sum=0 while (len(line) != 0): #print(line) L1=line.split() f2.write(L1[0]+" f_score=int(int(L1[1])*0.4+int(L1[2])*0.6) if 90=80: L2[1]+=1 elif f_score>=70: L2[2]+=1 elif f_score>=60: L2[3]+=1 else: L2[4]+=1 count+=1 sum+=f_score f2.write(str(f_score)+"\n") line=(f.readline()).strip() ?????????????? f.close() f2.close() avg_score=int(sum/count) print(" 学生总人数为 %d,按总评成绩计 ,90 以上 %d 人、 80~89 间%d 人、 70~ 79 间 %d 人、 60 ~ 69 间 %d 人 、 60 分 以 下 %d 人 。 班 级 总 平 均 分 为 %d 分 。 "%(count,L2[0],L2[1],L2[2],L2[3],L2[4],avg_score)) 或 f=open("score1.txt") a=f.readlines() del a[0] L3=[]
for line in a: line=line.strip() L1=line.split() f_score=int(int(L1[1])*0.4+int(L1[2])*0.6) L3.append([L1[0],f_score]) f.close() c=[0,0,0,0,0] count=0 sum=0 f2=open("score2.txt",'w') f2.write(" 学号 平均成绩 \n"); for L2 in L3: if 90=80: c[1]+=1 elif L2[1]>=70: c[2]+=1 elif L2[1]>=60: c[3]+=1 else: c[4]+=1 count+=1 sum+=L2[1] f2.write(L2[0]+" "+str(L2[1])+"\n") f2.close() avg_score=int(sum/count) print(" 学生总人数为 %d,按总评成绩计 ,90 以上 %d 人、 80~89 间%d 人、 70~ 79 间 %d 人、 60 ~ 69 间 %d 人 、 60 分 以 下 %d 人 。 班 级 总 平 均 分 为 %d 分 。 "%(count,c[0],c[1],c[2],c[3],c[4],avg_score)) 4.当前目录下有一个文本文件 sample12.txt ,其内容包含小写字母和大写字母。 请将该文件复制到另一文件 sample12_copy.txt ,并将原文件中的小写字母全部 转换为大写字母,其余格式均不变。 参考答案: f=open("sample12.txt") L1=f.readlines() f2=open("sample12_copy.txt",'w' ) for line in L1: f2.write(line.upper()) f.close() f2.close()
分享到:
收藏