Python "пока" l oop не прекратится - PullRequest
1 голос
/ 22 апреля 2020

В настоящее время я работаю над проектом, в котором мы должны проверить надежность пароля и сгенерировать надежный пароль, но в процессе поиска выхода из программы я попал в блок и не могу найти способы прогресс. Я пытался сломаться и sys.exit(), но ни один из них не помог. Я хотел бы, чтобы, когда они вводят [3], а затем ['yes'], программа заканчивалась, но она просто возвращалась к первому вопросу. Я также пытался использовать while = True:, но это имело еще меньший успех.

count = 0
while (count < 1):

    while True:
        choice = input ("Do you want to: 1) Check a password 2) Generate a Password, or 3) Quit? . [1/2/3]? : ")
        if choice in ['1', '2', '3']:
            break
    if choice == "1":
        while True:
            checkyes = input ("you want to check a password, correct? [yes/no]")
            if checkyes in ['yes', 'no']:
               break
    elif choice == "2":
        while True:
            genyes = input ("you want to generate a password, correct? [yes/no]")
            if genyes in ['yes', 'no']:
                break
    else:
        while True:
            quityes = input ("you want to quit, correct? [yes/no]")
            if quityes in ['yes', 'no']:
                break
                if choice == "yes":
                    count = count + 1
                else:
                    pass

Ответы [ 3 ]

1 голос
/ 22 апреля 2020

2 проблемы:

  • оператор прерывания выполняется до увеличения счетчика
  • вы проверяете choice вместо quityes против 'yes'

    if quityes in ['yes', 'no']:       
        if quityes == "yes":
            count = count + 1
        else:
             pass
        break
    
1 голос
/ 22 апреля 2020

Вы проверяете неверную переменную для условия выхода. Вам необходимо проверить с помощью quityes:

count = 0
while (count < 1):

    while True:
        choice = input ("Do you want to: 1) Check a password 2) Generate a Password, or 3) Quit? . [1/2/3]? : ")
        if choice in ['1', '2', '3']:
            break
    if choice == "1":
        while True:
            checkyes = input ("you want to check a password, correct? [yes/no]")
            if checkyes in ['yes', 'no']:
               break
    elif choice == "2":
        while True:
            genyes = input ("you want to generate a password, correct? [yes/no]")
            if genyes in ['yes', 'no']:
                break
    else:
        while True:
            quityes = input ("you want to quit, correct? [yes/no]")
            if quityes in ['yes', 'no']:
               if quityes == 'yes'
                    count += 1
                    break
               else:
                   pass

Вывод:

Do you want to: 1) Check a password 2) Generate a Password, or 3) Quit? . [1/2/3]? : 3
you want to quit, correct? [yes/no]yes

Process finished with exit code 0
0 голосов
/ 22 апреля 2020

Вы можете попытаться импортировать sys и заменить разрыв на sys.exit ().

Подумайте, почему разрыв не сработал, потому что он выходит из первого l oop, но не из больше л oop.

...