Niepoprawny algorytm wpisywania nr PIN-bankomat

0

Witam. Jestem w trakcie pisania takiego programiku-bankomatu, który będzie imitował działanie prawdziwego bankomatu. W programie przewidziałem możliwość zakończeniu programu po trzykrotnie błędnym wprowadzaniu nr PIN. Czyli założenie jest takie, że jeśli użytkownik wpisze 3 razy błędny PIN lub wpisze w trzech próbach raz poprawnie, to program kończy pętle i przechodzi do wykonania kolejnych koków. Tyle teoria, bo u mnie działa to tak, że jeśli za trzecim razem podam prawidłowy PIN, to program i tak wyświetla komunikat, że trzy razy wprowadzono błędnie PIN. Na pewno problem jest w konstrukcji samej pętli lub w ifie, który po niej następuje.
Oto kod:

a = input ("Podaj nr PIN: ")
b = 5000.11
i = 1
if a == '6666':
  print ("Podałeś prawidłowy PIN.")
else:
  while (a != '6666') and (i < 3):
    i += 1
    print ("Podałeś nieprawidłowy PIN. Spróbuj jeszcze raz!")
    a = input ("Podaj nr PIN: ")
if i == 3:
  print ("Wprowadzono trzy razy błędnie nr PIN. Karta została zablokowana.")
  print ("Udaj się do oddziału w celu odblokowania karty.")
else:
  print ("Dostępne operacje: ")
  print ("1 - sprawdzanie salda rachunku")
  print ("2 - wypłata gotówki")
  print ("3 - wpłata gótówki")
  print ("4 - zmiana numeru PIN")
  print ("5 - złożenie wniosku kredytowego")
  print ("6 - doładowanie telefonu")
  choice1 = int(input("Która operację wybierasz: 1,2,3,4,5, czy 6?: " ))
  if choice1 == 1:
    print ("Stan dostępnych środków na twoim koncie wynosi", b, "złotych.")
  elif choice1 == 2:
    print ("Dostępne możliwości wypłaty gotówki: ")
    print ("1 - 50 złotych")
    print ("2 - 100 złotych")
    print ("3 - 200 złotych")
    print ("4 - 500 złotych")
    choice2 = int(input("Która kwotę wybierasz: 1, 2, 3, czy 4?: "))
    if choice2 == 1:
      b -= 50
    elif choice2 == 2:
      b -= 100
    elif choice2 == 3:
      b -= 200
    else:
      b -= 500
    print (b)

A tak wyglada wynik działania tego algorytmu. 6666 to jest w tym przypadku prawidłowy PIN. Z góry dzięki za wszelkie sugestie.

screenshot-20200420213317.png

1

Dodaj wyświetlanie licznika i w pętli while i zobacz co się dzieje.
Warto korzystać z debuggera.

1

pętla się zakończy jak licznik osiągnie 3 lub gdy poda się poprawnie pin. Info o zablokowaniu zatem wyświetlić należy gdy liczniki miał wartość 3 (warunek niedostateczny, po 3 pin mógł być poprawny) i pin był niepoprawny

0
jvoytech napisał(a):

pętla się zakończy jak licznik osiągnie 3 lub gdy poda się poprawnie pin. Info o zablokowaniu zatem wyświetlić należy gdy liczniki miał wartość 3 (warunek niedostateczny, po 3 pin mógł być poprawny) i pin był niepoprawny

Rzeczywiście dodałem dodatkowy warunek w Ifie i już działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1