python期末复习题
目录
一、幸运素数
输入输出示例:
输入区间起点值与终点值
6
30
输出区间内幸运素数
7
23
29
def is_prime(n): #判断是否是素数
if n<2:
return False
for i in range(2,int(n**0.5)+1):
if n%i==0:
return False
return True
def lucky(n): #判断是否是幸运素数
while n>=10:
n=n//10
if is_prime(n):
if n<10:
return True
else:
return False
min=eval(input())
max=eval(input())
for i in range(min,max+1):
if is_prime(i):
if i<10:
print(i) #小于10直接不用判断是否是幸运素数
else:
if lucky(i):
print(i)
二、用字典输出成绩、考试人数、科目
输入一个字典,字典中存放了三门课程参加考试的学生的分数,
要求将每门课程的平均分添加到分数列表的最后并按样例输出结果,平均分使用round函数保留一位小数。
【提示:输入字典使用d=eval(input())】
输入输出样例如下:
输入:
{'语文':[85,89,76,88],'数学':[88,92,96],'英语':[98,90,95,99,92]}
输出:
语文科目参加考试人数为4均分为84.5
数学科目参加考试人数为3均分为92.0
英语科目参加考试人数为5均分为94.8
{'语文': [85, 89, 76, 88, 84.5], '数学': [88, 92, 96, 92.0], '英语': [98, 90, 95, 99, 92, 94.8]}
d=eval(input())
dic={}
for k,v in d.items(): #用items遍历字典
s=0
l=len(v)
for i in v:
s=s+i
avg=round(s/l,1)
print("{}科目参加考试人数为{}均分为{}".format(k,l,avg))
v.append(avg)
dic[k]=v
print(dic)
三、改变列表,计算方差
ls=eval(input())
m=eval(input())
for i in range(0,len(ls)):
if ls[i]<m:
ls[i]=3*ls[i]
elif ls[i]>m:
ls[i]=2*ls[i]
print(ls)
avg=sum(ls)/len(ls)
var1=0
for i in ls:
var1+=(i-avg)**2
var=1/(len(ls)-1)*var1
print("{:.2f}".format(var))
四、计算天数
编写一程序,输入年月日,输出这一天是该年的第几天。
输入的年月日格式为:2023-02-09,其中年份为4字符,月份和日期均为2字符。
输入输出样例1:
输入:
2023-02-01
输出
32
输入输出样例2:
输入:
2020-03-01
输出
61
a=input()
ls=a.split('-')
y=int(ls[0])
m=int(ls[1])
d=int(ls[2])
days=[31,28,31,30,31,30,31,31,30,31,30,31]
if y%4==0 and y%100!=0 or y%400==0: #判断是否是闰年,推出2月的天数
days[1]=29
count=0
for i in range(0,int(m)-1):
count+=days[i]
result=int(d)+count
print(result)