Seite 1 von 1

Frage zu print()

Verfasst: Sonntag 6. Juni 2010, 19:26
von snakemake
Hallo,

seit heute lerne ich Python und hab eine Frage. Ich hab folgendes Programm geschrieben, um mich mit der Eingabe einfacher Zeichenketten zu üben:

Code: Alles auswählen

# Zahl eingeben
print("Bitte geben Sie die erste Zahl ein:")
eingabe = input()
a = int(eingabe)
print("Bitte geben Sie die zweite Zahl ein:")
eingabe = input()
b = int(eingabe)
c = a + b
print("Die Summe der eingegebenen Zahlen lautet:",c)
Die Ausgabe sieht so aus:
>>>
Bitte geben Sie die erste Zahl ein:
5
Bitte geben Sie die zweite Zahl ein:
10
('Die Summe der eingegebenen Zahlen lautet:', 15)
>>>
Warum stehen bei der dritten Ausgabe die Hochkommatas und das Komma vor der 15? Das Programm habe ich aus einem Lehrbuch abgeschrieben und bei denen sieht die Ausgabe so aus, wie erwartet: Einfach hinter dem Doppelpunkt die Zahl c. Woran liegt das? Falls das von Bedeutung ist: Ich benutze IDLE 2.6.5.

Re: Frage zu print()

Verfasst: Sonntag 6. Juni 2010, 19:40
von str1442
Vor Python 3.0 war print eine andere Art von "Ding" - darum hat dieser Quelltext bei print("Die Zeichenkette", c) unterschiedliche Interpretationen respektive zur Version. Wenn du zum Thema Funktionsapplikation kommst und weißt, was ein Tupel ist, wirst du sehen, warum. Ich schlage vor, du benutzt erstmal Python 3.0 --> http://python.org/ . Alternativ kannst du natürlich auch 2.6.5 weiterbenutzen und zb. das offizielle Python Tutorial zu 2.6 benutzen --> http://docs.python.org/tutorial/index.html .

Re: Frage zu print()

Verfasst: Sonntag 6. Juni 2010, 19:41
von cofi
Ja die Version ist hier ganz stark von Bedeutung, mit Python 3 wurde `print` zu einer Funktion, braucht also die Klammern. In Python 2 ist `print` eine Anweisung, braucht also keine. `("...",c)` ist also ein Tupel und wird als solches ausgegeben.

IDLE ist btw nur ein Editor, kein Interpreter.

Re: Frage zu print()

Verfasst: Sonntag 6. Juni 2010, 19:51
von snakemake
cofi hat geschrieben:Ja die Version ist hier ganz stark von Bedeutung, mit Python 3 wurde `print` zu einer Funktion, braucht also die Klammern. In Python 2 ist `print` eine Anweisung, braucht also keine. `("...",c)` ist also ein Tupel und wird als solches ausgegeben.

IDLE ist btw nur ein Editor, kein Interpreter.
Ok, thx. Ich hab mich die ganze Zeit schon gewundert, warum es print und print() gibt. Ich weiß, dass IDLE nur ein Editor ist. Ich hab auch anfangs meine Programme mit Notepad++ editiert und per Konsole interpretiert, aber ich dachte, dass IDLE vllt. ein "Eigenverhalten" oder Besonderheiten hat und das Auswirkungen auf die Ausgabe haben könnte. Deshalb die Angabe.
str1442 hat geschrieben:Vor Python 3.0 war print eine andere Art von "Ding" - darum hat dieser Quelltext bei print("Die Zeichenkette", c) unterschiedliche Interpretationen respektive zur Version. Wenn du zum Thema Funktionsapplikation kommst und weißt, was ein Tupel ist, wirst du sehen, warum. Ich schlage vor, du benutzt erstmal Python 3.0 --> http://python.org/ . Alternativ kannst du natürlich auch 2.6.5 weiterbenutzen und zb. das offizielle Python Tutorial zu 2.6 benutzen --> http://docs.python.org/tutorial/index.html .
Wenn ich das richtig verstehe, kann Python 2 nur dann erkennen, dass in meinem print() ein String steht, wenn keine Kommas drin sind. Wie kann ich denn in Python 2 Strings mit Variablen in print konkatenieren? Übrigens: Welche Vorteile hat Python 3 gegenüber 2? Ich lerne es, weil ich Netzwerkanwendungen schreiben muss. Welches eignet sich dafür mehr?

Re: Frage zu print()

Verfasst: Sonntag 6. Juni 2010, 19:57
von cofi
snakemake hat geschrieben:Wenn ich das richtig verstehe, kann Python 2 nur dann erkennen, dass in meinem print() ein String steht, wenn keine Kommas drin sind.
Nein Python 2 "erkennt" nichts, es gibt einfach nur keine 1-elementigen Tupel, bzw diese werden mit `(element,)` erzeugt.

Ob Python 3 Vorteile hat ist vor allem davon abhaengig, ob du Abhaengigkeiten ausserhalb der Standard-Library hast, wenn ja kann es durchaus sein, dass sie noch nicht portiert sind. Ansonsten ist die Zukunftssicherheit und dass mit Ungereimtheiten aufgeraeumt wurde der einzige Vorteil. Grob gesagt.

Re: Frage zu print()

Verfasst: Sonntag 6. Juni 2010, 19:59
von snakemake
Ok, danke. Ich lad mir gerade auch die Version 3 runter, weil ich gemerkt hab, dass mein Lehrbuch auch 3 benutzt.

Schönen Abend noch! 8)

Re: Frage zu print()

Verfasst: Dienstag 8. Juni 2010, 08:06
von Lastalda
snakemake hat geschrieben:Warum stehen bei der dritten Ausgabe die Hochkommatas und das Komma vor der 15?
Weil in den vorherigen print-Zeilen nur Strings standen, in der letzten aber eine Kombination aus String und Integer. Um das enfach zu umgehen, kannst Du die Zahl in einen String umwandeln. ;)

Code: Alles auswählen

>>> c = 15
>>> print ("text:",c)
('text', 15)
>>> print("text: " + str(c))
text 15

Re: Frage zu print()

Verfasst: Dienstag 8. Juni 2010, 08:51
von cofi
Lastalda hat geschrieben:
snakemake hat geschrieben:Warum stehen bei der dritten Ausgabe die Hochkommatas und das Komma vor der 15?
Weil in den vorherigen print-Zeilen nur Strings standen, in der letzten aber eine Kombination aus String und Integer.
Nein das ist falsch, die "Kombination" ist ein Tupel und dessen `repr` benutzt eben einfache Quotes fuer Strings, keine doppelten.