使用Python 3:
def show_flashcard():
""" Show the user a random key and ask them
to define it. Show the definition
when the user presses return. it then asks if user
knew definition or not if they do delets the word and
then asks if they want to continue or quit.
"""
random_key = choice(list(glossary))
print('Define: ', random_key)
input('Press return to see the definition')
print(glossary[random_key])
import time
time.sleep(1) # delay for 1 seconds
print('Did you know the answer')
user_input = input('y or n: ')
if user_input == 'n':
print( 'Do not give up you can only learn by practice')
time.sleep(1) # delay for 1 seconds
user_input = input('Enter s to show a flashcard and q to quit: ')
if user_input == 'y':
print( 'Congratulations , the word wil now be removed from the dictionary')
del (glossary[random_key])
# Set up the glossary
glossary = {'1: word1':'definition1',
'2: word2':'definition2',
'3: word3':'definition3'}
# The interactive loop
exit = False
while not exit:
if glossary == {''}:
exit = True
user_input = input('Enter s to show a flashcard and q to quit: ')
if user_input == 'q':
exit = True
elif user_input == 's':
show_flashcard()
else:
print('You need to enter either q or s.')
当词汇表为空时,我似乎无法使此循环自动退出。我已经尝试了if glossary = 0 then exit is true
上的很多东西,但是我似乎无处可去。这让我发疯了。
答案 0 :(得分:1)
退出条件if glossary == {''}:
永远不会成立,因为您正在将词汇表dict
与包含单个空字符串元素的set
进行比较。
您可以直接在条件中使用dict
对象,如果该对象为空,则将得出False
。您也可以使用break
来立即退出循环:
while True:
if not glossary:
break
user_input = input('Enter s to show a flashcard and q to quit: ')
if user_input == 'q':
break
elif user_input == 's':
show_flashcard()
else:
print('You need to enter either q or s.')
答案 1 :(得分:1)
它可能更精简:
while glossary:
user_input = ...