3 回答

TA貢獻1772條經驗 獲得超6個贊
假設每個對象有一個問題。你不需要一個while. input()函數將無限期地等待用戶輸入。
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條經驗 獲得超6個贊
您可以使用break、continue和pass語句執行這些操作。 Break 語句 在 Python 中,break 語句為您提供了在觸發外部條件時退出循環的機會。您可以將 Break 語句放在循環語句下的代碼塊中,通常放在條件 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 語句使您可以選擇跳過觸發外部條件的循環部分,但繼續完成循環的其余部分。也就是說,循環的當前迭代將被打亂,但程序將返回到循環的頂部。
continue 語句將位于循環語句下的代碼塊內,通常位于條件 if 語句之后。
number = 0
for number in range(10):
if number == 5:
continue # continue here
print('Number is ' + str(number))
print('Out of loop')
Pass 語句 當觸發外部條件時,pass 語句允許您處理該條件,而不會以任何方式影響循環;除非發生中斷或其他語句,否則所有代碼將繼續被讀取。
與其他語句一樣,pass 語句將位于循環語句下的代碼塊內,通常位于條件 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條經驗 獲得超8個贊
我將它包裝在一個函數中,這樣你就可以從它返回。
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:h讓您處于內部循環中,a中斷內部循環并q通過從函數返回來中斷兩個循環。
添加回答
舉報