2015-10-26 48 views
0

假設我有一個列表,並且我希望用戶能夠使用列表項作爲他們的答案,並且使用if語句來檢查所述列表。如果我沒有解釋說好了,這個代碼可以清理我想要做的事:允許raw_input使用列表中的項作爲答案

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

因爲我們不是野人,只需要用戶輸入足夠的咒語來明確。

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 

+0

謝謝你的笑。我很感激幫助。沒想到,直到現在輸入拼寫名稱都是多餘的,所以也要感謝! – PyDive

1

檢查看攻擊是否在法術列表:

if attack in spells: 

您可能還需要得到其在列表中的位置:

spell_pos = spells.index(attack)