假設你的意思是:
validity = False
while validity == False:
choice = input('Enter 1 --> , 2 --> , 3 --> ....')
if choice == '1':
validity = True
stuff1()
if choice == '2':
validity = True
stuff2()
if choice == '3':
validity = True
stuff3()
else:
print('Invalid Input.')
那麼你可以做:
actions = { '1': stuff1, '2': stuff2, '3': stuff3 }
invalid = lambda: print('Invalid Input.')
while True:
choice = input('Enter 1 --> , 2 --> , 3 --> ....')
action = actions.get(choice, invalid)
action()
if action is not invalid:
break
你可以把它變成一個可重複使用的功能:
def act(actions):
while True:
val = input('Enter 1 --> %d: '%len(actions))
try:
choice = int(val)-1
except ValueError:
choice = -1
if not 0 <= choice < len(actions):
print('Invalid Input.')
else:
break
actions[choice]()
,所以你只需要:
act([stuff1, stuff2, stuff3])
例如:
>>> act([lambda: print("chose 1"), lambda: print("chose 2"), lambda: print("chose 3")])
Enter 1 --> 3: 4
Invalid Input.
Enter 1 --> 3: 3
chose 3
編輯:更新,以反映使用python3 input()
,它返回字符串,並顯示它的工作原理
你可以使用字典,如果選擇字典的東西,其他。 。 。 – PyNEwbie
該代碼不起作用,因爲'choice'是一個字符串,但是您將其與整數進行比較。順便說一句,「儘管不合法:'做更多Pythonic。 –
更多Pythonic變量名稱也可以是'valid'或'is_valid',而不是'validity'。閱讀更自然。 – Kupiakos