# creating menu
def menu():
    print("What do you want to do:")
    print("1)Push")
    print("2)Pop")
    print("3)Display")
    print("4)Quit")
    choice = int(input("Make a selection: "))
    return choice


# creating a queue with a list
def create_queue():

    # creating a queue
    queue = []
    while menu() > 0 & menu() < 5:
        if menu() == 1:
            print("You choose: Push")
            num_input = int(input("How many items do you want to enter: "))
            for i in range(num_input):
                queue.append(input("Enter items: "))
        elif menu() == 2:
            print("You choose: Pop")
            # making sure queue is not empty
            if len(queue) == 0:
                print("Empty, nothing to get rid of.")
                return
            else:
                print("Popping item out")
                queue.pop(0)
        elif menu() == 3:
            print("You choose: Display")
            print(queue)
        elif menu() == 4:
            print("You chose: Quit")
            return
        else:
            print("Not a choice")
            return


create_queue()

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

Что вы хотите сделать: 1)Нажать 2)Вытолкнуть 3)Отобразить 4)Выйти Сделайте выбор: 1 Что вы хотите сделать: 1)Нажать 2)Вскрыть 3)Отобразить 4)Выйти Сделать выбор: 1 Что делать что вы хотите сделать: 1)Нажать 2)Всплеск 3)Отобразить 4)Выйти Сделайте выбор: 1 Вы выбираете: Нажать Сколько элементов вы хотите ввести:

Я попытался поместить выбор пользователя в цикл, но он просто застрял бы в одном выборе, а не в цикле.

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

0
notdien 25 Ноя 2022 в 21:28
while menu() > 0 & menu() < 5: определенно не делает то, что вы думаете, может быть, choice = menu(), а затем while choice > 0 & choice < 5:??
 – 
Ignatius Reilly
25 Ноя 2022 в 21:33
Например. if menu() == 1 необходимо снова вызвать menu, он не будет использовать возврат предыдущего вызова. Нет никакой причины, потому что функцию нельзя вызывать более одного раза, и вы никогда не просили программу сохранить значение предыдущего вызова.
 – 
Ignatius Reilly
25 Ноя 2022 в 21:35
 – 
Ignatius Reilly
25 Ноя 2022 в 21:38

1 ответ

В вашем коде вы вызываете функцию «menu()» несколько раз.

while menu() > 0 & menu() < 5:
        if menu() == 1:

Сохраните его в переменной:

choice = None
while choice > 0 and choice < 5:
    choice = menu()
    if choice == 1:
# Etc.

Надеюсь, это решит вашу проблему!

0
Aarav Dave 25 Ноя 2022 в 21:46
Спасибо за этот улов!
 – 
Aarav Dave
25 Ноя 2022 в 21:42
Эй, я уже попробовал это, и вот что это дало мне: Что вы хотите сделать: 1) Нажать 2) Вскрыть 3) Отобразить 4) Выйти Сделайте выбор: 1 Вы выбираете: Нажать Сколько элементов вы хотите ввести : 5 Введите элементы: dien Введите элементы: jaden Введите элементы: 2 Введите элементы: 1 Введите элементы: 3 Вы выбираете: Нажмите Сколько элементов вы хотите ввести: 2 Введите элементы: один Введите элементы: два Вы выбираете: Нажмите Сколько элементов элементы, которые вы хотите ввести: 1. Введите элементы: 5. Вы выбираете: нажмите. Сколько элементов вы хотите ввести: - Будет повторяться один и тот же выбор.
 – 
notdien
25 Ноя 2022 в 21:42
Эй, я отредактировал свой ответ. Пожалуйста, попробуйте это, это была другая ошибка!
 – 
Aarav Dave
25 Ноя 2022 в 21:46
Эй, Аарав, так что я заставил его работать с выбором, равным 1 вместо 0, по какой-то причине, когда его 0, дает мне эту ошибку: TypeError: неподдерживаемый тип (ы) операнда для &: 'int' и 'NoneType', поэтому Я изменил выбор на 1, и это сработало как шарм! Спасибо большое за вашу помощь!!!
 – 
notdien
25 Ноя 2022 в 21:57
Я понял, почему 0 не будет работать, потому что он находится за пределами цикла while.
 – 
notdien
25 Ноя 2022 в 22:00