第5章 模块与函数——笔记八
生活随笔
收集整理的這篇文章主要介紹了
第5章 模块与函数——笔记八
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#第5章 模塊與函數
#實驗5.1 函數實驗
'''利用用戶定義函數,按照要求,完成如下任務。
(1)分別利用一般函數和遞歸函數兩種方法,
設計n的階乘的函數fa(n),計算并輸出1!+2!+…+n!。'''
def fa1(n):#一般函數sum=0i=nk=1while i>=1:j=iwhile j>1:k=j*(j-1)*kj=j-2sum=sum+kk=1i=i-1return sum
#遞歸函數
def fa2(n):if(n==1):return 1else:return fa2(n-1)*n
def fa3(n):if(n==1):return 1else: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=1000while 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 countif k==1:returnelse: 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+yprint(x,'+',y,'=',sep='',end='')inanswer=eval(input())if right==inanswer:print('回答正確,你好聰明!')else:print('回答錯誤,繼續加油!正確答案是:',right)
def minu(x,y):right=x-yprint(x,'-',y,'=',sep='',end='')inanswer=eval(input())if right==inanswer:print('回答正確,你好聰明!')else:print('回答錯誤,繼續加油!正確答案是:',right)
def prod(x,y):right=x*yprint(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/yprint(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章 模块与函数——笔记八的全部內容,希望文章能夠幫你解決所遇到的問題。