Für meine Zwecke benötige ich keinen Benutzer. Es wird in der Ladestation lediglich eine kleine Zahlentastatur geben. Daher reicht es zunächst allgemein abzufragen, ob der PIN vorhanden ist.
range(1,6) habe ich wegen der if Abfrage genutzt. Würde ich range(5) eingeben, würden die maximalen 5 Versuche nicht funktionieren.
Dennoch habe ich versucht das Programm nun etwas schöner zu gestalten. Ebenfalls habe ich nun eine Liste erstellt, welche die eingegebenen PINS beim ersten mal abspeichert und bei der zweiten Eingabe wieder löscht. Dies soll später die Kabine für den Benutzer reservieren, so dass dieser mit denselben PIN die Kabine auch wieder öffnen kann. Hier das Script in neu.
Code: Alles auswählen
from time import sleep
def is_pin_valid(pin):
return len(pin) == 4 and pin.isdigit()
speicher = [0,0,0,0,0,0]
gefunden = 0
while True:
for i in range(1,6):
pin = input("Bitte geben sie Ihren Pin ein: ")
data = open("pin.txt").read()
if pin in data and is_pin_valid(pin):
print("Der PIN war korrekt")
for k in range(6):
if speicher[k] == pin:
speicher[k] = 0
gefunden = True
print(speicher)
break
for j in range(6):
if speicher[j] == 0 and not gefunden:
speicher[j] = pin
print(speicher)
break
gefunden = False
sleep(0.5)
break
else:
print(i)
print("Dieser Pin ist nicht korrekt")
if i > 4 :
print("5 Fehlversuche!")
sleep(0.5)
Traceback (most recent call last):
File "Ladestation2.py", line 16, in <module>
if PIN in data and is_pin_valid(PIN):
TypeError: 'in <string>' requires string as left operand, not int
ps. Ich finde dafür, dass ich kein gelernter Programmierer oder sonstiges bin und erst vor 2 Wochen überhaupt angefangen habe zu Programmieren ist es auch nicht so schlecht