Problem mit String

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Robokopp
User
Beiträge: 64
Registriert: Mittwoch 3. November 2010, 12:04

Hallo
ich bin dabei, einen kleinen Umrechner zu schreiben, der mit Bits und Bytes arbeiten soll

am Anfang des Programms soll der Nutzer die Einheit auswählen, von der ausgegangen wird.
Das sieht bei mir so aus:


a=raw_input("Einheit")

if a=="bit" or "Bit":
print"Sie haben Bit ausgewählt"

if a=="Kbit" or "kbit":
print"Sie haben Kbit ausgewählt"


Nun zu meinem Problem:

Egal ob ich bit, it, kbit eingebe, er scheinen immer beide Printbefehle.

Warum differenziert Python nicht zwischen dem vollständigen Wort und einzelnen Wortbestandteilen bzw wie mach ich das?

MfG
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Code: Alles auswählen

if a == "bit" or a == "Bit"
Oder einfacher

Code: Alles auswählen

if a.lower() == "bit"
Stefan
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Code: Alles auswählen

if a=="bit" or "Bit":
    print"Sie haben Bit ausgewählt"
tut das gleiche wie

Code: Alles auswählen

if (a=="bit") or ("Bit"):
    print"Sie haben Bit ausgewählt"
Und weil ein nicht-leerer String immer Wahr ist, ist der gesamte Ausdruck hie rimmer Wahr.
Robokopp
User
Beiträge: 64
Registriert: Mittwoch 3. November 2010, 12:04

Okay vielen Dank :)
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

wie ich gerade sehe, war Stefan schneller.

Code: Alles auswählen

or "Bit"
ergibt immer True, da "Bit" ein nicht leerer String ist.

Klaus
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Du kannst so eine Abfrage mit

Code: Alles auswählen

if a in ("bit", "Bit"):
abkürzen, dann endet das nicht in or-Orgien, aber besser nimmst du sowas wie:

Code: Alles auswählen

if a.lower() == "kbit"
Dann musst du nicht alle möglichen Schreibweisen abklappern.
Antworten