写一个python函数:输出如下菜单: 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非闰年”等信息。 样例查看模式 正常显示 查看格式 输入样例1 <-复制 2 3 2000 2 10 20 输出样例1 1 计算n! 2 输出素数 3 判定闰年 2000是闰年 1 计算n! 2 输出素数 3 判定闰年 11 13 17 19
时间: 2024-03-13 16:44:11 浏览: 180
好的,以下是实现上述功能的Python代码:
```python
import math
# 计算阶乘
def factorial(n):
res = 1
for i in range(1, n + 1):
res *= i
return res
# 输出素数
def prime(start, end):
primes = []
for i in range(start, end + 1):
flag = True
for j in range(2, int(math.sqrt(i)) + 1):
if i % j == 0:
flag = False
break
if flag and i > 1:
primes.append(i)
return primes
# 判断闰年
def leap_year(year):
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
return "{}年是闰年".format(year)
else:
return "{}年不是闰年".format(year)
# 输出菜单
def menu():
print("1 计算n!")
print("2 输出素数")
print("3 判定闰年")
# 主函数
if __name__ == "__main__":
t = int(input("请输入测试次数t:"))
for i in range(t):
menu()
data = input("请输入选项和数据,以空格分隔:").split()
choice = data[0]
if choice == "1":
n = int(data[1])
res = factorial(n)
print("{}! = {}".format(n, res))
elif choice == "2":
start = int(data[1])
end = int(data[2])
primes = prime(start, end)
print("{}到{}之间的素数为:{}".format(start, end, primes))
elif choice == "3":
year = int(data[1])
res = leap_year(year)
print(res)
else:
print("INPUT ERROR!")
```
该程序定义了四个函数,分别实现了计算阶乘、输出素数、判断闰年和输出菜单的功能。在 `factorial()` 函数中,通过循环计算阶乘并返回结果;在 `prime()` 函数中,通过判断每个数是否为素数来返回指定范围内的素数列表;在 `leap_year()` 函数中,通过判断年份是否满足闰年条件来返回该年份是否为闰年的信息。在主函数中,先读入测试次数 `t`,然后根据菜单选项和数据分别调用对应的函数,最后输出计算结果或错误信息。
注意,本题要求程序输出的格式有一些细节,需要注意,例如:
- 计算阶乘时,需要输出计算结果;
- 判断闰年时,需要输出类似“2000年是闰年”的信息;
- 如果输入的选项不是1到3,需要输出“INPUT ERROR!”。
阅读全文