2017-04-08 236 views
1

我有以下代碼 - 用於在Collat​​z函數的源代碼:While循環語法錯誤

number = int(input('enter a number') 

while number != 1: 
    if number%2 == 0: 
    n = number//2 
     print (str(n)) 
    elif number%2 == 1: 
    n = 3*number+1 
     print (str(n)) 
    else: 
    break 

該錯誤消息如下:

Python 3.5.2 (default, Dec 2015, 13:05:11) 
[GCC 4.8.2] on linux 

Traceback (most recent call last): 
    File "python", line 5 
    while number != 1: 
     ^
SyntaxError: invalid syntax 

回答

4

此:

number = int(input('enter a number') 

應該是:

number = int(input('enter a number')) 

一旦你解決了這個問題,你應該看看取消打印你的打印語句。這些縮進不是必需的。

+0

正如[答案]聲明,請避免回答不清楚,寬,SW REC,錯字,意見爲基礎,不可重複或重複的問題。編寫我的代碼請求和費力的家庭作業問題不適用於[所以],更適合於專業編碼/輔導服務。良好的問題堅持[問],包括[mcve],有研究的努力,並有潛力對未來的訪問者有用。回答不適當的問題會使網站變得更難以瀏覽和鼓勵更多這樣的問題,從而損害其他用戶的志願者時間和專業知識。 – TigerhawkT3

1

您有縮進問題,並且沒有關閉第一行中的括號。另外,由於您需要在每個循環中更新它,因此請將n更改爲number。否則,您的功能不會執行Collat​​z過程。這將做的工作:

number = int(input('enter a number')) 

while number!=1: 
    if number%2 == 0: 
     number = number//2 
     print(str(number)) 
    elif number%2 == 1: 
     number = 3*number+1 
     print(str(number)) 
    else: 
     break 

然後,如果你輸入20,將打印:

enter a number20 
10 
5 
16 
8 
4 
2 
1 
+0

非常感謝。它的工作,我現在對這個問題感到無聊。 – Vish

+0

@Vish如果您單擊此問題旁邊的複選標記,它會將其標記爲已接受,這基本上意味着它適合您。 – anonymoose