有沒有辦法減少我宣告中“elif”的數量?在另一個問題中,我問過某人說我的代碼存在冗余問題,而且確實如此。一般來說,我對 python 和編碼比較陌生,當我查找內容時,總是有點難以理解。
這是我正在談論的代碼塊:
(如果需要,我可以發布其余代碼)
if (random_mon_name.lower()=='normal'):
rangen_mon_name = random.choice(mon_name_type_NORMAL)
break
elif (random_mon_name.lower()=='fire'):
rangen_mon_name = random.choice(mon_name_type_FIRE)
break
elif (random_mon_name.lower()=='water'):
rangen_mon_name = random.choice(mon_name_type_WATER)
break
elif (random_mon_name.lower()=='grass'):
rangen_mon_name = random.choice(mon_name_type_GRASS)
break
elif (random_mon_name.lower()=='electric'):
rangen_mon_name = random.choice(mon_name_type_ELECTRIC)
break
elif (random_mon_name.lower()=='ice'):
rangen_mon_name = random.choice(mon_name_type_ICE)
break
elif (random_mon_name.lower()=='fighting'):
rangen_mon_name = random.choice(mon_name_type_FIGHTING)
break
elif (random_mon_name.lower()=='poison'):
rangen_mon_name = random.choice(mon_name_type_POISON)
break
elif (random_mon_name.lower()=='ground'):
rangen_mon_name = random.choice(mon_name_type_GROUND)
break
elif (random_mon_name.lower()=='flying'):
rangen_mon_name = random.choice(mon_name_type_FLYING)
break
elif (random_mon_name.lower()=='psychic'):
rangen_mon_name = random.choice(mon_name_type_PSYCHIC)
break
elif (random_mon_name.lower()=='bug'):
rangen_mon_name = random.choice(mon_name_type_BUG)
break
elif (random_mon_name.lower()=='ghost'):
rangen_mon_name = random.choice(mon_name_type_GHOST)
break
elif (random_mon_name.lower()=='rock'):
rangen_mon_name = random.choice(mon_name_type_ROCK)
break
elif (random_mon_name.lower()=='dark'):
rangen_mon_name = random.choice(mon_name_type_DARK)
break
elif (random_mon_name.lower()=='dragon'):
rangen_mon_name = random.choice(mon_name_type_DRAGON)
break
elif (random_mon_name.lower()=='steel'):
rangen_mon_name = random.choice(mon_name_type_STEEL)
break
elif (random_mon_name.lower()=='fairy'):
rangen_mon_name = random.choice(mon_name_type_FAIRY)
break
else:
print("You didn't actually enter a type.\nTry Again.")
uj5u.com熱心網友回復:
我建議您這樣創建一個dict:
myDict = {}
myDict['ice'] = mon_name_type_ICE
# ...and so on
這樣您就可以使用一小段代碼訪問它:
rangen_mon_name = random.choice(myDict[random_mon_name.lower()])
uj5u.com熱心網友回復:
你應該學習如何重用你的代碼;在下面的示例中,我為您制作了一個簡單的示例,您可以使用它來使您的代碼更具可讀性。
def reusableView(el):
if(el == 'ground'):
print('Okey fine')
elif(el != 'ground' ):
print('Error')
reusableView('ground')
uj5u.com熱心網友回復:
這似乎會讓您受益于將所有這些投入到像字典這樣的資料結構中。由于您只是通過完美的 1:1 映射將值設定為其他值,因此實際上為此制作了字典。
random_mon_name_dict = {'normal': random.choice(mon_name_type_NORMAL), 'bug', random.choice(mon_name_type_BUG)}
但顯然對他們所有人來說。
我理解正確嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448849.html
標籤:Python python-3.x 列表 if 语句
