Мое назначение - создать программу типа 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()
В ваших операторах if вы должны использовать =
not ==
. Первый используется для назначения значений переменным, как вы пытаетесь сделать. Второй используется для сравнения, если два значения равны и возвращает логическое значение (true/false).
Ваш код
if stop != True:
будет запускать код внутри цикла, если остановка переменной False (пользователь ввел неправильный код). Однако вы хотите запустить код, если stop имеет значение True. Поэтому используйте этот код:
if stop == True:
это запустит код в оболочке, когда stop будет True (пользователь ввел правильный код)
РЕДАКТИРОВАТЬ:
Мои извенения. Вышеупомянутый ответ касается кода, следующего за этим кодом:
if pin_number == "1234":
stop = False
stop = True
вместоstop == True
. Один знак равенства назначает значение, а двойной знак равенства сравнивает два значения.