【问题标题】:TypeError: Can only concatenate str (not "int") to str (simple Python programme)TypeError: Can only concatenate str (not "int") to str (简单的Python程序)
【发布时间】:2020-10-15 21:46:42
【问题描述】:

我编写了这个简单的代码并尝试在 Windows 10 CMD 中执行......它收到了错误消息:

TypeError: Can only concatenate str (not "int") to str

代码:

userName = input('Name: ')
age = input('age: ')

factor = 2

finalAge = age + factor

print('In', factor, 'years you will be', finalAge, 'years old', userName+'!')

我在 Windows 10 中使用 Python 3.7.0

【问题讨论】:

标签: python


【解决方案1】:

代码第 2 行中的 input() 命令会将用户提供的任何输入转换为字符串。因此,当您尝试将该 STRING 添加到数字(浮点数或整数;在您的情况下您有一个整数,即因子 = 2)时,它不会(也不应该!)工作。

因此,要继续进行 + 操作,该 + 号左右两侧的数量必须是相同类型(字符串或数字)

【讨论】:

  • 非常感谢!!!!它解决了问题......我是编程新手,现在我明白 input() 将值作为字符串并将其存储在变量“age”中
【解决方案2】:

TypeError: 只能将 str(不是“int”)连接到 str

此错误表明它只能将字符串连接到字符串。 在您的程序中,您尝试连接字符串和整数

输入命令只会从用户那里获取字符串,用户输入的年龄应该作为字符串。示例:'45'、'25'、36 等。

这个程序正在尝试连接 '45' + 2 。这会引发此错误。

相反,您可以尝试将用户输入转换为 int,然后进行连接。

userName = input('Name: ')
age = int(input('age: '))
finalAge = age + factor
factor = 2
finalAge = age + factor
print('In ', factor, 'years you will be', finalAge, 'years old', userName, '!')

【讨论】:

    【解决方案3】:

    Python 是强类型的,所以除非你告诉它,否则它不会进行类型强制。

    如果您尝试将数字添加到字符串中,则会出现该错误,因为根据第一个操作数,它认为您想要连接字符串。

    如果您尝试将字符串添加到数字中,则会得到“不支持的操作数类型”,但这是同样的问题。

    如果要将字符串中的数字转换为可以添加的 int,请使用 int()。如果要将数字值转换为可以连接的字符串,请使用str()

    【讨论】:

      【解决方案4】:
      userName = input('Name: ')
      age = input('age: ')
      
      factor = 2
      
      finalAge = int(age) + factor
      
      print('In', factor, 'years you will be', finalAge, 'years old', userName+'!')
      

      【讨论】:

        【解决方案5】:

        您将字符串添加到 int,因为 input() 函数返回一个字符串。使用int(input('age: '))

        【讨论】:

          【解决方案6】:

          将年龄转换为整数以进行数学运算:

          finalAge = int(age) + factor
          

          作为奖励,您可以使用 .format() 选项:

          print("In {0} years you will be {1} years old, {2}!".format(factor, finalAge, userName))
          

          【讨论】:

            【解决方案7】:

            在python中,你不能连接两个完全不同的数据类型。

            1) 1 + 1 = 2
            2) '1' + '1' = '11' (string within quotes)
            3) '1' + 1 = ??
            

            想一想……

            嗯,在 C 等其他编程语言中,整数将被转换为 char(或字符)并进行操作 2...

            因此,在这种情况下,您需要使用函数int()str(或字符串)数据类型显式转换为整数(或int)。

            语法:int('<some string>')

            示例:int('7') 将产生 7

            因此,您要么需要将输入作为 integer,要么在计算 finalAge 时将字符串转换为整数:

            age = int(input('age: '))
            

            或者

            finalAge = int(age) + factor
            

            【讨论】:

              【解决方案8】:

              在python中,你不能连接两个完全不同的数据类型。

              1) 1 + 1 = 2
              2) '1' + '1' = '11' (string within quotes)
              3) '1' + 1 = ??
              

              想一想……

              嗯,在 C 等其他编程语言中,整数将被转换为 char(或字符)并进行操作 2...

              因此,在这种情况下,您需要使用函数int()str(或字符串)数据类型显式转换为整数(或int)。

              语法:int('<some string>')

              示例:int('7') 将产生 7

              因此,您要么需要将输入作为 integer,要么在计算 finalAge 时将字符串转换为整数:

              age = int(input('age: '))
              

              或者

              finalAge = int(age) + factor
              

              【讨论】:

              • 不客气。请标记一个答案,以便清楚地回答问题。
              • @Madushk 我已经提供了一些关于您的问题的概念解释。看看吧……
              【解决方案9】:

              Python 3.7 这将做你想做的事。

              userName = input('Name: ')
              age = int(input('age: '))
              factor = 2
              finalAge = age + factor
              print("In", + factor, "years you will be", + finalAge, "years old " + userName + "!")
              

              【讨论】:

              • 可能还想指出我对 Python 很陌生。我会继续在那里抛出一些错误处理来捕获 valueEror 和 typeError。如果不是,您会发现有人在您的 int 输入中输入字符串并破坏您的代码。
              【解决方案10】:

              我在使用 django 时遇到了同样的问题,我通过清除 chrome 缓存解决了这个问题

              【讨论】:

              • 这里不是这样。
              【解决方案11】:

              我认为这种类型的错误: TypeError:只能将 str(不是“float”)连接到 str

              原因是 Python 使用逗号 (,) 将 print() 函数中的所有元素粘在一起。与 Java 稍有不同的是,它们使用加号 (+) 来粘贴并输出结果。

              注意:仔细检查所有 print() 函数,看看你有没有放 + 号,它应该被替换为 ,

              【讨论】:

                猜你喜欢
                • 2022-11-01
                • 2020-11-21
                • 2021-08-18
                • 1970-01-01
                • 2019-02-02
                • 2020-02-29
                • 2020-09-18
                • 2023-02-25
                • 1970-01-01
                相关资源
                最近更新 更多