web-dev-qa-db-ja.com

Python:TypeError: 'str'と 'int'オブジェクトを連結できません

整数に文字列を追加するこの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

整数に文字列を追加する方法

134
user1581649

最後のprintステートメントによって引き起こされる問題を解決するには2つの方法があります。

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
166
Levon

str(c)cnew文字列表現を返し、c自体は変更しません。

c = str(c) 

おそらくあなたが探しているものです

72
jamylak

Intまたはfloatを文字列に連結したい場合は、これを使用する必要があります。

i = 123
a = "foobar"
s = a + str(i)
21
Thargor
c = a + b 
str(c)

実際、この最後の行では、変数cの型を変更していません。もしあなたがそうするなら

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

それはうまくいくはずです。

6
user2919374

最も簡単で混乱の少ない解決策:

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/

1
Shekhar

これで、変数を "、"で区切っているエラーをなくすことができました。

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

これが出力です

値は-113

(プログラムはコード0で終了しました)

1
Mansur Ali

"TypeError: 'str'と 'int'オブジェクトを連結できません"というエラーメッセージも表示されました。印刷時に変数の周囲に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に非常に不慣れな初心者にとっては、それは起こります。

0
djmurps

文字列関数を使ってintstrに変換することができます。

user = "mohan"

line = str(50)

print(user + "typed" + line + "lines")
0
Cmpmohan Mohan

他の答えとは別に、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

0