Python习题选编
华东师大信息学院计算中心
一.程序结构与算法部分:
1. 编写一个python程序,输入两个数,比较它们的大小并输出其中较大者。 参考代码:
x = int(input(\y = int(input(\if (x == y):
print(\两数相同!\elif (x > y):
print(\较大数为:\else:
print(\较大数为:\
2.写一个算法(流程图和python程序):输入三个数,输出其最大者。
参考代码:
a,b,c=3,4,5 if a <= b: if c < b:
print (\是最大的数\ else:
print (\是最大的数\else:
if c < a:
print (\是最大的数\ else:
print (\是最大的数\
3.使用Python编程,求1~100间所有偶数的和。 参考代码: sum=0
for x in range(1,101): if x % 2==0: print(x) sum=sum+x print(\累加和是:\
4.用Python编写程序,输入一年份,判断该年份是否是闰年并输出结果。 注:凡符合下面两个条件之一的年份是闰年。
(1) 能被4整除但不能被100整除。 (2) 能被400整除。 参考代码:
year = int(input(\
if ((year%4==0 and year0!=0) or (year@0==0)): 加个括号即可 print(year,\else:
print(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: 无需写小于什么什么的 因为elif就已经是除了这个之外的了 grade = 'C' elif score >= 60: grade = 'D' elif score >= 0: grade = 'E' else:
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,因子包括:\ for j in range(1,len(L1)): 为啥不是0开头的 print(\ print(\
10.编程,解决猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。(迭代法)
参考答案: day=9 x=1
while day>0: x=(x+1)*2 day-=1 print(\
二.文件部分:
1. 在当前目录下有一个文件名为temp.txt的文件,存放着上海从2014年3月10日(周一)到3月16日(周日)间一周的最高和最低气温(单位为摄氏度)。其中,第一行为最高气温,第二行为最低气温。编程,找出这一周中第几天最热(按最高气温计算)?最高多少度?这一周中第几天最冷(按最低气温计算)?最冷多少度? 参考答案:
flname=\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] 可用max.(L1) maxDay=0 minVal=L2[0] minDay=0
for i in range(1,len(L1)): if L1[i]>maxVal: