2011-04-07 85 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