Seite 1 von 1

if-Anweisung ==

Verfasst: Donnerstag 7. Oktober 2010, 21:32
von feuerzeug
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

Re: if-Anweisung ==

Verfasst: Donnerstag 7. Oktober 2010, 21:39
von hal42
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")

Re: if-Anweisung ==

Verfasst: Donnerstag 7. Oktober 2010, 21:47
von feuerzeug
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

Re: if-Anweisung ==

Verfasst: Donnerstag 7. Oktober 2010, 21:50
von numerix
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.

Re: if-Anweisung ==

Verfasst: Donnerstag 7. Oktober 2010, 22:00
von feuerzeug
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

Re: if-Anweisung ==

Verfasst: Donnerstag 7. Oktober 2010, 22:09
von Fjunch-click-
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".

Re: if-Anweisung ==

Verfasst: Donnerstag 7. Oktober 2010, 22:15
von feuerzeug
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

Re: [gelöst] if-Anweisung ==

Verfasst: Freitag 8. Oktober 2010, 02:55
von gkuhl
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

Re: if-Anweisung ==

Verfasst: Freitag 8. Oktober 2010, 09:53
von mutetella
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

Re: if-Anweisung ==

Verfasst: Freitag 8. Oktober 2010, 10:08
von name
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.

Re: if-Anweisung ==

Verfasst: Freitag 8. Oktober 2010, 10:23
von mutetella
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

Re: if-Anweisung ==

Verfasst: Freitag 8. Oktober 2010, 22:04
von feuerzeug
danke euch allen nochmal.

mfg