0

有如此令人沮丧的时间试图找出其中的错误。对 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: Can't convert int to str implicitely”。我在这里找不到导致问题的原因?

4

3 回答 3

1

原因是它在第一个条件下失败并进入else块。然后它尝试执行这个print("You will be 100 in " + (100 - age) + " years!")语句。该语句试图打印age变量,该变量最初是一种int类型。但是,要打印它,变量必须是str类型。因此,它试图隐式转换intstr,这是它无法做到的(因此出现错误)。

要解决这个问题,只需使用str()函数,将 from 转换intstr显式

print("You will be 100 in " + str(100 - age) + " years!")
于 2018-11-26T09:50:23.800 回答
1

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

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

print("You will be 100 in " + str(100 - age) + " years!")
于 2018-11-26T09:53:20.563 回答
-1

与这一行有关:

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

改成:

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

format 将为您处理转换为字符串

于 2018-11-26T09:50:42.793 回答