Прерывать, если ввод оставлен пустым внутри оператора if - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть школьное задание на Python, в котором у меня есть рюкзак предметов, и мне нужно сделать код, чтобы спросить пользователя, хотят ли они: а) добавить предмет в рюкзак, б) проверить предметы в рюкзак, и c) выйдите из программы.

Для моего кода я хочу сделать так, чтобы, если пользователь при вводе для добавления нового элемента просто нажимал клавишу возврата и оставлял ввод пустым, он -повести на ввод снова, а не продолжать код, если на самом деле ни один элемент не добавлен. Вот что у меня получилось:

import sys

itemsInBackpack = ["book", "computer", "keys", "travel mug"]

while True:
    print("Would you like to:")
    print("1. Add an item to the backpack?")
    print("2. Check if an item is in the backpack?")
    print("3. Quit")
    userChoice = input()

    if (userChoice == "1"):
        print("What item do you want to add to the backpack?")
        itemAddNew = input()
        if itemAddNew == "":
            break
        else:
            itemsInBackpack.insert(0, itemAddNew)
            print("Added to backpack.")

С моим кодом здесь, даже если я нажимаю клавишу возврата в тесте и оставляю поле ввода пустым, код все еще продолжается и не прерывается для повторного ввода ввода снова. Это потому, что я уже использую оператор if внутри оператора if? Я уверен, что в целом есть лучший способ сделать это, но как новичок я нахожусь в тупике и могу использовать толчок в правильном направлении.

1 Ответ

1 голос
/ 16 февраля 2020

break останавливает все в вашем l oop и вызывает завершение вашей программы.

Если вы хотите запрашивать ввод, пока пользователь не даст вам что-то, измените это:

        print("What item do you want to add to the backpack?")
        itemAddNew = input()
        if itemAddNew == "":
            break

на это:

        print("What item do you want to add to the backpack?")
        itemAddNew = input()
        while itemAddNew == "":
            #Added some output text to tell the user what went wrong.
            itemAddNew = input("You didn't enter anything. Try again.\n")

Это будет продолжаться, пока текст пуст.

...