Программирование банкомата

1

Мое назначение - создать программу типа ATM. Ниже приведена моя основная функция (не включая функции депозита, снятия и проверки баланса). Когда я иду запускать этот код, программа повторяет функцию вывода несколько раз, даже когда я ввожу 0 или 1234. Он неоднократно дает указание пользователю ввести свой вывод. Я думаю, что у меня все права на отступ, но я полагаю, что я что-то испортил в коде.

def main():
    pin_number = input("Please enter your pin number")
    stop = False

    while not is_authorized(pin_number) and stop!= True:

        if pin_number == "0":
            stop == True
        if pin_number == "1234":
            stop == False  

    if stop != True:
            while True:
                choice = display_menu()
            if choice == 1:
                deposit()
            elif choice == 2:
                withdraw()
            elif choice == 3:
                check_balance()
  • 1
    стоп = верно не стоп == правда
  • 1
    Вы, вероятно, хотели stop = True вместо stop == True . Один знак равенства назначает значение, а двойной знак равенства сравнивает два значения.
Показать ещё 1 комментарий
Теги:
loops

2 ответа

0
Лучший ответ

В ваших операторах if вы должны использовать = not ==. Первый используется для назначения значений переменным, как вы пытаетесь сделать. Второй используется для сравнения, если два значения равны и возвращает логическое значение (true/false).

  • 1
    спасибо, что сработало!
  • 1
    Теперь по какой-то причине моя программа не работает должным образом. как только пользователь внесет деньги, программа снова запустится, но все равно сообщит, что их баланс равен 0. Не испортил ли я основной цикл while?
Показать ещё 2 комментария
0

Ваш код

if stop != True:

будет запускать код внутри цикла, если остановка переменной False (пользователь ввел неправильный код). Однако вы хотите запустить код, если stop имеет значение True. Поэтому используйте этот код:

if stop == True:

это запустит код в оболочке, когда stop будет True (пользователь ввел правильный код)

РЕДАКТИРОВАТЬ:

Мои извенения. Вышеупомянутый ответ касается кода, следующего за этим кодом:

if pin_number == "1234":
    stop = False
  • 0
    Я не думаю, что это правильно. Если pin = 1234, stop установлен на False, поэтому не должен ли код выполняться, когда stop равен False?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню