python判断水仙花数函数_Python(6):上机练习——函数练习之水仙花数
題目:
(1)創建一個函數,接受一個參數n(n>=100),判斷這個數是否為水仙花數,結果返回True或者False。
水仙花數:滿足如果這個數為m位數,則每個位上的數字的m次冪之和等于它本身
(2)創建一個函數,接受一個參數max(max>=1000),調用上題編寫的判斷函數,求100到max之間的水仙花數
IDE:
Thonny
(1)
過程:
① 接受參數n:n=input(‘請輸入一個大于100的參數n:’)
此處需注意:input()的返回值是字符串格式
② 要判斷n是否為水仙花數——>要得到每個位上的數字
思路1:除法,如153/100=1,(153-100)/10=5,(153-150)/1=3,太麻煩
思路2:嘗試通過切片操作得到每位數
③ 用if語句判斷是否相等
代碼:
n=input('請輸入一個大于100的參數n:')
m=len(n)
i=0
s=0
while i
s=s+int(n[i:i+1:1])**m
i=i+1
if int(n)<100:
print('請確認n是否大于100')
else:
if s==int(n):
print('True')
else:
print('False')
運行結果:
遇到的問題:
while拼寫錯誤,運行代碼一直顯示符號不正確
int和str的區分,input返回n為字符串形式(后對字符串進行切片,切片后得到的也是str)
len()不能用于int型
m**n運算(求乘方)用于int型,切片后的str要變為int型再進行乘方
進行n和100的對比時,也要化為int型
len()是內置函數,返回對象的長度(元素個數)。實參可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)。
(2)
過程
對(1)中的代碼進行小修改
① 記住原代碼中n是str型,而range() 函數創建的是整數列表,添加n=str(n),把range()生成的int轉換為str
② print改為return,print只能打印,無法傳遞函數值
range()函數可創建一個整數列表,一般用在 for 循環中。
利用迭代循環for來對(100,max)間的整數進行水仙花數判定
創建一個空列表alist,如果是水仙花數,就用append操作把k加到列表中,迭代循環完畢后,else print最后統一打印
和(1)中同理,input返回值max是str型,放到range()中要轉變為int型
代碼
def wflower(n):
# n=input('請輸入一個大于100的參數n:')
n=str(n)
m=len(n)
i=0
s=0
while i
s=s+int(n[i:i+1:1])**m
i=i+1
if int(n)<100:
print('請確認n是否大于100')
else:
if s==int(n):
return('True')
else:
return('False')
max=input('請輸入參數max(max>=1000):')
alist=[]
for k in range(100,int(max)):
re=wflower(k)
if re=='True':
alist.append(k)
k=k+1
else:
print('100到max之間的水仙花數有:',alist)
總結
以上是生活随笔為你收集整理的python判断水仙花数函数_Python(6):上机练习——函数练习之水仙花数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 JavaScript 中隐藏表格行
- 下一篇: 〖Python零基础入门篇㉟〗- 私有函