次のコードで問題が発生しています:
if verb == "stoke":
if items["furnace"] >= 1:
print("going to stoke the furnace")
if items["coal"] >= 1:
print("successful!")
temperature += 250
print("the furnace is now " + (temperature) + "degrees!")
^this line is where the issue is occuring
else:
print("you can't")
else:
print("you have nothing to stoke")
結果のエラーは次のように表示されます。
Traceback(most recent call last):
File "C:\Users\User\Documents\Python\smelting game 0.3.1 build
incomplete.py"
, line 227, in <module>
print("the furnace is now " + (temperature) + "degrees!")
TypeError: must be str, not int
名前をtempからtemperatureに変更し、温度の周りにブラケットを追加したため、問題が何であるかはわかりませんが、それでもエラーが発生します。
print("the furnace is now " + str(temperature) + "degrees!")
str
にキャストします
Pythonには、文字列をフォーマットするさまざまな方法が用意されています。
リッチフォーマッティングミニ言語をサポートする新しいスタイル.format()
:
>>> temperature = 10
>>> print("the furnace is now {} degrees!".format(temperature))
the furnace is now 10 degrees!
古いスタイル%
形式指定子:
>>> print("the furnace is now %d degrees!" % temperature)
the furnace is now 10 degrees!
新しいf""
フォーマット文字列を使用したPy 3.6では:
>>> print(f"the furnace is now {temperature} degrees!")
the furnace is now 10 degrees!
または、print()
sデフォルトsep
aratorを使用します。
>>> print("the furnace is now", temperature, "degrees!")
the furnace is now 10 degrees!
そして、少なくとも効果的に、str()
にキャストして連結することにより、新しい文字列を作成します。
>>> print("the furnace is now " + str(temperature) + " degrees!")
the furnace is now 10 degrees!
またはjoin()
ing:
>>> print(' '.join(["the furnace is now", str(temperature), "degrees!"]))
the furnace is now 10 degrees!
連結する前にintをstrにキャストする必要があります。そのためにはstr(temperature)
を使用します。または、このように変換したくない場合は、,
を使用して同じ出力を印刷できます。
print("the furnace is now",temperature , "degrees!")