Hallo,
ich versuche mich gerade dabei Benutzer- Tastatureingaben zu überprüfen.
z.B.
EINGABE = raw_input("Bitte geben sie A oder B ein:)
ich versuche jetzt schon die ganze Zeit die Eingabe auf A oder B zu prüfen.
Es soll so lange eine Eingabe kommen bis jemand A oder B eingegeben hat.
INSREG = raw_input("A or B:")
if INSREG is "A" or "a":
print "Y,y true"
elif INSREG is "B" or "b":
print "N,n false"
hier solle if auch erst abgearbeitet werden wenn der imput wirklcih A ,a oder B, b ist.
Gruß
input(), raw_input()
Hallo,
du kannst nicht einfach natürliche Sprache in Code übersetzen. Bei dem or handelt es sich um ein logisches or. Wenn du schreibst ``x=="a" or "A"``, dann wird der Ausdruck wahr, falls ``x=="a"`` wahr ist, falls "A" wahr ist oder falls beide wahr sind. ``x == "a"`` trifft genau dann zu, wenn x den Wert "a" hat. "A" hingegen wird immer zu "wahr" ausgewertet, da jeder String, ausgenommen dem leeren "", zu wahr ausgewertet wird. Damit trifft auch immer die erste Bedingung zu.
Du meinst:
oder kürzer:
oder noch einfacher:
Du solltest dir auch gleich abgewöhnen Gleichheit mittels "is" zu testen. "is" Testet auf Objektidentität und nicht auf Gleichheit. Benutze daher immer "==". Außer du weißt genau, dass du "is" verwenden kannst.
du kannst nicht einfach natürliche Sprache in Code übersetzen. Bei dem or handelt es sich um ein logisches or. Wenn du schreibst ``x=="a" or "A"``, dann wird der Ausdruck wahr, falls ``x=="a"`` wahr ist, falls "A" wahr ist oder falls beide wahr sind. ``x == "a"`` trifft genau dann zu, wenn x den Wert "a" hat. "A" hingegen wird immer zu "wahr" ausgewertet, da jeder String, ausgenommen dem leeren "", zu wahr ausgewertet wird. Damit trifft auch immer die erste Bedingung zu.
Du meinst:
Code: Alles auswählen
if x=="a" or x=="A":
Code: Alles auswählen
if x in ("a", "A"):
Code: Alles auswählen
if x.lower() == "a":
Zuletzt geändert von EyDu am Dienstag 4. März 2014, 15:30, insgesamt 1-mal geändert.
Das Leben ist wie ein Tennisball.
Diese Zeile tut nicht das was du glaubst. Sie wird abgearbeitet als (INSREG is "A") or "a". Nun ist "a" allerdings immer wahr und somit trifft die Bedingung immer zu. Zudem solltest du nicht mit is vergleichen. is vergleicht Objektidentitäten und nicht Werte. Korrekt wäre hier Folgendeskoxbox hat geschrieben:Code: Alles auswählen
if INSREG is "A" or "a":
Code: Alles auswählen
if INSREG == "A" or INSREG == "a":
Code: Alles auswählen
if INSREG in ("A", "a"):
Code: Alles auswählen
if INSREG.lower() = "a":
Der nächste Teil deines Problems ist, dass du eine Schleife für die Eingabe brauchst. Hier bietet sich eine Endlosschleife an, die so lange wiederholt wird, bis die Eingabe in Ordnung ist.
Code: Alles auswählen
while True:
answer = raw_input('A oder B eingeben: ')
if answer.lower() in ('a', 'b'):
break
Danke für die schnellen und vielen Antworten.
Das hatte ich dann auch schon rausgefunden und in einem anderen script hatte ich das dann auch schon geändert auf:
if INSREG == "A" or INSREG == "a":
Mein Kopf ist nur schon so zu das ich das beim kopieren nicht gemerkt hatte .
@ /me
danke für den Tip mit der while schleife.
Das hatte ich vorher auch probiert, aber muss da wohl einen Fehler gemacht haben.
Aber jetzt tut es bestens.
Danke an alle!
sorry fuer das schlechte Beispiel./me hat geschrieben:if INSREG is "A" or "a":
Das hatte ich dann auch schon rausgefunden und in einem anderen script hatte ich das dann auch schon geändert auf:
if INSREG == "A" or INSREG == "a":
Mein Kopf ist nur schon so zu das ich das beim kopieren nicht gemerkt hatte .
@ /me
danke für den Tip mit der while schleife.
Das hatte ich vorher auch probiert, aber muss da wohl einen Fehler gemacht haben.
Aber jetzt tut es bestens.
Danke an alle!