Seite 1 von 1

Problem mit String

Verfasst: Freitag 31. Dezember 2010, 15:07
von Robokopp
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

Re: Problem mit String

Verfasst: Freitag 31. Dezember 2010, 15:19
von sma

Code: Alles auswählen

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

Code: Alles auswählen

if a.lower() == "bit"
Stefan

Re: Problem mit String

Verfasst: Freitag 31. Dezember 2010, 15:24
von derdon

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.

Re: Problem mit String

Verfasst: Freitag 31. Dezember 2010, 15:28
von Robokopp
Okay vielen Dank :)

Re: Problem mit String

Verfasst: Freitag 31. Dezember 2010, 15:29
von kbr
wie ich gerade sehe, war Stefan schneller.

Code: Alles auswählen

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

Klaus

Re: Problem mit String

Verfasst: Freitag 31. Dezember 2010, 17:14
von Darii
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.