【问题标题】:Python: Error "TypeError: Can't convert int to str implicitly"Python:错误“TypeError:无法将 int 隐式转换为 str”
【发布时间】:2018-11-26 17:53:20
【问题描述】:

花了这么多时间试图找出其中的错误。对 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”。我在这里找不到导致问题的原因??

【问题讨论】:

  • 尝试显式类型转换。即..str((100 - age))。还可以尝试阅读并弄清楚错误消息的真正含义。会帮助你很多前进。
  • Python 无法在字符串连接的中间对计算 100 - age 进行隐式转换。尝试将计算包含在字符串转换中:str(100 - age)。这迫使 Python 1) 进行计算,2) 将结果转换为字符串,以及 3) 将其连接到您的输出。另外,请查看用于执行此类操作的 string.format() 方法以及较新的 f-strings。
  • 这很令人困惑,我不是想把它变成一个字符串,但如果我按照你们俩的建议去做,它就会起作用。如果设置为“String”类型,它如何计算?我一直认为它必须是整数或浮点数才能计算!
  • 计算确实需要是数字的,但是一旦 Python 做到了,它需要结果是一个字符串,然后才能与其他字符串执行连接(因为字符串是不可变的)。所以你得到你的数字结果,然后你必须转换它(这就是str 所做的)。现在你有了一个可以加入其他字符串的字符串。
  • 嗯,有道理。感谢您为我解决这个问题:)

标签: python syntax-error typeerror


【解决方案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!")

【讨论】:

    【解决方案2】:

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

    所以您的解决方法相对简单:将减法的结果转换为字符串,然后再将其连接到其他字符串。

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

    【讨论】:

      【解决方案3】:

      与这一行有关:

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

      改为:

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

      format 会帮您转换成字符串

      【讨论】:

        猜你喜欢
        • 2013-09-27
        • 1970-01-01
        • 1970-01-01
        • 2017-12-21
        • 2012-11-19
        • 1970-01-01
        • 1970-01-01
        • 2015-03-23
        相关资源
        最近更新 更多