我为我和我的朋友们制作了一个奇怪的不和谐机器人,并且代码的一部分涉及创建一个字典,该字典可以包含包含项目名称的列表,以及它的成本。
作为参考,一个名为" userShop"拥有这样的东西:
{'DiscordName#0000': [23, 'test item']}
,其中不和谐名称是不言自明的,int是项目的成本,字符串是项目的名称。
为了购买&#34;该项目,用户在命令!buyitem <cost> <name>
中键入,这将启动以下代码片段:
@bot.command(pass_context=True)
async def buyitem(ctx, buyFrom: str, *, item: str):
userName = str(ctx.message.author)
for itemName, cost in userShop[buyFrom]:
if itemName == item:
#blah blah blah
返回错误
for itemName, cost in userShop[buyFrom]:
TypeError: 'int' object is not iterable
我该怎么做才能解决这个问题? 感谢。
答案 0 :(得分:2)
如果userShop[buyFrom]
是这样的列表[23, 'test item']
,则无法使用in
直接将两个值分配给两个变量。
您应该使用:
itemName = userShop[buyFrom][0]
cost = userShop[buyFrom][1]
if itemName == item:
#blah blah blah