1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】TypeError: リストにはリストしか連結できない(「str」ではない)

2022-01-03 05:30:21

質問

RPGで使用するインベントリプログラムを作ろうとしています。このプログラムは、物を追加したり削除したり、そしてリストに追加することができる必要があります。これは私が今までに持っているものです。

inventory=["sword","potion","armour","bow"]
print(inventory)
print("\ncommands: use (remove) and pickup (add)")
selection=input("choose a command [use/pickup]")

if selection=="use":
    print(inventory)
    remove=input("What do you want to use? ")
    inventory.remove(remove)
    print(inventory)

elif selection=="pickup":
    print(inventory)
    add=input("What do you want to pickup? ")
    newinv=inventory+str(add)
    print(newinv)

これを実行して、何かを拾おうとすると、こんなエラーが出ます。

Traceback (most recent call last):
  File "H:/Year 10/Computing/A453/Python Programs/inventory.py", line 15, in <module>
    newinv=inventory+str(add)
TypeError: can only concatenate list (not "str") to list

どなたか修正方法をご存知の方はいらっしゃいませんか?

解決方法を教えてください。

あなたがしたいことは、リストに新しいアイテムを追加することだと思います。 newinv=inventory+str(add) をこのように変更します。

newinv = inventory.append(add)

今あなたがしていることは、リストと文字列を連結しようとしていることで、これはPythonでは無効な操作です。

しかし、あなたが望んでいるのは、リストに項目を追加したり削除したりすることだと思うので、その場合は if/else ブロックが必要です。

if selection=="use":
    print(inventory)
    remove=input("What do you want to use? ")
    inventory.remove(remove)
    print(inventory)

elif selection=="pickup":
    print(inventory)
    add=input("What do you want to pickup? ")
    inventory.append(add)
    print(inventory)

新しいアイテムを追加するたびに、新しいインベントリーリストを構築する必要はありません。