[Python 3] Unerwartete Ausgabe mit Nachkomma

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.
Benutzeravatar
Jean-P.
User
Beiträge: 48
Registriert: Freitag 27. Januar 2012, 14:41
Wohnort: Berlin

Hallo Community,

könnte mir bitte wer erklären warum ich diese:
1.8
1.9000000000000001
2.0
2.1
Ausgabe bekomme?

Normal muss die Ausgabe so:
1.8
1.9
2.0
2.1
aussehen :K
Der Code dazu sieht wie folgt aus:

Code: Alles auswählen

x = 1.8
for i in range(4):
    print(x)
    x = x + 0.1
Und gibt es eine möglichkeit das Shell-Fenster ohne Neustart zu bereinigen?

mfg.Jean-P
kotz...
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Wilkommen in der Community Jean,

kurz und kanpp gesagt ohne dich vergraulen zu wollen gibt es in dem Python Tutorial einen Abschnitt dazu:
Englisch (Original) http://docs.python.org/tutorial/floatingpoint.html
Deutsch (Übersetzt) http://tutorial.pocoo.org/floatingpoint.html
problembär

Das Problem ist übrigens nicht Python-spezifisch, sondern damit hat man in jeder Programmiersprache zu kämpfen. Es ist also ein Problem der Computerarchitektur allgemein.
Benutzeravatar
Jean-P.
User
Beiträge: 48
Registriert: Freitag 27. Januar 2012, 14:41
Wohnort: Berlin

:shock: Interessant, damit hätte ich jetzt nicht gerechnet.
Danke für euere Antworten, gerade der Link ist echt spitze und war sehr aufschlussreich,
werde jetzt mal mit den einzelnen Funktionen experimentieren.

Könnte sich noch wer meiner zweiten Frage annehmen?
kotz...
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Wie du dein Terminal bereinigst, hängt konkret davon ab welches du einsetzt. Bei mir (Standard-Terminal von OS X) reicht einmal "clear" aus.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Probier mal C-l (Ctrl + klein L), wenn das nicht geht, solltest du uns mal von deinem OS, Terminal und deiner (Python-)Shell erzaehlen.

@webspider: Bestimmt nicht in der Python-Shell.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Unter Windows bereinigt man das Shellfenster mit dem Befehl »cls«.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

cofi hat geschrieben:@webspider: Bestimmt nicht in der Python-Shell.
Ich meine mich zu entsinnen, dass nicht spezifiziert wurde, dass er die Python-Shell gerne gesäubert hätte.

Dennoch ist es sehr nett von dir auch die andere Möglichkeit abgedeckt zu haben :)
Benutzeravatar
Jean-P.
User
Beiträge: 48
Registriert: Freitag 27. Januar 2012, 14:41
Wohnort: Berlin

Abend nomnom wenn ich den Befehl ( >>>cls ) so in der Python-Shell eingebe bekomme ich eine Fehlermeldung:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
cls
NameError: name 'cls' is not defined
Abend cofi meinst du mit Ctrl Strg? Wenn ja dann passiert mit Strg und klein l nix :?

