#python #string #integer #operands
#python #строка #целое число #операнды
Вопрос:
Добрый день всем, я новичок в StackOverflow и Python в целом. Я прохожу университетский курс, и я довольно озадачен тем, как определить ошибку операнда, которую я получаю из очень простой программы вычисления и возврата:
currentYear = 2020
age = input("How old were you in 2020, in numbers? ")
birthYear = currentYear - age
print("Your birth year was: " str(birthYear))
Возвращаемая ошибка является ошибкой типа: неподдерживаемые типы операндов для -: ‘int’ и ‘str’
Я попытался удалить конкатенацию в печати, преобразование в строку, и я попытался поместить вычисление переменных «currentYear» и «age» в виде строк. Я также попытался принудительно ввести целое число в переменную «age», вставив формат int(input()). Я уверен, что это очень простая проблема, которую я упускаю из виду, но я в своем уме!
Комментарии:
1. На ваш запрос уже дан ответ, но у этой программы также есть проблема с вычислением времени — это будет один год в зависимости от того, был ли у пользователя день рождения.
2. Спасибо за ответ. Чтобы исправить это, должен ли я установить значение «age» в качестве входных данных минус один? Или я должен расширить область вопроса, чтобы включить месяц в диапазоне от 1 до 12?
3. Теперь вы задаете правильные вопросы… Корректно обращаться со временем сложно.
Ответ №1:
Добро пожаловать! Ваша проблема здесь в том, что age
это строка, потому input
что выводит любую строку, которую дает пользователь. К счастью, вы можете явно преобразовать его в целое число, например:
age = input("How old were you in 2020, in numbers? ")
birthYear = currentYear - int(age)
print("Your birth year was: " str(birthYear))
Примечание: это полностью игнорирует случай, когда ваш пользователь допускает ошибку, и вводимое значение не является числом. Например, если они вводят «восемь» или что-то в этом роде. Однако это совсем другая проблема!
Комментарии:
1. Большое спасибо за ваш ответ! Я потерял первую строку кода, надеюсь, это ничего не изменит в ответе. Я понимаю проблему, из-за которой пользователь может не вводить правильное значение — я могу предотвратить это, используя формат int(input(«») и указав пользователю, что им нужно использовать целые числа, верно?
2. это правильно, да! Пропущенная строка в порядке. Это было целое число, которое я предполагал, так что, надеюсь, это сработает для вас
3. Ваше изменение действительно сработало! Я также задал вопрос моему преподавателю модуля, как только смог с ними связаться, и они сказали, что либо ваше решение, либо решение int(input(«») будет одинаково действительным. Еще раз спасибо за вашу помощь.