Как завершить программу, если input == "quit" со многими операторами if? - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу, чтобы пользователь мог выйти из этой программы в любой момент, набрав "quit".

Есть ли способ сделать это с одним экземпляром оператора break или мне нужно добавить разрыв в каждый оператор "if y ==" в моем коде?

fruits = []
notfruits = []
print(fruits)
print(notfruits)

while len(fruits) < 3 or len(notfruits) < 3:   # replaced `and` with `or`
    print("Please enter fruits or notfruits:") #
    y = str(input(": "))                       # moved the input here
    if y == "fruits":
        while len(fruits) < 3:
            x = str(input(": "))
            x = x.strip()
            if x in notfruits:
                print(x + " is not a fruit!")
            elif x in fruits:
                print(x + " is already in the list!")
            else:
                fruits.append(x)
                print(fruits)
    elif y == "notfruits":
         while len(notfruits) < 3:
            x = str(input(": "))
            x = x.strip()
            if x in fruits:
                print(x + " is a fruit!")
            elif x in notfruits:
                print(x + " is already in the list!")
            else:
                notfruits.append(x)
                print(notfruits)
    elif y == "clearfruits":
        del fruits[:]
    elif y == "clearnotfruits":
        del notfruits[:]
    elif y == "quit":
        break
    else:
        print("Not a valid option!")

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

Создайте функцию, используйте ее каждый раз, когда вы берете ввод, вызывайте «exit ()», чтобы выйти

Например

import sys

def check_quit(inp):
    if inp == 'quit':
        sys.exit(0)
0 голосов
/ 13 ноября 2018

Я думаю, что и написание функции, и использование sys.exit являются излишними для того, что попросил OP, в зависимости от того, пытаетесь ли вы выйти из цикла или полностью выйти из программы

В частности, в отношении вашего вопроса,вы можете break сразу после вашего input(), и он выйдет из цикла без выполнения оставшейся части цикла.(Кстати, вам не нужно приводить ввод к строке, по умолчанию ввод является строкой)

y = input(": ")
if y.lower() == "quit":
    break    
if y == "fruits":
0 голосов
/ 13 ноября 2018

Вы можете использовать

import sys
sys.exit(0)

чтобы немедленно прекратить выполнение дальнейших операторов программы, что-то вроде

elif y == "quit":
    import sys
    sys.exit(0)

должно работать.

Документация: https://docs.python.org/3.5/library/sys.html#sys.exit

...