Python, как выйти из цикла, когда ответ неверен - PullRequest
0 голосов
/ 21 декабря 2018

Я только начал с Python.в моем коде я спросил возраст пользователя.если ему меньше 18 лет, я хочу выйти из программы, а не просто снова задать вопрос.Как мне это сделать?

я пробовал break, breakpoint, quit, systemexit, system error.

a = 3
while a < 4:
    print ("age: ")
    age = input()

    age = int(age)



    if (age >= 18):
        print("welcome")
        a = a + 3
    else:
        print("too young")
        SystemExit
        exit
        break
        quit

print("oi")

программа задает вопрос снова и снова.

Ответы [ 4 ]

0 голосов
/ 21 декабря 2018

Вы должны контролировать, используя логическое и сделать его false , если значение меньше и break :

check = True
while check:
    age = int(input("age: "))

    if (age < 18):
        print('too young')
        check = False
        break
    else:
        print("welcome")
0 голосов
/ 21 декабря 2018

Ваш оператор if не имеет правильного отступа.Это должно быть под циклом while.Если вы хотите еще один способ постоянно спрашивать пользователя о его возрасте и если он слишком молод, выйдите из программы:

   import sys

   while True:    
       age = int(input('Enter your age'))

       if age < 18:
           sys.exit('You are too young')
0 голосов
/ 21 декабря 2018

Я думаю, что вы можете использовать sys.exit (), как другие предложили выше, или вы можете попробовать использовать логическое значение в качестве условия для цикла while.

oldEnough = True
while oldEnough == True:
    age = int(input("Age: "))
    if age > 17:
        print ("Welcome")
        oldEnough = True;
        a += 3

    elif age < 18:
        print ("Too young")
        oldEnough = False
        break; # just for good measure.

Я надеюсь, что это работает для вас.Удачи!

0 голосов
/ 21 декабря 2018

Вы можете попробовать что-то вроде этого

while True:
    age = input("Input your age: ")
    age = int(age)
    if age >= 18:
        print("welcome")
        break
    else:
        print("too young")
        exit(0)  # exit code 0 means everything is ok, exit with a diff code to indicate an issue
...