if-Anweisung ==

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
feuerzeug
User
Beiträge: 5
Registriert: Donnerstag 7. Oktober 2010, 21:19

hallo, ich bin der neue.


ich quäle mich schon seit stunden an einem problem... habe auch schon die lektüre gewälzt und google gequält!!
anscheinend habe ich ein brett vorm kopf ... ich weiß nicht wo das problem liegt!
ich hoffe jemand erbarmt sich mir zu helfen.

Code: Alles auswählen

serial = 9999

e_serial = input("Serial eingeben: ")

if serial == e_serial:
    print ("Serial ok")
else:
    print("Serial nicht ok")
egal welche zahlen ich eingebe kommt immer "Serial nicht ok"

drehe ich die sache um in

Code: Alles auswählen

serial = 9999

e_serial = input("Serial eingeben: ")

if serial != e_serial:
    print ("Serial ok")
else:
    print("Serial nicht ok")
bekomme ich egal was ich eingebe immer "Serial ok"

es soll aber bei richtiger eingabe (9999) "Serial ok" und bei falscher eingabe "Serial nicht ok" ausgegeben werden

thx und mfg
Zuletzt geändert von feuerzeug am Donnerstag 7. Oktober 2010, 22:15, insgesamt 1-mal geändert.
hal42
User
Beiträge: 6
Registriert: Dienstag 5. Oktober 2010, 09:22

Hallo,
funktioniert es so?

Code: Alles auswählen

serial = 9999

#e_serial = input("Serial eingeben: ")
e_serial = int(raw_input("Serial eingeben: "))

if serial == e_serial:
    print("Serial ok")
else:
    print("Serial nicht ok")
feuerzeug
User
Beiträge: 5
Registriert: Donnerstag 7. Oktober 2010, 21:19

sorry hatte vergessen zu sagen das ich die version 3.1.2 nutze

aber so geht es

Code: Alles auswählen

e_serial =int( input("Serial eingeben: "))
danke....

ich traue mich mal und schmeiße mal die noob-frage in den thread

warum lag es an "int" ?

mfg
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

feuerzeug hat geschrieben:ich traue mich mal und schmeiße mal die noob-frage in den thread
warum lag es an "int" ?
Lass mich zurückfragen: Wo/wie lernst du Python? Wie bist du auf die input()-Funktion gekommen?
Dort, wo du die gefunden hast, sollte doch hoffentlich auch stehen, was die Funktion leistet.
feuerzeug
User
Beiträge: 5
Registriert: Donnerstag 7. Oktober 2010, 21:19

hallo numerix

ich ackere mich durch das buch "Einführung in Python" 2.Auflage von O'REILLY durch...

im index wird auf seite 448 auf "raw_input" hingewiesen nur auf dieser seite steht da nix :shock:

ich habe danach google gequält
eigentlich war ich in dem buch noch gar nicht soweit aber ich wollte etwas ausprobieren....

mfg
Benutzeravatar
Fjunch-click-
User
Beiträge: 41
Registriert: Mittwoch 18. März 2009, 01:27
Wohnort: Lübeck

Mit "input()" liest du die Eingabe als String ein. Damit du diese Eingabe mit der Zahl in "serial" vergleichen kannst, musst du den String erst in eine Zahl umwandeln. Genau dies macht das "int".
Gruß, Lars
feuerzeug
User
Beiträge: 5
Registriert: Donnerstag 7. Oktober 2010, 21:19

Fjunch-click- hat geschrieben:Mit "input()" liest du die Eingabe als String ein.
diese info hätte mir nen paar stunden kopfzerbrechen erspart

thx Fjunch-click-

mfg
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Um Informationen über eine Funktion muss man nur in die Dokumentation schauen:

Code: Alles auswählen

>>> help(input)
input(...)
    input([prompt]) -> string
    
    Read a string from standard input.  The trailing newline is stripped.
    If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
    On Unix, GNU readline is used if enabled.  The prompt string, if given,
    is printed without a trailing newline before reading.
Grüße
Gerrit
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Und noch ein Tipp von mir:
Wenn ich einfach nicht verstehe, weshalb etwas geschieht, von dem ich nicht erwarte, dass es so geschieht, lass ich mir die Dinge einfach mal zeigen:

In so einem Fall wie Deinem hätte ich dann folgendes gemacht

Code: Alles auswählen

serial = 9999

e_serial = input("Serial eingeben: ")

print(serial, e_serial)
if serial == e_serial:
    print ("Serial ok")
else:
    print("Serial nicht ok")
Sehr oft schon hab' ich dann den Fehler nicht nur gefunden, sondern auch gesehen... :)

Gruß
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

mutetella hat geschrieben:In so einem Fall wie Deinem hätte ich dann folgendes gemacht

Code: Alles auswählen

print(serial, e_serial)
Zu schade, dass das unter 3.x nicht so klappt, wie man denkt, weil nicht die beiden reprs in einem Tupel, sondern die beiden Stringrepräsentationen mit einem Leerzeichen als Trennung ausgegeben werden. Und die Stringrepräsebtationen von 9999 und "9999" sind nunmal dieselben.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Ok, BlackJack hatte mich kürzlich schon darauf hingeweisen, dass meine 2.6er Pseudo-print-Funktion nach wie vor noch eine Anweisung ist und sich eben nicht wie die 3.xer print-Funktion verhält... :(

Dann halt so:

Code: Alles auswählen

print((serial, e_serial))
oder vielleicht noch besser:

Code: Alles auswählen

print(type(serial), type(e_serial))
Danke für den Hinweis!

Gruß
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
feuerzeug
User
Beiträge: 5
Registriert: Donnerstag 7. Oktober 2010, 21:19

danke euch allen nochmal.

mfg
Antworten