初學者問題在這裏。自動化無聊的任務 - 鍛鍊 - collatz功能
我剛剛嘗試從自動化無聊的東西練習。我已經按照以下格式完成了這個問題:首先定義一個函數,如下所示:
「寫一個名爲collatz()的函數有一個名爲number的參數,如果number是偶數,那麼collatz()應該打印number// 2並返回此值,如果數字爲奇數,則collatz()應打印並返回3 * number + 1。
,然後使用該相同的功能,滿足這些最小約束,編寫滿足以下要求的程序:
然後寫一個程序,讓用戶類型中的整數,並且,保持主叫在Collatz()直到函數返回值1.
我已經設法按照上面的規則生成一個以1結尾的數字序列,但是我的程序打印序列中的每個數字三次。有人能夠解釋爲什麼這可能是?
非常感謝您的幫助
def collatz(number):
if int(number) % 2 == 0:
print(int(number)//2)
return int(number)//2
else:
print(3 * int(number) + 1)
return 3 * int(number) + 1
collatz(5)
print('Enter a number')
entry = input()
while collatz(entry) != 1:
collatz(entry)
entry = collatz(entry)
因爲你調用該函數在三個不同的地點它打印了三次。 –
您首先調用'collatz(5)',然後在每個'while'循環中調用它('collatz(entry)'),然後在循環內再調用它兩次。 – zwer
爲了讓你的代碼看起來更好一些,'1'你不需要在每個實例上都做'int(number)',事實上,你可以假設'int'會被傳遞,並且擺脫你的所有'int()'。你也可以擺脫打印聲明,並使用'return' –