#第5章 模块与函数
#实验5.1 函数实验
'''利用用户定义函数,按照要求,完成如下任务。
(1)分别利用一般函数和递归函数两种方法,
设计n的阶乘的函数fa(n),计算并输出1!+2!+…+n!。'''
def fa1(n):#一般函数
sum=0
i=n
k=1
while i>=1:
j=i
while j>1:
k=j*(j-1)*k
j=j-2
sum=sum+k
k=1
i=i-1
return sum
#递归函数
def fa2(n):
if(n==1):
return 1
else:
return fa2(n-1)*n
def fa3(n):
if(n==1):
return 1
else:
return fa3(n-1)+fa2(n)
n=eval(input('请输入整数n:'))
print('sum1=',fa1(n),sep='')
print('sum2=',fa3(n),sep='')
'''(2)分别利用一般函数和匿名函数两种方法,
定义四叶玫瑰数f44,计算并输出所有四叶玫瑰数。'''
#一般函数
def f144():
n=1000
while n<10000:
a=int(n/1000)
b=int(n/100%10)
c=int(n/10%10)
d=int(n%10)
print(a,b,c,d)
#也可使用list获取位数上的数字
#n=1177,Python直接使用a=n/1000的结果是a=1.177,所以需要做强制转换
if pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4)==n:
print(n)
n=n+1
f144()
#匿名函数
f44=lambda a,b,c,d:pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4)
for n in range(1000,10000):
s=list(str(n))
a=int(s[0])
b=int(s[1])
c=int(s[2])
d=int(s[3])
if n==f44(a,b,c,d):
print(n)
'''(3)角谷定理。输入一个自然数n,如果n为偶数,则
n除以2;如果n为奇数,则n乘以3加1;重复上述操作,
直到n=1结束。利用递归函数,计算并输出经过多少次
可以达到n=1.'''
count=0
def testJG(k):
global count
if k==1:
return
else:
count=count+1
if k%2==0:
testJG(int(k/2))
if k%2==1:
testJG(int(k*3+1))
n=eval(input('请输入自然数n:'))
testJG(n)
print(n,'经过',count,'次可以达到1',sep='')
'''(4)四则运算测试系统atest.py
设计四个函数:加函数plus(x,y)、减函数minu(x,y)、
乘函数prod(x,y)和除函数divi(x,y),
实现两个数据加减乘除运算的测试,要求如下:
①从键盘输入任意两个数据x、y,实现四则运算的测试
②如果回答正确,输出“回答正确,你好聪明!”;
如果回答错误,输出“回答错误,继续加油!”并
输出正确答案
③可以选择(y)继续测试,或者(n)退出测试'''
def plus(x,y):
right=x+y
print(x,'+',y,'=',sep='',end='')
inanswer=eval(input())
if right==inanswer:
print('回答正确,你好聪明!')
else:
print('回答错误,继续加油!正确答案是:',right)
def minu(x,y):
right=x-y
print(x,'-',y,'=',sep='',end='')
inanswer=eval(input())
if right==inanswer:
print('回答正确,你好聪明!')
else:
print('回答错误,继续加油!正确答案是:',right)
def prod(x,y):
right=x*y
print(x,'*',y,'=',sep='',end='')
inanswer=eval(input())
if right==inanswer:
print('回答正确,你好聪明!')
else:
print('回答错误,继续加油!正确答案是:',right)
def divi(x,y):
if y==0:
print('除数不能为0!')
return
#此处可进行异常处理
right=x*1.0/y
print(x,'/',y,'=',sep='',end='')
inanswer=eval(input())
if right==inanswer:
print('回答正确,你好聪明!')
else:
print('回答错误,继续加油!正确答案是:',right)
choice='y'
while choice=='y':
x,y=eval(input('请输入x,y:'))
plus(x,y)
minu(x,y)
prod(x,y)
divi(x,y)
choice=input('是否继续进行测试?(y/n)')
第5章 模块与函数——笔记八
最新推荐文章于 2024-02-03 20:56:05 发布