Python - TypeError:元组索引必须是整数或切片,而不是str [duplicate]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - TypeError:元组索引必须是整数或切片,而不是str [duplicate]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
当我试图在我的'shop'中购买东西时,shell崩溃时出现“TypeError:tuple indices必须是整数或切片,而不是str”消息。此外,代码运行良好,直到我尝试购买东西。
def store():
os.system('cls')
print("Welcome to the shop!")
print("What would you like to buy?")
print("1.) Greatsword - 40 gold")
print("0.) Back")
print(' ')
option = input(' ')
if option in weapons:
if PlayerIG.gold >= weapons[option]:
os.system("cls")
PlayerIG.gold -= weapons[option]
PlayerIG.weap.append(option)
print("You have bought %s!" % option)
option = input(' ')
store()
else:
os.system('cls')
print("You cannot afford this.")
option = input(' ')
store()
elif option == "Back":
start1()
else:
os.system("cls")
print("That item does not exist.")
option = input(' ')
store()
然后我收到这个错误:
Traceback (most recent call last):
File "C:UsersChrisDesktopAmalgia ArenaAmalgiaArena.py", line 284, in <module>
main()
File "C:UsersChrisDesktopAmalgia ArenaAmalgiaArena.py", line 60, in main
start()
File "C:UsersChrisDesktopAmalgia ArenaAmalgiaArena.py", line 90, in start
start1()
File "C:UsersChrisDesktopAmalgia ArenaAmalgiaArena.py", line 109, in start1
store()
File "C:UsersChrisDesktopAmalgia ArenaAmalgiaArena.py", line 262, in store
if PlayerIG.gold >= weapons[option]:
TypeError: tuple indices must be integers or slices, not str
我看过其他具有相同错误及其解决方案的代码,但我对Python非常陌生,因此我无法弄清楚我需要修复的内容。如果我需要发布更多代码,那么我会。此外,我是这个网站的新手,所以如果你想因为某种原因(坏问题,坏代码等)打击我,那么请这样做。我愿意学习:D
答案
input
的返回值是一个字符串,只需添加weapons[int(option)]
即可更改为整数。
编辑:撤消上述内容。你所做的只是将weapons
定义为元组而不是字典。只需将定义更改为weapons = {'Greatsword', 40}
即可
以上是关于Python - TypeError:元组索引必须是整数或切片,而不是str [duplicate]的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:列表索引必须是整数或切片,而不是尝试制作二维列表时的元组
Python错误:TypeError:getsockaddrarg:AF_INET地址必须是元组,而不是int
Python:TypeError:字符串索引必须是整数[关闭]