作為 Automate the Boring Stuff 第 3 章練習的一部分,我需要撰寫一個模仿 Collat??z 序列的短程式,其中:
- 如果輸入的數字是偶數,則除以2,重復直到等于1;
- 如果輸入的數字是奇數,將其乘以3再加1,重復直到等于1;
- 為 Ctrl C 創建一個干凈的退出。
- 檢測用戶是否輸入了非整數字串。
以下是我到目前為止的代碼,它似乎有效,但我將不勝感激任何改進它的建議/最佳實踐。
我的主要問題是,在程式列印“僅輸入整數”之后,是否有任何簡短而簡單的方法可以回圈回到“輸入任意數字:”行?除了復雜的 if 回圈之外,我想不出任何 atm 。謝謝。
def collatz(number):
if number % 2 == 0 :
results = number // 2
print(results)
if results != 1:
collatz(results)
elif number % 2 == 1 :
results = 3 * number 1
print(results)
if results != 1:
collatz(results)
try:
entry = input('Enter any number : ')
number = int(entry)
print(number)
collatz(number)
except ValueError:
print('Enter integers only.')
except KeyboardInterrupt:
sys.end()
uj5u.com熱心網友回復:
您可以嘗試使用while loop. 以下代碼將對您有所幫助。
def collatz(number):
if number % 2 == 0 :
results = number // 2
print(results)
if results != 1:
collatz(results)
elif number % 2 == 1 :
results = 3 * number 1
print(results)
if results != 1:
collatz(results)
while True:
try:
entry = input('Enter any number : ')
number = int(entry)
print(number)
collatz(number)
except ValueError:
print('Enter integers only.')
except KeyboardInterrupt:
break # Stop the while loop.
sys.end()
uj5u.com熱心網友回復:
正如你要一直提示一樣,直到程式退出。我建議將程式代碼封裝在 while(true) 回圈中:
while True:
try:
entry = input('Enter any number : ')
number = int(entry)
print(number)
collatz(number)
except ValueError:
print('Enter integers only.')
except KeyboardInterrupt:
sys.end()
uj5u.com熱心網友回復:
您可以定義一個迭代以確保輸入是整數型別。
while True: # executes the loop body indefinitely
try:
entry = input('Enter any number : ')
number = int(entry)
print(number)
collatz(number)
break # immediately terminates the loop entirely
except ValueError:
print('Enter integers only.')
except KeyboardInterrupt:
sys.end()
uj5u.com熱心網友回復:
把它放在一個“while”回圈中。
while True:
try:
...
except:
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490980.html
