2017-08-04 12 views
-2

我创建就像游戏中的代码“地板是熔岩” 有包含每个人的生活清单,但我需要减少相应的播放器是否或不被索引:您可以减少列表的索引吗?

lives = [5 for x in range(players)]

存在,使得对谁出的是列表,或者没有一个变量:

outers = list(input("Input a list of yes or no for who is out: ")) 

这样做下面的代码没有工作:

for x, y in zip(outers, lives): 
    if x == "yes": 
     lives[y] -= 1 

有人可以帮忙。

+0

我认为你选择了错误的数据结构,'dict'或'collections.Counter'会更容易增加/减少 –

+0

你能够创建一个'dict',它有一定数量的键,具体取决于变量'球员'就像我有名单'生命' – ProgrammingIsFun

回答

0

你的问题来自于这样一个事实,即y是生命的一部分而不是索引。

我相信

for k in range(len(outers)): 
    if outers[k]=="yes": 
     lives[k]-=1 

会给你你想要

+0

它没有工作:( – ProgrammingIsFun

3

什么这是一个很好的用例list comprehension

lives = [5, 5, 5, 5, 5] 
outers = ['yes', 'no', 'yes', 'yes', 'no'] 
lives = [i-1 if j == 'yes' else i for i,j in zip(lives, outers)] 

输出:

>>> lives = [5, 5, 5, 5, 5] 
>>> outers = ['yes', 'no', 'yes', 'yes', 'no'] 
>>> lives = [i-1 if j == 'yes' else i for i,j in zip(lives, outers)] 
>>> 
>>> lives 
[4, 5, 4, 4, 5] 
>>> 
+0

unfourtunetly不:(: – ProgrammingIsFun

+1

有什么问题? – ettanany

+0

可能OP实际上打算在“否”结果上递减,但是这个语法是现货。 – asongtoruin

相关问题