Странная ошибка в Python 3.2 - PullRequest
       11

Странная ошибка в Python 3.2

0 голосов
/ 07 апреля 2011

Следующий код должен найти среднее значение для заданного входного набора чисел.

#!/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 :. Кто-нибудь может сказать мне, что здесь происходит?

Заранее спасибо.

1 Ответ

1 голос
/ 07 апреля 2011

Ваша проблема заключается в копировании и вставке.

Строка

number = int(line)

Генерирует ошибку

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

Это означает, что строка

line = input("integer: ")

Должно быть, получен ввод:

'integer: 6'

И единственный способ, которым он мог бы получить это, - если это то, что вы ввели.Очевидно, вы не будете настолько глупы, чтобы набрать в "integer: 6".Следовательно, единственная причина, по которой это происходит, заключается в том, что вы вырезали и вставляли свой предыдущий ввод, не замечая, что вы многое получили при копировании, что происходит со мной все время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...