3 回答

TA貢獻1772條經(jīng)驗 獲得超6個贊
假設(shè)每個對象有一個問題。你不需要一個while. input()函數(shù)將無限期地等待用戶輸入。
idx = 0
while idx < len(your_list):
obj = your_list[idx]
print(obj.question)
answer_or_help = input("Press a for Answer, h for Help, q to quit: ")
if answer_or_help == 'q':
break
elif answer_or_help == "h":
print(obj.hint)
elif answer_or_help == "a":
print(obj.answer)
idx += 1 # moving object
else:
print("This is not a valid answer")

TA貢獻1862條經(jīng)驗 獲得超6個贊
您可以使用break、continue和pass語句執(zhí)行這些操作。 Break 語句 在 Python 中,break 語句為您提供了在觸發(fā)外部條件時退出循環(huán)的機會。您可以將 Break 語句放在循環(huán)語句下的代碼塊中,通常放在條件 if 語句之后。
number = 0
for number in range(10):
if number == 5:
break # break here
print('Number is ' + str(number))
print('Out of loop')
continue 語句 continue 語句使您可以選擇跳過觸發(fā)外部條件的循環(huán)部分,但繼續(xù)完成循環(huán)的其余部分。也就是說,循環(huán)的當前迭代將被打亂,但程序?qū)⒎祷氐窖h(huán)的頂部。
continue 語句將位于循環(huán)語句下的代碼塊內(nèi),通常位于條件 if 語句之后。
number = 0
for number in range(10):
if number == 5:
continue # continue here
print('Number is ' + str(number))
print('Out of loop')
Pass 語句 當觸發(fā)外部條件時,pass 語句允許您處理該條件,而不會以任何方式影響循環(huán);除非發(fā)生中斷或其他語句,否則所有代碼將繼續(xù)被讀取。
與其他語句一樣,pass 語句將位于循環(huán)語句下的代碼塊內(nèi),通常位于條件 if 語句之后。
number = 0
for number in range(10):
if number == 5:
pass # pass here
print('Number is ' + str(number))
print('Out of loop')

TA貢獻1794條經(jīng)驗 獲得超8個贊
我將它包裝在一個函數(shù)中,這樣你就可以從它返回。
def show_questions(questions):
for item in questions:
print(item.question)
while True:
user_input = input("Press a for Answer, h for Help, q to quit: ")
if user_input == 'h':
print(item.hint)
elif user_input == 'a':
print(item.answer)
break
elif user_input == 'q':
return
else:
print("This is not a valid answer)
a請注意如何清楚地看到 Answer和h這種方式之間的區(qū)別q:h讓您處于內(nèi)部循環(huán)中,a中斷內(nèi)部循環(huán)并q通過從函數(shù)返回來中斷兩個循環(huán)。
添加回答
舉報