IDLE Anfängerfrage print"Problem"

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
mgolbs
User
Beiträge: 28
Registriert: Freitag 3. Februar 2012, 13:07

Hallo,

ich habe nun begonnen das offizielle Python Tutorial durchzuarbeiten. Bis jetzt habe ich immer in der Linux bash mit python den Interpreter gestartet oder mit python programm.py gearbeitet. Beim Tutorial dachte ich, nimmste mal IDLE.

Warum scheitert in IDLE

Code: Alles auswählen

...
print "irgend etwas"
...
mit einem Syntax Error? Muss ich bei IDLE immer mit import.. arbeiten?

Gruß und Dank Markus
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

läuft dein Idle vielleicht auf Python 3.x? Dann benötigt ``print`` nun Klammern:

Code: Alles auswählen

print("spam and eggs")
Bei deinem nächsten Problem zeigst du am besten die ganze Fehlermeldung inkluse dem kompletten Traceback. Dir mag das vielleicht noch nicht viel sagen, aber das macht hier die Fehlersuche deutlich einfacher.

Sebastian

Edit: Schließendes Code-Tag
Zuletzt geändert von EyDu am Freitag 24. Februar 2012, 14:19, insgesamt 1-mal geändert.
Das Leben ist wie ein Tennisball.
mgolbs
User
Beiträge: 28
Registriert: Freitag 3. Februar 2012, 13:07

Hallo,

danke für den Hinweis. Habe sowohl IDLE für 2.6 wie auch für 3.1 drauf. Problem war mit Version 3.1 und klappt jetzt mit

Code: Alles auswählen

print ("irgend etwas")
prima! Danke!

Dann läuft python über bash wohl auf 2.6? Wo kann ich einstellen welche Python Version in der bash erscheint?
Ein Umstellen wird bei mir wohl schwierig, da ich einen FE-Solver auf dem System verwende der mit Python arbeitet, wohl mit 2.6.


Gruß und Dank Markus
deets

Code: Alles auswählen

$ python
Python 2.5.4 (r254:67916, Aug  1 2011, 15:52:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
deets

Ups, verzeih - das war die falsche Antwort - ich dachte, du wolltest *sehen*, welche Version ueber die bash laeuft.

Einstellen kannst du das theoretisch ueber einen symbolischen Link. Wuerde ich aber nicht machen - dein System wird bestimmte Annahmen treffen, welche Version sich hinter /usr/bin/python verbirgt.

Stattdessen einfach "python2.6" bzw. "python3.2" tippen sollte eigentlich reichen.
HerrWolken
User
Beiträge: 2
Registriert: Montag 13. Mai 2013, 13:13

]ich habe ein minkleines Problemchen mit dem Printbefehl. Es ist mir wirklich peinlich dass ich deswegen jetzt nachfragen muss. Ich habe schon zig Referenzen, Tuts, Forenposts und nach 4 Stunden gebe ich zu: ja, selbstständig bekomme ich das blöde Problem nicht behoben. Weil ich deswegen aber kein neues Thema eröffnen möchte, übernehme ich mal dieses alte hier, auch wenn ich statt IDLE das nette Geany 0.21 nehme.

Folgendes:
Das ist der Code:

Code: Alles auswählen

py_version=3.2 
import random
zufallszahl = int(random.randrange(0, 100, 1))
eingabe = int(input('Errate meine Zahl! Sie liegt zwischen 1 und 100! ') )
versuche = 0

while zufallszahl != eingabe:
	versuche += 1
	if zufallszahl < eingabe:
		print("zu hoch")
	elif zufallszahl > eingabe:
		print("zu niedrig")
	eingabe = int(input('versuche es nocheinmal! ') )

print('Richtig, die Zahl lautete', zufallszahl)
print("Du brauchtest", versuche, 'Versuche') 
Was ich dabei rausbekomme ist:
Errate meine Zahl! Sie liegt zwischen 1 und 100! 50
zu hoch
versuche es nocheinmal! 25
zu niedrig
versuche es nocheinmal! 37
zu hoch
versuche es nocheinmal! 31
zu hoch
versuche es nocheinmal! 27
('Richtig, die Zahl lautete', 27)
('Du brauchtest', 4, 'Versuche')


------------------
(program exited with code: 0)
Press return to continue
genau, das Problem liegt hier:
('Richtig, die Zahl lautete', 27)
('Du brauchtest', 4, 'Versuche')
Wie bekomme ich die ', die ) und die , aus der Ausgabe herraus?
Ich dachte ursprünglich es würde daran liegen dass py 2.x verwendet werden würde, deswegen der py_version befehl. half nicht. ich habe statt ' ' schon " " verwendet, statt , schon +. Ich verstehe es nicht. Ich bitte um Hilfe.

(nebenbei ist mir gerade aufgefallen dass es versuche = 1 sein müsste, aber das ist eher unwichtig)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Du verwendest eine zweier Version von Python, dort ist print ein Statement. Wenn du ``print(x,y,z)`` schreibst, dann wird ``(x, y, z)`` als Tupel interpretiert und entsprechend (mit Klammern und trennenden Kommas) ausgegeben. Wie kommst du darauf, dass ``py_version=3.2`` irgend etwas an der Interpreterversion ändern würde. Woher hast du die Idee?
Das Leben ist wie ein Tennisball.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ja, deine Idee, dass es an Python 2 liegt ist richtig. Unter Python2 ist `print` ein Statement und keine Funktion, d.h. die Klammern sind ueberfluessig. Schlimmer noch: Durch die Klammern bekommst du hier Tupel, darum sieht deine Ausgabe so aus, wie sie aussieht. Also lass die Klammern weg.

Diese Zuweisung an `py_version` bezweckt uebrigens gar nichts. Wie kommst du darauf?
BlackJack

@HerrWolken: Wenn das eine halbwegs aktuelle Python 2.x Version ist, kannst Du als ersten Import ganz oben ``from __future__ import print_function`` schreiben, dann wird auch in Python 2 die `print`-Anweisung zu einer `print()`-Funktion.
HerrWolken
User
Beiträge: 2
Registriert: Montag 13. Mai 2013, 13:13

Wow, erstmal danke für die Wilkommenswünsche und für die sehr sehr schnellen Antworten.

Das mit py_version habe ich aus einem englischsprachigen Py-Forum "geklaut". Zu dem Zeitpunkt war ich schon so verärgert (über mein eigenes Unvermögen) dass ich nur kurz überflogen habe worum es eigentlich geht. Euren Kommentaren nach habe ich das wohl vollkommen aus dem Kontext gerissen -selbst Schuld. Die Idee dahinter war, dass ich beide Version von Python, also 3.x und 2.x installiert habe und das standardmäßig 2.x verwendet wird und dass py_version= dafür sorgen sollte dass das Programm in 3.x ausgeführt wird. Aus euren Reaktionen habe ich verstanden dass das falsch ist und habe mir also zusammengereimt, dass ich meine IDE dazu überreden muss 3.x zu verwenden, was ich jetzt auch gemacht habe. (Ich werde zunächst einen Bogen um 2.x machen, weil ich keine Lust habe mich durch Versions-Misch-Masch verwirren zu lassen. -Ah schon passiert. :) ) und siehe da, saubere Ausgabe.

Manchmal hat man einfach ein Brett vor'm Kopp. Danke jedenfalls für die Hilfe.
Antworten