【id:381】【10分】G. 菜单选择
题目描述
输出如下菜单:
1 计算n!
2 输出素数
3 判定闰年
根据输入(1、2、3),接受数据输入,计算n!或输出某范围内的所有素数或判定给定年是否闰年,并输出计算结果。
要求:输出菜单,每个菜单项计算各定义一个函数,共四个函数。
输入
测试次数t
每组测试数据格式如下:
选项(1,2,3或其它),后跟需要的数据。
如: 输入1 10,表示计算n!。
输入2 10 100,表示输出10到100之间的所有素数。
输入3 2000,表示判定2000是否闰年。
输出
对每组测试数据,首先输出菜单。
根据输入选项,输出相应计算结果。如果选项非1到3,输出INPUT ERROR!。
n!—输出计算结果。
闰年—输出“2000是闰年”,“2017非闰年”等信息。
答案
from math import sqrt
def one(n):
res=1
for x in range(1,n+1):
res*=x
return res
def two(m,n):
def su(n):
if n < 2:
return False
for x in range(2, int(sqrt(n)) + 1):
if n % x == 0:
return False
return True
k = []
for x in range(m, n+1):
if su(x):
k.append(x)
r=[str(l) for l in k]
res=" ".join(r)
return res
def three(n):
if n%4!=0:
return False
elif n%100==0 and n%400!=0:
return False
return True
def cai():
print(1,"计算n!")
print(2, "输出素数")
print(3, "判定闰年")
t=int(input())
a=[]
for x in range(t):
cai()
tes=input()
a=tes.split(" ")
a=[int(p) for p in a]
if a[0]==1:
print(one(a[1]))
elif a[0]==2:
print(two(a[1],a[2]),end=" ")
elif a[0]==3:
if three(a[1]):
print(a[1],"是闰年",sep='')
else:
print(a[1],"非闰年",sep='')
else:
print("INPUT ERROR!")
print()