2011-04-07 70 views
0

以下代碼是查找給定輸入數字集合的平均值。python 3.2中的奇怪錯誤

#!/usr/bin/env python3 
print("Enter some integers") 
count = 0 
total = 0 
while True: 
    line = input("integer: ") 
    if (line): 
     try: 
      number = int(line) 
     except ValueError as err: 
      print(err) 
      continue 
     total += number 
     count += 1 
     #print("Post",line) 
    else: 
     break 
if count: 
    print('Count is ',count ,'Total is ',total,'Mean is ',total/count) 

但是,每當我運行程序,偶數輸入給了我,即使我進入了一些錯誤。以下是示例輸出。

Enter some integers 
integer: 4 
integer: 5 
invalid literal for int() with base 10: 'integer: 5' 
integer: 5 
integer: 6 
invalid literal for int() with base 10: 'integer: 6' 
integer: 
Count is 2 Total is 9 Mean is 4.5 

但是,如果我取消else:語句之前的行註釋,此代碼正常工作。誰能告訴我這裏發生了什麼?

在此先感謝。

+3

你確定這是產生這個錯誤的代碼嗎? – hop 2011-04-07 06:14:09

+1

你可能想嘗試抓住PEBKAC :)它似乎工作正常。我在Python 3.2下測試它(r32:88445,2011年2月21日,01:55:53)。 – 2011-04-07 07:11:13

+0

測試你的代碼,它的工作原理。 – TheDude 2011-04-07 17:48:13

回答

1

你的問題是剪切和粘貼的問題。

number = int(line) 

生成錯誤

invalid literal for int() with base 10: 'integer: 6' 

這意味着線

line = input("integer: ") 

想必收到輸入:

'integer: 6' 

它可能已經收到這個的唯一方法是,如果這是你輸入的。 很明顯,你不會像類型那麼愚蠢的「整數:6」。因此,發生這種情況的唯一原因是,您已經剪切並粘貼了您之前的輸入內容,而沒有注意到您複製時得到的內容太多,這一直都是我發生的事情。

+0

謝謝大家,它看起來問題是與IDE(科莫多編輯)。我在終端上運行了代碼,它工作。 – pogo 2011-05-16 09:53:40