dict为空时循环不会退出

时间:2018-09-12 20:52:24

标签: python loops

使用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上的很多东西,但是我似乎无处可去。这让我发疯了。

2 个答案:

答案 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 = ...