Python: ошибка «Ошибка типа: не удается неявно преобразовать int в str» - PullRequest
0 голосов
/ 26 ноября 2018

Имея такое разочаровывающее время, пытаюсь найти ошибку в этом.Очень плохо знаком с Python (первый год, студент 3-й недели в универе).

age = int(input("Enter your current age in years: "))
if age >= 100:
    print("You've already turned 100!")
elif age < 0:
    print("Try again after you are born!")
else:
    print("You will be 100 in " + (100 - age) + " years!")

Это выдает ошибку «TypeError: Невозможно не преобразовать int в str», если я введу значение среднего диапазона, например18. Я не могу найти причину проблемы здесь

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

имеет отношение к этой строке:

print("You will be 100 in " + (100 - age) + " years!")

изменить на:

print("You will be 100 in {} years!".format((100 - age))

формат позаботится о преобразовании в строку для вас

0 голосов
/ 26 ноября 2018

Ваше заявление о печати является виновником здесь.Когда вы выполняете вычитание, результатом вашей операции является нестроковый тип.В вашем случае это всегда будет int, поскольку вы преобразуете свой ввод в целочисленное, когда читаете его (именно здесь ваша программа потерпит неудачу, если пользователь введет нецелые числа).Оператор print пытается объединить две строки и одно целое число, и он завершается неудачей, поэтому вы получаете ошибку TypeError.

Итак, ваше исправление относительно простое: приведите результат вычитания к строке перед тем, как соединить его с другими строками.

print("You will be 100 in " + str(100 - age) + " years!")
0 голосов
/ 26 ноября 2018

Причина в том, что он не выполняет первое условие и переходит к блоку else.Затем он пытается выполнить этот оператор print("You will be 100 in " + (100 - age) + " years!").Оператор пытается напечатать переменную age, которая изначально имеет тип int.Однако, чтобы напечатать это, переменная должна иметь тип str.Поэтому он пытается неявно преобразовать int в str, чего не может сделать (отсюда и ошибка).

Чтобы исправить это, просто используйте функцию str(), чтобы преобразовать из intstr явно

print("You will be 100 in " + str(100 - age) + " years!")
...