允许raw_input使用列表中的项目作为答案

时间:2015-10-26 23:11:43

标签: python python-2.7

假设我有一个列表,我希望用户能够使用列表项作为答案,并使用if语句来检查列表。如果我没有解释清楚,这段代码可能会清除我正在尝试做的事情:

list = ['a', 'b', 'c', 'd', 'e']
input = raw_input("Choose a letter.: ")
if input == letter in list:
    #do something

我的问题是当玩家输入列表项时,如何设置if语句来引用项目列表。一个更复杂,更相关的例子可能是:

spells = ['fireball', 'iceball', 'lightning bolt', 'firestorm', 'heal', 'paralyze']
equipped_spells = ['fireball', 'iceball']

print equipped_spells
attack = raw_input("Type the name of a spell you want to use.: ")
if attack == spell in spells:
    #initiate combat loop

我希望玩家能够从他/她的装备法术列表中输入一个咒语,并让if语句引用全局法术列表,以查看该咒语名称是否为有效咒语。

也许可能有更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:2)

由于我们不是野人,只要求用户输入足够的法术就可以明确。

spells = ['fireball', 'iceball', 'lightning bolt', 'firestorm', 'heal', 'paralyze']
equipped_spells = ['fireball', 'iceball']

print equipped_spells
while True:
    inp = raw_input("Type the name of a spell you want to use.: ").lower()
    lst = [x for x in spells if x.startswith(inp)]
    if len(lst) == 0:
        print "No such spell"
    elif len(lst) == 1:
        spell = lst[0]
        break
    else:
        print "Which of", lst, "do you mean?"

print "You picked", spell
['fireball', 'iceball']
Type the name of a spell you want to use.: fir
Which of ['fireball', 'firestorm'] do you mean?
Type the name of a spell you want to use.: fireb 
You picked fireball

答案 1 :(得分:1)

检查攻击是否在法术列表中:

if attack in spells:

您可能还想在列表中找到它的位置:

spell_pos = spells.index(attack)