我的代碼是一個測驗——你最喜歡“這本書”中的哪個角色——基本上是一系列問題,答案是 a、b、c、d、e。
`#Question 1
print("This is the text of question 1")
print("a - This is the text of answer a")
print("b - This is the text of answer b")
print("c - This is the text of answer c")
print("d - This is the text of answer d")
print("e - This is the text of answer e")
quest_ans()
answers.append(quest_ans.ans)`
代碼接下來呼叫一個函式以允許用戶輸入他們的答案,該函式還接受該答案并將其轉換為一個數字,該數字被傳遞并附加到一個串列中,以便在最后求和。
這是函式 quest_ans()
def quest_ans():
ans=0
answer=input(str.lower("Please Enter a,b,c,d or e: "))
if answer.lower() == 'a':
quest_ans.ans =2
elif answer.lower() == 'b':
quest_ans.ans=3
elif answer.lower() == 'c':
quest_ans.ans=4
elif answer.lower() == 'd':
quest_ans.ans=5
elif answer.lower() == 'e':
quest_ans.ans=6
return quest_ans.ans
只要用戶輸入正確答案選項之一 - 這一切都很好,但我想通過列印一條訊息來提醒他們并重新呼叫來管理用戶是否輸入了 a、b、c、d、e 以外的其他內容允許他們輸入正確答案的功能。我試過 try except 塊和 while 回圈,但語法不正確。
任何幫助,將不勝感激。艾比
uj5u.com熱心網友回復:
使用while回圈和回圈直到一個有效條件,用于break退出回圈。此外,不需要在函式上設定屬性,例如quest_ans.ans- 請注意,這ans本身就足夠了。
def quest_ans():
ans=0
while True:
answer=input(str.lower("Please Enter a,b,c,d or e: "))
if answer.lower() == 'a':
ans =2
break
elif answer.lower() == 'b':
ans=3
break
elif answer.lower() == 'c':
ans=4
break
elif answer.lower() == 'd':
ans=5
break
elif answer.lower() == 'e':
ans=6
break
else:
print('Try again, bro..')
return ans
ans = quest_ans()
print('Dude youy entered:', ans)
請注意,從技術上講,您的代碼可以通過使用dict數值的映射答案來改進或簡化:
ans_map = {'a': 2, 'b': 3, 'c': 4, 'd': 5, 'e': 6}
def quest_ans():
while True:
answer = input("Please Enter a,b,c,d or e: ".lower()).lower()
if answer in ans_map:
return ans_map[answer]
print('Try again, bro..')
ans = quest_ans()
print('Dude youy entered:', ans)
uj5u.com熱心網友回復:
嘗試這個:
def quest_ans():
quest_ans.ans= 0 #just “ans” isn’t actually used
while True: #to try over and over until a valid response is given
answer=input("Please Enter a,b,c,d or e: ").lower()
try: #if a 2 character response is given, this will stop ord() causing an error
if ord(answer) > 96 and ord(answer) < 102: #comparing ASCII of letter
break
else:
print("please try again")
except:
print("please try again")
if answer.lower() == 'a':
quest_ans.ans =2
elif answer.lower() == 'b':
quest_ans.ans=3
elif answer.lower() == 'c':
quest_ans.ans=4
elif answer.lower() == 'd':
quest_ans.ans=5
elif answer.lower() == 'e':
quest_ans.ans=6
return quest_ans.ans
uj5u.com熱心網友回復:
我通常不使用遞回,但我認為這是使用它的相對好時機。
您編輯的功能:
def quest_ans():
ans = 0
answer = input(str.lower("Please Enter a,b,c,d or e: "))
if answer.lower() == 'a':
ans = 2
elif answer.lower() == 'b':
ans = 3
elif answer.lower() == 'c':
ans = 4
elif answer.lower() == 'd':
ans = 5
elif answer.lower() == 'e':
ans = 6
else:
print("Invalid option entered. Try again...")
ans = quest_ans()
return ans
answer = quest_ans()
基本上,如果用戶輸入了 ae 以外的內容,else 塊將捕獲它并再次呼叫該函式,如果用戶不輸入 ae,它將繼續重復。
希望這有幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/484243.html
