猿问

当字典为空时循环不会退出

使用 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,但我似乎无法到达任何地方。它让我发疯。


饮歌长啸
浏览 364回答 2
2回答

小唯快跑啊

您的退出条件 ,if glossary == {''}:永远不会为真,因为您将词汇表dictaset与包含单个空字符串元素的 a进行比较。您可以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.')

拉莫斯之舞

它可以更精简:while glossary:    user_input = ...
随时随地看视频慕课网APP

相关分类

Python
我要回答