Abend webspider leider funktioniert dein Befehl auch nicht :(

Meine System Daten:
Windows XP SP3
Python 3.2
Meine Python-Shell rufe ich über IDLE (Python GUI) auf.

Oh je hoffe es gibt eine Möglichkeit zum säubern wäre echt blödeee wenn man immer einen Neustart dafür brauch :?
kotz...
problembär

Jean-P. hat geschrieben:Abend nomnom wenn ich den Befehl ( >>>cls ) so in der Python-Shell eingebe bekomme ich eine Fehlermeldung:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
cls
NameError: name 'cls' is not defined
Eher so:

Code: Alles auswählen

>>> import os; a = os.system("cls")
Unter Windows würde ich aber ein IDE (= Integrierte Entwicklungsumgebung) verwenden. Guck mal ob "PythonWin" (ein Programm) bei Deiner Python-Distribution dabei ist (z.B. bei ActiveStatePython), siehe auch unter dem Namen "PythonWin" hier.

Gruß
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Jean-P. hat geschrieben:Oh je hoffe es gibt eine Möglichkeit zum säubern wäre echt blödeee wenn man immer einen Neustart dafür brauch :?
Definiere "säubern". Den Bildschirm kann man schon mehr oder weniger leer bekommen, allerdings stellt sich mir da die Frage nach dem sinnvollen Anwendungsfall den ich nicht erkennen kann.

Ich habe daher den Verdacht, dass du beim "Säubern" die vorher geladenen Module und definierten Objekte loswerden möchtest. Das geht nicht wirklich gut.
Benutzeravatar
Jean-P.
User
Beiträge: 48
Registriert: Freitag 27. Januar 2012, 14:41
Wohnort: Berlin

Mit säubern meine ich die Ausgaben meiner Programme in dem Shell-Fenster.

Nach und nach ist das Shell-Fenster voll mit Ausgaben und man muss erst immer den Anfang des zuletzt ausgegebenen Programmstarts suchen :?

Mit Shell-Fenster ist nicht das Dos-Fenster(oder Eingabeaufforderungs-Fenster) gemeint,
schade das mein Volumen auf meinen Surf-Stick schon verbraucht ist,
sonst würd ich ebend mal ein Screenshot Programm downloaden und mein Problem Bildlich schildern :?

Wenn das Shell-Fenster gestartet wird erscheint folgende Meldung:
Python 3.2.2 (default, Sep 4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
Und genau so leer wie das Shell-Fenster beim start ist,
möchte ich es wieder säubern können.
kotz...
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Versuch es mal mit Strg+L. Funktioniert zumindest auf Unix-ähnlichen Systemen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

XY-Problem. Warum willst du denn die Shell überhaupt säubern?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Kebap
User
Beiträge: 786
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Jean-P. hat geschrieben:ebend mal ein Screenshot Programm downloaden
Ich vermute mal, du benutzt Windows.

Drück auf der Tastatur die Taste "Druck", damit erstellst du einen Screenshot, kein weiteres Programm nötig.

Den Screenshot kannst du dann zB in Paint bearbeiten, das auch zum Windows Lieferumhang gehört (unter Programme, Zubehör). Dort dann also Bearbeiten, Einfügen klicken, ggf noch zurechtschneiden, abspeichern, fertig. Als nächstes kannst du den Screenshot hochladen und hier im Forum verlinken.

Oder du nennst uns einfach den Namen des Programms, das du benutzt um Python auszuführen? Wie gehst du vor, um dann irgendwo diese Anzeige zu erhalten?
Jean-P. hat geschrieben:Wenn das Shell-Fenster gestartet wird erscheint folgende Meldung:

Code: Alles auswählen

Python 3.2.2 (default, Sep  4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
Profi-Tipp: Einfach paar mal Return drücken, schon ist dein "Bildschirm sauber" :D
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
lunar

@Leonidas: Das ist kein XY-Problem. Alte Ausgaben zu löschen, um ohne Ablenkung was neues auszuprobieren, ist ein legitimes und durchaus verständliches Anliegen, dass man nicht sofort wieder in Frage stellen muss.

@Jean-P.: Ich würde Dir dazu raten, einen bequemeren interaktiven Interpreter zu verwenden. Unter Windows ist DreamPie empfehlenswert.
Zuletzt geändert von lunar am Donnerstag 2. Februar 2012, 13:20, insgesamt 1-mal geändert.
BlackJack

@Kebap: Das mit den Leerzeilen über Eingabetaste einfügen ändert nichts, beziehungsweise nicht viel, an dem beschriebenen Problem, den Anfang der Ausgaben des letzten Programmlaufs zu finden. Man kann auch dann nicht einfach bis ganz oben scrollen und ist dort wo man hin möchte, sondern man muss von unten nach oben scrollen und die Stelle suchen, die einen interessiert.
Benutzeravatar
Kebap
User
Beiträge: 786
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

Naja so ohne Detailinfos ist natürlich schwer Ratschläge zu geben. Ich würde die Ausgabe kürzen, oder sie vielleicht in eine eigene Ausgabedatei schreiben, wenn du so viel Ausgabe produzieren musst? :K

Hast du das hier übrigens mal ausprobiert?
problembär hat geschrieben:

Code: Alles auswählen

>>> import os; a = os.system("cls")
Ansonsten kann ich nur allen hier zustimmen: Such dir eine schöne Python Entwicklungsumgebung, meine Empfehlung geht übrigens an PyScripter, aber es gibt wirklich viele, und sie erleichtern viele Sachen, die im reinen shell-Fenster mitunter schwierig wären.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:@Leonidas: Das ist kein XY-Problem. Alte Ausgaben zu löschen, um ohne Ablenkung was neues auszuprobieren, ist ein legitimes und durchaus verständliches Anliegen, dass man nicht sofort wieder in Frage stellen muss.
Dafür brauchts keine Python-Lösung, da reicht auch ein Ctrl-L, daher frage ich ja was der OP bezwecken will. Und schon gar keine solche Lösung wie problembär vorschlägt, aber da sind vermutlich eh alle einig.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

@Leonidas: Strg+L geht, wie schon festgestellt wurde, nicht unter Windows. Und der OP verwendet Windows :roll:
Antworten