这是我第一次在这里提问,所以如果我遗漏了请原谅我。
我是初学程序员,我从python 3.4开始。
我有一个功能(下面)我已经做了,它在执行时工作正常,但我正在尝试压缩我的代码占用空间。
def PwrPriSel (PwrPri):
#Physical Abilities
Dismiss1 = "I'm sorry, but you are not the person I have been waiting for."
Dismiss2 = "Please answer the question"
PhyPwr = 'Strength, Flight, Speed, Invisibility, Invincibility, Shapeshift: '
Strength = "Your Strenth will be overwhelming, your resolve un-wavering. You will be a hammer made of flesh."
Flight = "You will be at home in the sky. You will feel as light as air, able to leap to enormous heights and control your descent with sheer willpower. With mastery wings will form and you will become a creature of the heavens."
Speed = "Time will be your slave. With mastery of this ability, life is controllable."
Invisibility = "Move unseen, unheard and unknown. In time, true mastery will be evident when reality forgets you are there."
Invincibility = "You will not be harmed or negatively affected by any event unless you wish to be harmed and to a specific extent."
Shapeshift = "You can change the way you look and how you sound by willing it to be. With mastery your form can transform into a desired being instead of just impersonation."
PhyPwrDict = {"Strength" : Strength, "Flight" : Flight, "Speed" : Speed, "Invisibility" : Invisibility, "Invincibility" : Invincibility, "Shapeshift" : Shapeshift}
if PwrPri == 'Strength':
print(PwrPri)
print(PhyPwrList[0])
elif PwrPri == 'Flight':
print(PwrPri)
print(PhyPwrList[1])
elif PwrPri == 'Speed':
print(PwrPri)
print(PhyPwrList[2])
elif PwrPri == 'Invisibility':
print(PwrPri)
print(PhyPwrList[3])
elif PwrPri == 'Invincibility':
print(PwrPri)
print(PhyPwrList[4])
elif PwrPri == 'Shapeshift':
print(PwrPri)
print(PhyPwrList[5])
else:
print(Dismiss2)
sys.exit(0)
PhyPwrDict以前是一个列表,我可以从中调用索引,但我希望我的代码更具动态性。
我已经研究了大约2天了,我找到的所有例子都没有做我想做的事。
我想要将PwrPri的输入与PhyPwrDict字典中的所有键进行比较,并且当找到键匹配时,我想要在屏幕上打印值(包含描述键的信息的变量),所以如果说;
PwrPri = Strength的输入,PhyPwrDict应该搜索Strength键,当找到时打印Strength变量的内容。
答案 0 :(得分:0)
您的所有if
.. elif
.. else
逻辑都可以替换为:
if PwrPri in PhyPwrDict:
print(PhyPwrDict[PwrPri])
else:
print(Dismiss2)
sys.exit(0)
这就是说,"如果PwrPri
键在字典中,则打印其相应的值,否则打印Dismiss2
并退出"。