【问题标题】:Python: TypeError: cannot concatenate 'str' and 'int' objects [duplicate]Python:TypeError:无法连接“str”和“int”对象[重复]
【发布时间】:2012-08-04 08:32:55
【问题描述】:

我有这个将字符串添加到整数的 python 程序:

a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: " + a + b
a = int(a)
b = int(b)
c = a + b
str(c)
print "a + b as integers: " + c

我收到此错误:

Python: TypeError: cannot concatenate 'str' and 'int' objects

如何将字符串添加到整数?

【问题讨论】:

    标签: python string printing integer


    【解决方案1】:

    有两种方法可以解决由最后一个print 语句引起的问题。

    您可以将str(c) 调用的结果分配给@jamylak 正确显示的c,然后连接所有字符串,或者您可以简单地将最后一个print 替换为:

    print "a + b as integers: ", c  # note the comma here
    

    在这种情况下

    str(c)
    

    不是必须的,可以删除。

    样本运行的输出:

    Enter a: 3
    Enter b: 7
    a + b as strings:  37
    a + b as integers:  10
    

    与:

    a = raw_input("Enter a: ")
    b = raw_input("Enter b: ")
    print "a + b as strings: " + a + b  # + everywhere is ok since all are strings
    a = int(a)
    b = int(b)
    c = a + b
    print "a + b as integers: ", c
    

    【讨论】:

      【解决方案2】:

      str(c) 返回cnew 字符串表示,并且不会改变c 本身。

      c = str(c) 
      

      可能就是你要找的东西

      【讨论】:

      • 我认为str(c) 对于程序来说根本不需要(尽管你所说的必须分配函数的结果是正确的)
      • 没必要我同意,但这就是它不能按原样工作的原因。
      • 你可以把它留在里面,它不会造成问题(就像它并没有真正做任何事情一样:)
      • 如果你删除它,你必须将以下行改为print "a + b as integers: ", c
      • @Levon I +1d 为您提供“替代”方法
      【解决方案3】:

      如果你想连接 int 或 floats 到一个字符串,你必须使用这个:

      i = 123
      a = "foobar"
      s = a + str(i)
      

      【讨论】:

        【解决方案4】:
        c = a + b 
        str(c)
        

        实际上,在最后一行中,您并没有更改变量 c 的类型。如果你这样做了

        c_str=str(c)
        print "a + b as integers: " + c_str
        

        它应该可以工作。

        【讨论】:

          【解决方案5】:

          除了其他答案,也可以使用format()

          print("a + b as integers: {}".format(c))

          例如-

          hours = 13
          minutes = 32
          print("Time elapsed - {} hours and {} minutes".format(hours, minutes))
          

          将导致输出 - Time elapsed - 13 hours and 32 minutes

          查看docs了解更多信息。

          【讨论】:

            【解决方案6】:

            您可以使用字符串函数将int 转换为str

            user = "mohan"
            
            line = str(50)
            
            print(user + "typed" + line + "lines")
            

            【讨论】:

            • 这已经被其他人回答了。您的回答没有添加任何内容。
            【解决方案7】:

            最简单、最不容易混淆的解决方案:

            a = raw_input("Enter a: ")
            b = raw_input("Enter b: ")
            print "a + b as strings: %s" % a  + b
            a = int(a)
            b = int(b)
            c = a + b
            print "a + b as integers: %d" % c
            

            我在http://freecodeszone.blogspot.com/找到了这个

            【讨论】:

              【解决方案8】:

              我也收到了错误消息“TypeError: cannot concatenate 'str' and 'int' objects”。事实证明,我只是在打印变量时忘记在变量周围添加 str() 。这是我的代码:

              def main():
              	rolling = True; import random
              	while rolling:
              		roll = input("ENTER = roll; Q = quit ")
              		if roll.lower() != 'q':
              			num = (random.randint(1,6))
              			print("----------------------"); print("you rolled " + str(num))
              		else:
              			rolling = False
              main()

              我知道,这是一个愚蠢的错误,但对于像我这样对 python 非常陌生的初学者来说,它会发生。

              【讨论】:

                【解决方案9】:

                这就是我为摆脱使用“,”分隔变量的错误所做的工作。

                # Applying BODMAS 
                arg3 = int((2 + 3) * 45 / - 2)
                arg4 = "Value "
                print arg4, "is", arg3
                

                这是输出

                值为-113

                (程序退出代码:0)

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-10-23
                  • 2014-08-19
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-01-19
                  相关资源
                  最近更新 更多