Python:错误“ TypeError:无法将int隐式转换为str”

时间:2018-11-26 09:45:46

标签: python syntax-error typeerror

尝试找到错误的时间如此令人沮丧。对Python来说是个新手(大学一年级,第三周的学生)。

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!")

如果输入中间值(例如18),则会引发错误“ TypeError:无法将int隐式转换为str”。在这里找不到导致问题的原因?

3 个答案:

答案 0 :(得分:1)

原因是因为它在第一次条件调整时失败,并转到else块。然后,它尝试执行此print("You will be 100 in " + (100 - age) + " years!")语句。该语句试图打印age变量,该变量最初是int类型。但是,要打印该变量,该变量必须为str类型。因此,它试图将int隐式转换为str,这是做不到的(因此会出错)。

要解决此问题,只需使用str()函数,即可将int显式转换为str

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

答案 1 :(得分:1)

您的打印声明是这里的罪魁祸首。当您进行减法运算时,运算的结果是非字符串类型。在您的情况下,它将始终是一个int,因为您在读取输入时将输入转换为整数(如果用户输入非整数,则程序将在此失败)。 print语句尝试连接两个字符串和一个整数,但它失败,因此出现TypeError。

因此您的修复相对简单:将减法的结果转换为字符串,然后再将其加入其他字符串。

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

答案 2 :(得分:-1)

与此行有关:

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

更改为:

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

格式将为您转换为字符串