2011-12-25 38 views
1

此代碼是來自python書籍的示例代碼。這是一個簡單的程序,用於輸入整數並顯示總和,總數和整數的平均值。但是,當我嘗試運行代碼時,在第18行冒號處收到語法錯誤。這段代碼對我來說看起來非常好。有任何想法嗎?簡單Python 3.2.2程序中的語法錯誤

print("type integers, each followed by Enter; or just Enter to finish") 

total = 0 
count = 0 

while True: 
    line = input("integer: " 
    if line: 
     try: 
      number = int(line) 
     except ValueError as err: 
      print(err) 
      continue 
    total += number 
    count += 1 
    else: 
     break 
if count: 
    print("count=", count, "total =", total, "mean =", total/count) 

當我嘗試運行它,我得到一個錯誤:

File "./intproj.py", line 18 
    else: 
    ^
SyntaxError: invalid syntax 

我在Ubuntu 11.10使用IDLE作爲一個IDE使用Python 3.2.2


更新代碼:

print("type integers, each followed by Enter; or just Enter to finish") 

total = 0 
count = 0 

while True: 
    line = input("integer: ") 
    if line: 
     try: 
      number = int(line) 
     except ValueError as err: 
       print(err) 
       continue 
    total += number 
    count += 1 
    else: 
     break 
if count: 
    print("count=", count, "total =", total, "mean =", total/count) 

現在得到錯誤:

File "./intproj.py", line 18 
    else: 
    ^
SyntaxError: invalid syntax 

固定碼:

print("type integers, each followed by Enter; or just Enter to finish") 

total = 0 
count = 0 

while True: 
    line = input("integer: ") 
    if line: 
     try: 
      number = int(line) 
     except ValueError as err: 
       print(err) 
       continue 
     total += number 
     count += 1 
    else: 
     break 
if count: 
    print("count=", count, "total =", total, "mean =", total/count) 

謝謝!

+0

好吧,上一行似乎缺少一個')'line = input(「integer:」' – 2011-12-25 21:25:53

+1

你已經改變了你的問題以迴應我們的答案,這使得這個問題變得不那麼有用。這將是發佈原始的,水平線,然後發佈您的編輯以迴應我們的回答。 – 2011-12-25 21:50:20

回答

1

您忘記關閉上一行的input()致電。

1

你需要一個右括號:

line = input("integer: ") 
+0

@Fredrik:請參閱http:// en。wikipedia.org/wiki/Bracket – 2011-12-25 21:32:32

+0

已修復,現在在「else」第18行出現類似錯誤,第18行 – 2011-12-25 21:33:00

+0

@BillyBach,「except」的縮進與「try」的縮進不匹配 - 仍然獲得「try」 – 2011-12-25 21:36:09

6

9號線,似乎缺少了)

變化:

line = input("integer: " 

line = input("integer: ") 

except行需要縮進以匹配try

和行:

total += number 
count += 1 

需要縮進以及否則,ifelse語句不排隊。即代碼應該是這樣的:

print("type integers, each followed by Enter; or just Enter to finish") 

total = 0 
count = 0 

while True: 
    line = input("integer: ") 
    if line: 
     try: 
      number = int(line) 
     except ValueError as err: 
      print(err) 
      continue 
     total += number 
     count += 1 
    else: 
     break 
if count: 
    print("count=", count, "total =", total, "mean =", total/count) 
+0

謝謝!修復它。 – 2011-12-25 21:58:39

0

除了右括號問題,你行,說except ValueError as err:是不夠的縮進(其縮進級別應匹配的try語句)。這應該修復上面提到的錯誤18 else錯誤。

+0

通過「它應該匹配的try語句」你的意思是:嘗試:然後語句在同一級別的try:或一個在try:語句? – 2011-12-25 21:45:34

+0

'try'和'except'行的前面應該有相同數量的空格。弗雷德裏克回答得比我好,你應該看看他的答案 – ianweller 2011-12-25 21:54:03

0

total +=count +=開頭的行需要以8個空格而不是4個空格開始。