Anfänger: Syntax Error bei print

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
banthrass
User
Beiträge: 14
Registriert: Mittwoch 1. Februar 2006, 13:48

Hallo zusammen.

bin neu in Python und bitte um verständniss.

Ich muss es hier auf der Arbeit unter Windows betreiben.

Ich habe mal mit dem Galileo Open book angefangen und bekomme von IDLE Immer einen Fehler der leider nicht wirklich erklärt wird.

Code: Alles auswählen

secret = 1337
guess = 0
i = 0

while guess != secret :
	guess = input("Raten Sie: ")
	
	if guess < secret :
		print "Die Zahl ist zu klein"	
	if guess > secret :
		print "Die Zahl ist zu gross"
		
	i = i + 1
	
print "Super ! Du hast es nach" , 1, "Versuchen geschafft"
in der ersten if schleife meckert er beim zweiten " von der print Anweisung. Mir wird nur gesagt "Invalid Syntax"

Wo liegt der Fehler?

Welche IDE kann man für Python empfehlen?

Danke euch
halo23
User
Beiträge: 20
Registriert: Freitag 30. Oktober 2009, 08:01

Ich kann bei dem Skript keinen Syntaxfehler feststellen.
Evtl. stimmt die Kodierung nicht, oder du hat ein unsichtbares Sonderzeichen drin?
Du hast vielleicht copy & paste angewendet um den Teil in deine Editor zu bekommen?
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Hast du Python3? Dann ist `print` kein Statement, sondern eine Funktion.

Das Galileo-Buch ist außerdem nicht geeignet für Anfänger, wurde im Forum schon mehrmals angesprochen, such einfach mal danach, wenn es dich näher interessiert. Nimm besser das offizielle Tutorial oder "A Byte of Python".
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Liffi
User
Beiträge: 153
Registriert: Montag 1. Januar 2007, 17:23

1. Es gibt keine if-schleifen
2. Es liegt vermutlich an deiner Python Version. Versuche mal print("Die Zahl") zu benutzen.
halo23
User
Beiträge: 20
Registriert: Freitag 30. Oktober 2009, 08:01

Liffi hat geschrieben:Es liegt vermutlich an deiner Python Version. Versuche mal print("Die Zahl") zu benutz
Stimmt, dass kann natürlich auch der Grund dafür Dein Problem sein, denn in Python3 ist print eine Funktion geworden, also print()
banthrass
User
Beiträge: 14
Registriert: Mittwoch 1. Februar 2006, 13:48

da print eine Funktion ist, habe ich dann einfach mal () drum herum gemacht und siehe da, nun klapts. Danke schonmal.

nächstes Problem scheint bei dem vergleichen von verschiedenen Datentypen zu erscheinen. Allerdings weiß ich auch da grad nciht woran es liegt

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python31\test\test.py", line 8, in <module>
    if guess < secret:
TypeError: unorderable types: str() < int()
Ps.: Ich habe mich bereits vom Galileo Buch abgewendet, da es nicht sooo aktuell ist wie mir scheint. lese nun A byte of Python. Gibt es einen guten Editor für Python? was kann man da empfehlen?

Danke
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

banthrass hat geschrieben:nächstes Problem scheint bei dem vergleichen von verschiedenen Datentypen zu erscheinen. Allerdings weiß ich auch da grad nciht woran es liegt
In der Regel kannst du nur die selben Datentypen vergleichen => Du musst die Eingabe in einen Integer konvertieren.
banthrass hat geschrieben:Gibt es einen guten Editor für Python? was kann man da empfehlen?
Für den Anfang reicht ein Editor mit Syntax-Highlighting, das kann eigentlich jeder. Alles andere lenkt am Anfang nur ab.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Jack Daniels
User
Beiträge: 30
Registriert: Freitag 1. Januar 2010, 11:38

Code: Alles auswählen

>>> guess = input("Raten Sie: ")
Raten Sie: 1
>>> type(guess)
<class 'str'>
Das heißt, du musst die Eingabe in eine Zahl umwandeln, bevor du sie mit einer anderen Zahl vergleichen kannst.

Edit: Da war ich wohl zu spät... :x :wink:
ichisich
User
Beiträge: 134
Registriert: Freitag 1. Januar 2010, 11:52

Code: Alles auswählen

    if guess < secret:
TypeError: unorderable types: str() < int()
Du vergleichst Birnen mit Äpfeln, da

Code: Alles auswählen

guess= input("gibt was ein: ")
einen String liefert den du dann mit einem Interger vergleichst.

Code: Alles auswählen

  guess= int(input("gibt was ein: "))
geht glaub ich ...

Editoren gibts nen Haufen, auch nen Haufen Diskussionen hier im Forum und im Internet.

Gruß

Edit: verdammt letzter ...

Code: Alles auswählen

  guess= int(input("gibt was ein: "))
ist extrem doof wie ich gerade bedacht habe da es einen Fehler gibt wenn KEINE Zahl eingegeben wird ...
rads
User
Beiträge: 153
Registriert: Freitag 26. März 2010, 15:51

banthrass hat geschrieben:...

Code: Alles auswählen

...
	if guess < secret :
		print "Die Zahl ist zu klein"	
	if guess > secret :
		print "Die Zahl ist zu gross"
...		
Kleine Unschuldige Anmerkung:

An sich machen zwei aufeinander folgende IF-Bedinungen weniger Sinn, wenn sie sich gegenseitig ausschließen.
So werden beide Bedingungen geprüft. Einfach aus dem zweiten If ein Elif machen.

Code: Alles auswählen

print "Super ! Du hast es nach" , 1, "Versuchen geschafft"
Anstatt 1 sollte ein i stehen, was sicherlich nur ein Schreibfehler war.

Grüße
banthrass
User
Beiträge: 14
Registriert: Mittwoch 1. Februar 2006, 13:48

Danke für die Hilfe.

Dann werd ich mal ein verscuehn da eine Lösung für zu finden.
ZEins
User
Beiträge: 2
Registriert: Donnerstag 29. Juli 2010, 21:43

Wenn du Python 3.1 lernst, ist das Galileo Buch mehr Müll, als es schon bei Python 2.5 ist. Es hat sich wohl viel in Python verändert und von "alten Hasen" im Python-Gewerbe wird dieses Buch als extrem schlecht bewertet: Meinung eines Programmierers.
Das beste Tutorial für Python 3.1 findest du hier.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

ZEins hat geschrieben:Das beste Tutorial für Python 3.1 findest du hier.
Bzw. hier auf deutsch.
Antworten