def equip(item):
x = True
while x == True:
if len(bag_sword) > 1:
print "You can't have 2 weapons equipped!"
break
if len(bag_chest) > 1:
print "You can't have 2 chestplates equipped!"
break
if len(bag_gloves) > 1:
print "You can't have 4 gloves equipped!"
break
if len(bag_helmet) > 1:
print "You can't have 2 helmets equipped!"
break
if item == "iron sword" and "iron sword" in bag:
print "\nYou equip the Iron Sword"
bag.remove("iron sword")
bag_sword.append("iron sword")
break
每当我放入"铁剑"之后我第二次运行此功能进入bag_
之一,并尝试添加另一个来测试它,它没有做任何事情,代码完全冻结。
bag_
是所有列表。
我的猜测是,while循环被卡住,每当我在游戏中将某些内容放入列表时,它并没有改变长度,因为那不是语言的工作原理吗?
答案 0 :(得分:3)
一旦你在包里加了一把剑,你的条件都没有。您的len(bag_sword)
正好为1,(因此if len(bag_sword) > 1:
无法匹配),'iron sword' in bag
为假。
由于您的if
个语句都不匹配,因此不会执行break
,并且您的while
循环会一直持续。
您不想测试bag_sword
中是否有多个项目。测试该包中是否有任何项目:
if bag_sword: # true if not empty
print "You can't have 2 weapons equipped!"
break
因为您在添加第二件武器之前正在测试。
答案 1 :(得分:0)
整个代码都是废话。 首先,您正在处理列表而不是字典。
你不能用Python"打破"关键词。在Python中存在if,elif和else关键字。
item是您在函数中传递的参数。
关键字len([' item',' two']) 给出结果集2, 列表只有值,并且元素在列表中按编号提取。
例如: mylist = ['你好','世界']
打印mylist [0]会导致' hello'
让自己更熟悉内置类型: https://docs.python.org/2/library/stdtypes.html
以下是一些示例代码:
bag_s = {'bag_sword':0,'bag_chest':0,'bag_gloves':0,'bag_helmet':0,'iron sword':0}
def equip(item):
its = item.keys()
for itx in its:
if itx == 'bag_sword':
if item[itx] > 1:
print 'you can\'t have 2 weapons erquipped'
elif itx == 'bag_chest':
if item[itx] > 1:
print 'you can\'t have 2 weapons erquipped'
elif itx == 'bag_gloves':
if item[itx] > 1:
print 'you can\'t have 2 weapons erquipped'
elif itx == 'bag_helmet':
if item[itx] > 1:
print 'you can\'t have 2 weapons erquipped'
elif itx == 'iron sword':
if item[itx] > 1:
print 'you can\'t have 2 weapons erquipped'
if item[itx] == 1:
bag_s[itx]+=1
equip({'bag_sword':1})
print bag_s