2014-10-16 62 views
0

我想要做的就是讓用戶輸入一個名稱,然後程序會將該名稱添加到該名稱中,然後將字Move添加到該名稱,然後抓取名爲的集。在另一個變量內使用變量

這裏是我的代碼到目前爲止,什麼我想內**做:

fredMove = set(["move1","move2","move3","move4"]) #different data 
joeMove = set(["move","move","move3","move4"])  #for each name 
chrisMove = set(["move1","move2","move3","move4"]) #this is just 
timMove = set(["move1","move2","move3","move4"]) #easier to write out 
#I have many more lists, as well 

name = input("What is the name you are looking for? ").lower 

def moveChecking(move1,move2,move3,move4,name): 
    if (move1 not in *name*Moves): 
     print("Move 1 not found!") 
    if (move2 not in *name*Moves): 
     print("Move 2 not found!") 
    if (move3 not in *name*Moves): 
     print("Move 3 not found!") 
    if (move4 not in *name*Moves): 
     print("Move 4 not found!") 

move1 = input("Enter move 1 = ") 
move2 = input("Enter move 2 = ") 
move3 = input("Enter move 3 = ") 
move4 = input("Enter move 4 = ") 

moveChecking(move1,move2,move3,move4,name) 

任何方式做我想做的方式,讓我避免了每個人的名字創建moveChecking()

+0

你可以做與名作爲關鍵字和設定爲值的字典。 – 2014-10-16 14:30:08

+0

我看到了,但認爲我有一個不同的問題,但由於答案在這裏,我能夠理解我的問題的實際答案。 – xdflames 2014-10-16 16:33:32

回答

2

使用字典。

moves = { 
    "fred": set(["move1","move2","move3","move4"]) 
    "joe": set(["move1","move2","move3","move4"]) 
    "chris": set(["move1","move2","move3","move4"]) 
    "tim": set(["move1","move2","move3","move4"]) 
} 

name = input("What is the name you are looking for?") 
for i in range(1, 5): 
    move = input("Enter move {} = ".format(i)) 
    if move not in moves[name]: 
     print("Move {} not found!".format(i)) 
1

創建移動臺的字典,然後按名稱訪問它們

moveDict = {'fred': fredMove, 'joe':joeMove } #etc 

然後在moveChecking使用

if move1 not in moveDict[name]: 
    #... 
0

他們有很多很多醜陋的方式做什麼你需要像描述它一樣(本質上是在模塊層面上做getattr),但是這看起來更像是一種糟糕的設計。爲什麼不使用dictionary作爲名稱,而是使用key作爲名稱,而使用value作爲組? EX:

moves = {'timMove':set(["move1","move2","move3","move4"]), 
....} 

然後你就可以簡單地得到移動設置像這樣:

try: 
    move_set = moves[name] 
except KeyError: 
    # handel a bad name here 
相關問題