1、编程实现:用户输入整数n的值(n≥0),求n的阶乘值。要求:自定义函数fact(n)来实现阶乘值的计算,不得使用数学库函数。
输入输出示例:
请输入整数n的值:-10
输入的值无效,请重新输入n的值:10
10!= 3628800
def fact(n):
s=1
for i in range(1,n+1):
s=s*i
return s
n=eval(input("请输入整数n的值:"))
while n<0:
n=eval(input("输入的值无效,请重新输入整数n的值:"))
s=fact(n)
print("{}!={}".format(n,s))
2、编程实现:输出整数m-n范围内(含m和n)所有的素数。要求: m和n由用户输入,要有异常处理防止用户输入不规范;编写自定义函数isPrime(x)来判断整数x是否为素数,如果是质数返回True,否则返回False。
def isPrime(x):
if x<=1:
return False
else:
for i in range(2,int(x**0.5)+1):
if x%i==0:
return False
return True
try:
m,n=eval(input("请输入两个数m和n.m<n并且以逗号隔开:"))
while not(n>=m>0):
m,n=eval(input("输入数值错误,请重新输入整数m,n(n>m>0,“,”隔开):"))
s=""
for i in range(m,n+1):
if isPrime(i)==True:
s=s+str(i)+","
if len(s)>=1:
print("{}-{}范围内的素数有:{}".format(m,n,s[:-1]))
else:
print("{}-{}范围内没有素数".format(m,n))
except :
print("输入错误,请重新运行")
3.编程调试:改写实验七第3小题编写的程序代码,使用自定义函数gys(a,b)求解正整数a、b的最大公约数;并启用IDLE的调试功能观察记录全局变量和局部变量的变化过程。
def gys(a,b):
x=a%b
while x!=0:
a=b
b=x
x=a%b
return b
m,n=eval(input("请输入2个正整数,以逗号分隔:"))
x=gys(m,n)
y=int(m*n/x)
print("最大公约数是{}最小公倍数是{}".format(x,y))
Locals | a | b | x | |
1 | 4 | 6 | 4 | |
2 | 6 | 4 | 2 | |
3 | 4 | 2 | 0 | |
Globals | m | n | x | y |
1 | 4 | 6 | ||
2 | 4 | 6 | ||
3 | 4 | 6 | ||
4 | 6 | 2 | 12 |