尝试找到错误的时间如此令人沮丧。对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”。在这里找不到导致问题的原因?
答案 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))
格式将为您转换为字符串