Цикл, который использует try/except для ввода и повторяется до тех пор, пока не будет введено «готово»

Я новичок в кодировании на Python, и я пытаюсь написать цикл, который запрашивает числовой ввод и читает его до тех пор, пока пользователь не введет «готово», после чего он выйдет из цикла и распечатает переменные: число, количество и средний. (не пытаясь сохранить что-либо в списке)

Я также хочу, чтобы он печатал «недопустимый ввод» и продолжал цикл, если пользователь вводит что-то, что не является целым числом, если только это не «сделано».

К сожалению, он возвращает «неверный ввод» и продолжает зацикливаться, даже когда я ввожу «готово». Что я делаю не так? Может ли кто-нибудь указать мне в правильном направлении?

number = 0
count = 0
avg = 0
inp = 0
while True:
    try:
        inp = int(raw_input('Enter a number: '))
        if inp is 'done':    
            number = number + inp
            count = count + 1
            avg = float(number/count)
            break
    except:
        print 'Invalid input'
print number
print count
print float(avg)

person RTheAwesome    schedule 17.10.2014    source источник
comment
Вы когда-нибудь думали о том, как int(something) может когда-либо равняться 'done'????? И если чудесным образом inp станет 'done', чего же вы надеялись достичь с помощью number = number + inp?????   -  person barak manos    schedule 17.10.2014
comment
Кроме того: использование except без перехвата определенного исключения может затруднить отладку кода.   -  person mechanical_meat    schedule 17.10.2014
comment
Спасибо, барак, по какой-то причине часть int() не слишком приходила мне в голову. Но если бы я не испортил эту часть, чтобы сделать это можно было присвоить inp, я хотел бы затем взять inp и добавить его к номеру, а затем присвоить это значение номеру, чтобы программа позже распечатала сумму чисел, введенных повсюду. это итерации цикла после разрыва цикла с помощью «готово». Должен ли я теперь вместо этого преобразовывать пользовательский ввод в целое число в теле оператора if?   -  person RTheAwesome    schedule 17.10.2014


Ответы (1)


person    schedule
comment
Это работает, но я хочу сделать это, используя try/except. - person RTheAwesome; 17.10.2014