Python _ValueError: неверный литерал для int () с основанием 10: _очень странный

1

Я начинаю Python и использую PyCharm для упражнения.

После ввода следующего кода:

promotion_percentage = int(input('Enter a integer from 1 to 100: '))

Затем возникает ошибка:

ValueError: неверный литерал для int() с базой 10: ''

Я прочитал довольно много вопросов и ответов на форуме. Но их дела выглядят более сложными, чем мои.

Откуда возникает ошибка?

Теги:

1 ответ

1
Лучший ответ

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

Более простой способ увидеть, что происходит, это сделать ввод его собственной переменной и пройти через отладчик.

Попробуйте что-то вроде этого и посмотрите, что печатается перед утверждением.

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?
  • 0
    Спасибо большое Марсель. Проблема была решена!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню