Я начинаю Python и использую PyCharm для упражнения.
После ввода следующего кода:
promotion_percentage = int(input('Enter a integer from 1 to 100: '))
Затем возникает ошибка:
ValueError: неверный литерал для int() с базой 10: ''
Я прочитал довольно много вопросов и ответов на форуме. Но их дела выглядят более сложными, чем мои.
Откуда возникает ошибка?
Вы пытаетесь преобразовать что-то, что не является целым числом. Я могу воспроизвести проблему, когда я набираю любой альфа-символ.
Более простой способ увидеть, что происходит, это сделать ввод его собственной переменной и пройти через отладчик.
Попробуйте что-то вроде этого и посмотрите, что печатается перед утверждением.
var = input('Enter a integer from 1 to 100: ')
print(repr(var), type(var))
assert var.isalnum(), "var should be only numbers"
promotion_percentage = int(var)
print(promotion_percentage, type(promotion_percentage))
Обратите внимание, что когда я печатаю только цифры, ваш код работает.
Enter a integer from 1 to 100: 234
'234' <class 'str'>
234 <class 'int'>
но когда я даю ему нецелое число...
Enter a integer from 1 to 100: abc
'abc' <class 'str'>
Traceback (most recent call last):
ValueError: invalid literal for int() with base 10: 'abc'
Чтобы объяснить возникшую ошибку, ваш ввод представляет собой пустую строку. Это происходит, когда вы нажимаете клавишу ввода, не набрав ничего. В этом случае я буду следовать рекомендациям этого сообщения.
var = input('Enter a integer from 1 to 100: ')
print(repr(var), type(var))
assert var.isalnum(), "var should be only numbers"
if not var:
# ask them again?
# exit script?
# set a default value?