Seite 1 von 1

input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 11:16
von snakemake
Hallo,

ich lerne gerade Python neu und übe ein bisschen mit elifs und so rum. Dabei ist mir bei input() etwas aufgefallen:

Code: Alles auswählen

print("Wir berechnen das Minimum von drei eingegebenen Zahlen.")

print("Erste Zahl:")
x = int(input())

print("Zweite Zahl:")
y = int(input())

print("Dritte Zahl:")
z = int(input())

if x<y and x<z:
    print("Zahl",x," ist das Minimum")
elif y<z and x>y:
    print("Zahl",y," ist das Minimum")
elif z<x and z<y:
    print("Zahl",z," ist das Minimum")
Ich benutze übrigens Python 3. Wenn ich das Modul laufen lasse, dann will ich bei "Erste Zahl:" etwas eingeben, aber IDLE reagiert nicht. Dann drück ich enter und der fragt mich wieder nach der ersten Zahl und wenn ich dann eine Zahl eingebe, dann krieg ich folgende Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/pinky/Desktop/minimum.py", line 4, in <module>
    x = int(input())
ValueError: invalid literal for int() with base 10: 'Erste Zahl:7'
Ist klar, dass er sagt, dass ich kein int eingebe, weil "Erste Zeile" wieder erscheint, aber warum erscheint es nochmal? Was ist denn an "x = int(input())" falsch? Ich hab das aus einem Lehrbuch so abgeschrieben, deshalb kann ich nicht verstehen, warum es bei denen so steht und bei mir nicht klappt.

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 11:28
von lutz.horn
Zum Verhalten von IDLE kann ich leider nichts sagen.

Zur Logik Deines Codes erlaube ich mir den Hinweis auf min:

Code: Alles auswählen

min(...)
    min(iterable[, key=func]) -> value
    min(a, b, c, ...[, key=func]) -> value
    
    With a single iterable argument, return its smallest item.
    With two or more arguments, return the smallest argument.

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 11:35
von snakemake
Dass es eine Funktion min gibt ist mir klar. Ich wollte allerdings mal verzweigte Bedingungen, logische Operatoren usw. alles in einem Code ausprobieren. Und die im Lehrbuch programmieren min halt selbst. Das Problem liegt da halt bei der Anweisung "x = int(input())".

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 11:39
von lutz.horn
Das Problem liegt eher in IDLE. Wenn Dein Skript auf der Konsole ausgeführt wird, funktioniert alles tadellos.

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 13:08
von Rebecca
Ich meine mich dunkel erinnern zu koennen, dass sich Idle und input (oder raw_input) nicht gut vertragen. Also solche Skripte besser in der Konsole ausfuehren!

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 13:57
von veers
Noch besser, gleich einen richtigen Editor verwenden.

http://wiki.python.org/moin/PythonEditors

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 14:19
von numerix
Und wieder wird in das alte Horn geblasen: IDLE ist grundsätzlich schuld, wenn irgendwas nicht klappt und IDLE mit im Spiel ist. Hat einer von denen, die hier auf IDLE herumhacken, den gezeigten Code mal in IDLE ausgeführt? Bei mir läuft er nämlich einwandfrei - gilt sowohl für die IDLE-Versionen von Python 3.0 als auch für 3.1.

@Rebecca: Evtl. verwechselst du das mit der Linux-Version von SciTE - da klappt es nicht mit der Eingabe. Von IDLE ist mir das nicht bekannt.

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 14:23
von snakemake
Hallo,

also mit der Konsole hat es wunderbar geklappt. Bei IDLE hats nicht geklappt. Warum kriegt es IDLE denn nicht hin? Es ist doch letztendlich selbst nur ein Editor, bei dem man die Skripte auch ausführen kann, wenn ich das richtig verstanden hab. Ich bin neu in Python, kenne mich deshalb mit IDLE noch nicht so gut aus, aber bisher hatte ich damit nur Probleme. Immer irgendwelche Ausnahmen, Dinge, die IDLE anders macht als Konsole usw. :shock:

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 15:41
von numerix
snakemake hat geschrieben:kenne mich deshalb mit IDLE noch nicht so gut aus, aber bisher hatte ich damit nur Probleme. Immer irgendwelche Ausnahmen, Dinge, die IDLE anders macht als Konsole
Sooo kaputt ist IDLE nun auch wieder nicht, dass es - deiner Beschreibung gemäß - praktisch unbenutzbar ist. Gerade für Einsteiger ist IDLE eine gute Wahl, weil es direkt mit dabei ist und in aller Regel gut funktioniert.

Welches Betriebssystem benutzt du?

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 16:24
von hendrikS
Um ehrlich zu sein, kann ich mir fast gar nicht vorstellen ohne IDLE oder aehnliches zu arbeiten. Um schnell man einen Ausdruck zu testen oder um irgendwelche Zwischenergebnisse mal schnell zu berechen ist das ausgezeichnet. Ich vermisse zwar nach wie vor manchmal die History, aber man gewoehnt sich dran. Aehnlich bei Haskell. Dort gibt es den Winhugs. Spart einfach Zeit.

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 16:52
von b.esser-wisser
hendrikS hat geschrieben:Ich vermisse zwar nach wie vor manchmal die History, aber man gewoehnt sich dran.
..<alt> + <p>, oder meinst du da was ganz anderes?
Aber ich benutze normalerweise Ipython (da funzen die u""-Literals nicht, "u=lambda s: s.decode(sys.stdin.encoding)" hilft als würg-around).

hth, Jörg

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 18:14
von heiliga horsd
Hatte auch bei einem Freund mal das Problem, letzendlich lag das Problem darin, dass IDLE 2.6 gestartet war und nicht 3.1

Übrigens: Ich hatte mit IDLE auch noch nie Probleme und finde es recht nützlich.

Re: input() reagiert komisch

Verfasst: Donnerstag 10. Juni 2010, 20:30
von bords0
Oder vielleicht den Namen input "überschrieben"? Gerade bei komischem, völlig unerklärlichem Verhalten, ist das manchmal der Fall.

Hast du es nochmal mit neu gestarteter IDLE ausprobiert?

Re: input() reagiert komisch

Verfasst: Freitag 11. Juni 2010, 03:31
von hendrikS
b.esser-wisser hat geschrieben:..<alt> + <p>, oder meinst du da was ganz anderes?
Extrem guter Tip. Super. :D