Как мне разорвать цикл внутри цикла в python?

#python

#python

Вопрос:

Этот код представляет собой цикл, который проверяет словарные слова. По какой-то причине мой break не работает.

Вот мои слова, которые использует эта программа:

 Vocab ={'Adherent' : "a person who follows or upholds a leader, cause, etc.; supporter; follower.",
'Incoherent' : "without logical or meaningful connection; disjointed; rambling",
'Inherent' : "existing in someone or something as a permanent and inseparable element, quality, or attribute" ,
'DiffuseADJ' : "characterized by great length or discursiveness in speech or writing; wordy"}
  

Вот мой цикл:

 while 1:
    ques1= raw_input("Would you like a list of the vocabulary words, or would you like to play a game? Type 'words' or 'game': ")
    if ques1 == 'words':  
        ques11= raw_input("Type 'w' for words only, type 'wd' for words and definitions, type 'd' for definitions only: ")
        if ques11 == "w":
            for key,value in Vocab.iteritems():
                print key
        elif ques11 == "wd":
            for key,value in Vocab.iteritems():
                print key,"-", value
        elif ques11 == "d":
            for key,value in Vocab.iteritems():
                print value
    elif ques1 == 'game':
        game=raw_input("Type 'rw' for random words: ")
        if game == 'rw':
            while 1:
                y = random.choice(Vocab.keys())
                print y
                t2=raw_input("What is the definition?: ")
                if t2 in Vocab[y]:
                    print 'All those words were in the definition!'
                    print Vocab[y]
                elif t2 not in Vocab[y]:
                    print Vocab[y]
                elif t2 == 'menu': break
                raw_input("Hit 'enter': ") 








    else:
        raw_input("Hit 'enter': ")
  

По какой-то причине разрыв игрового цикла не возвращается к ‘ques1’. Почему этот разрыв не сработает?

Комментарии:

1. Потому что ваш код завернут в while 1 . даже если он breaks включен во внутренний цикл, он все равно будет продолжаться во внешнем while

2. @Pilot Я хочу, чтобы он вернулся к исходному вопросу, но он не будет

Ответ №1:

Проблема с вашим кодом заключается в том, что break оператор никогда не будет достигнут, если t2 не находится внутри Vocab . Вы можете изменить

 elif t2 == 'menu': break
  

Для

 if t2 == 'menu': break