Как я могу избежать ValueError: неверный литерал для int() с основанием 10: ''?

Я работаю над программой, предназначенной для шифрования сообщений, вводимых пользователем. После завершения процесса шифрования я хотел бы, чтобы программа предлагала пользователю выбрать, хотят ли они зашифровать другое сообщение или нет.

    option2 = int(input('Would you like to encrypt another message? (Yes = 1 and No = 2)'))
    while option2 not in [1, 2]:

        print 'Please type 1 or 2.'
        option2 = int(raw_input())
    while True:
        option2 = int(raw_input())
        if option2 == 1:
            option1 = int(input('Which encryption method would you like to use? 1 = Across (NOPQ ...) and 2 = Backwards (ZYXW ...)'))
    while True:
        option2 = int(raw_input())
        if option2 == 2:
            break

Этот код приводит к

"ValueError: недопустимый литерал для int() с основанием 10: ''"

ошибка, с которой я никогда раньше не сталкивался. Как я могу это исправить?


person Mariofan717    schedule 20.11.2017    source источник
comment
Это означает, что пользователь ничего не вводил. Если вы убедитесь, что пользователь что-то вводит, это сработает. Вы также можете использовать попытку и исключение   -  person whackamadoodle3000    schedule 20.11.2017
comment
Относится к stackoverflow. ком/вопросы/47381636/   -  person Shadow    schedule 20.11.2017


Ответы (1)


Проблема в том, что вы пытаетесь преобразовать в int в первой строке, когда делаете:

int(input(...

Сохраните ввод в строке, проверьте

 option2 not in ['1', '2']

И эта часть должна работать.

Попробуйте проверить ответы здесь, чтобы получить советы о том, как улучшить ваше меню: Создание меню в Python

person Pablo Oliva    schedule 20.11.2017