Python实验报告9

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

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值