Seite 1 von 1
Syntax error in simplen Code ?
Verfasst: Montag 28. Februar 2011, 21:37
von Budi
Hey Leute.
Bin neu in Sachen Python und versuche mich grade an einem kleinem Taschenrechner.
Ich weiß nicht was daran falsch ist aber anscheinend habe ich einen Syntax-Fehler,wo ich keinen erkennen kann.
Code: Alles auswählen
#Kleiner Taschenrechner
ergebnis = 0
Print "Hallo"
zahl1 = int(raw_input("Bitte gebe deine erste Zahl ein: "))
zahl2 = int(raw_input("Bitte gebe deine zweite Zahl ein: "))
opp = raw_input("Gebe einen Opperatoren ein: ")
if opp == "+":
ergebnis = zahl1 + zahl2
elif opp == "-":
ergebnis = zahl1 - zahl2
elif opp == "*":
ergebnis = zahl1 * zahl2
elif opp == "/":
ergebnis = zahl1 / zahl2
Print "Dein Ergebnis ist gleich: ", ergebnis
Der Fehler liegt schon bei den Anführungszeichen nach dem Hallo.
Könnt ihr mir da weiterhelfen ?
Re: Syntax error in simplen Code ?
Verfasst: Montag 28. Februar 2011, 21:40
von cofi
Code: Alles auswählen
In [1]: Print "Hallo"
------------------------------------------------------------
File "<ipython console>", line 1
Print "Hallo"
^
SyntaxError: invalid syntax
In [2]: print "Hallo"
Hallo
Gross- und Kleinschreibung ist nunmal wichtig.
Re: Syntax error in simplen Code ?
Verfasst: Montag 28. Februar 2011, 21:41
von 0x1cedd1ce
hast du python 3 oder 2?
bei python3 musst du print("Hallo") schreiben.
Re: Syntax error in simplen Code ?
Verfasst: Montag 28. Februar 2011, 21:43
von Budi
cofi hat geschrieben:Code: Alles auswählen
In [1]: Print "Hallo"
------------------------------------------------------------
File "<ipython console>", line 1
Print "Hallo"
^
SyntaxError: invalid syntax
In [2]: print "Hallo"
Hallo
Gross- und Kleinschreibung ist nunmal wichtig.
oha.ich bin es leider von blitzbasic gewohnt print großzuschreiben

Re: Syntax error in simplen Code ?
Verfasst: Montag 28. Februar 2011, 22:23
von BlackJack
@Budi: So wie der Quelltext aussieht, solltest Du vielleicht auch noch mal über die Einrückung der ``elif``-Zeilen nachdenken.
Re: Syntax error in simplen Code ?
Verfasst: Dienstag 1. März 2011, 13:43
von sma
Budi hat geschrieben:oha.ich bin es leider von blitzbasic gewohnt print großzuschreiben

Verzage nicht, benutze Python 3.2 oder schreibe bei Python 2.7 am Anfang jeder Datei "from __future__ import print_function" und dann kannst du einfach einmal "Print = print" hinschreiben und fortan brauchst du dich nicht mehr umgewöhnen, sondern kannst "Print('Hallo, Welt')" (jeweils ohne " aber mit Klammern) benutzen. Oder aber, du lässt den Finger doch von der SHIFT-Taste
Stefan
Re: Syntax error in simplen Code ?
Verfasst: Dienstag 1. März 2011, 14:16
von Leonidas
sma, das meinst du doch hoffentlich nicht erst...

Re: Syntax error in simplen Code ?
Verfasst: Dienstag 1. März 2011, 15:35
von Budi
So.Hab den Code etwas überarbeitet.Ich möchte keinen neuen Thread aufmachen also frag ich nochmal hier.
Ist der Code für den Anfang nicht schlecht ? Mit den Wissen aus ByteOfPython Kapitel 1-6.
Code: Alles auswählen
#Kleiner Taschenrechner
#--------------------------
ergebnis = 0
weiter = True
#--------------------------
print "Hallo"
while weiter:
zahl1 = float(raw_input("Bitte gebe deine erste Zahl ein: "))
zahl2 = float(raw_input("Bitte gebe deine zweite Zahl ein: "))
opp = raw_input("Gebe einen Opperatoren ein: ")
if opp == "+":
ergebnis = zahl1 + zahl2
elif opp == "-":
ergebnis = zahl1 - zahl2
elif opp == "*":
ergebnis = zahl1 * zahl2
elif opp == "/":
ergebnis = zahl1 / zahl2
print ""
print "Dein Ergebnis ist gleich: ", ergebnis
print ""
nochmal = raw_input("Noch eine Rechnung ? y/n ")
if nochmal == "y":
weiter = True
elif nochmal == "n":
weiter = False
print ""
Hab das mit den leeren print anweisungen nur aus "schönheit" gemacht wenn das ok ist ?
Verzage nicht, benutze Python 3.2 oder schreibe bei Python 2.7 am Anfang jeder Datei "from __future__ import print_function" und dann kannst du einfach einmal "Print = print" hinschreiben und fortan brauchst du dich nicht mehr umgewöhnen, sondern kannst "Print('Hallo, Welt')" (jeweils ohne " aber mit Klammern) benutzen. Oder aber, du lässt den Finger doch von der SHIFT-Taste
Stefan
Ach nee.Ich bleib jetzt erstmal bei 2.7. Ich weiß garnicht was ein Anfänger mit 3.2 anfangen soll.Das ist ja doch etwas anders und die meisten Bücher/Tutorials sind noch nicht bei 3.2 denke ich
Re: Syntax error in simplen Code ?
Verfasst: Dienstag 1. März 2011, 15:47
von cofi
Es ist ein guter Anfang. Nun solltest du richtig weitermachen: Trenn den Code in Logik und Darstellung/Ein- und Ausgabe.
Dir ist ja schon aufgefallen, dass die `print`-Anweisungen irgendwie deplaziert sind, mit der Trennung konzentrieren sie sich wenigstens nur an einem Fleck.
Code: Alles auswählen
if opp == "+":
ergebnis = zahl1 + zahl2
elif opp == "-":
ergebnis = zahl1 - zahl2
elif opp == "*":
ergebnis = zahl1 * zahl2
elif opp == "/":
ergebnis = zahl1 / zahl2
Kann man z.B. so schreiben:
Code: Alles auswählen
import operator
def eval_op(op, a, b):
fun = {'+' : operator.add,
'-' : operator.sub,
'*' : operator.mul,
'/' : operator.div}[op]
return fun(a, b)
Im Forum duerften noch viele weitere Taschenrechner rumschwirren.
Re: Syntax error in simplen Code ?
Verfasst: Dienstag 1. März 2011, 15:53
von Budi
cofi hat geschrieben:Es ist ein guter Anfang. Nun solltest du richtig weitermachen: Trenn den Code in Logik und Darstellung/Ein- und Ausgabe.
Dir ist ja schon aufgefallen, dass die `print`-Anweisungen irgendwie deplaziert sind, mit der Trennung konzentrieren sie sich wenigstens nur an einem Fleck.
Code: Alles auswählen
if opp == "+":
ergebnis = zahl1 + zahl2
elif opp == "-":
ergebnis = zahl1 - zahl2
elif opp == "*":
ergebnis = zahl1 * zahl2
elif opp == "/":
ergebnis = zahl1 / zahl2
Kann man z.B. so schreiben:
Code: Alles auswählen
import operator
def eval_op(op, a, b):
fun = {'+' : operator.add,
'-' : operator.sub,
'*' : operator.mul,
'/' : operator.div}[op]
return fun(a, b)
Im Forum duerften noch viele weitere Taschenrechner rumschwirren.
Der 2te Code enthält ja eine Array würde ich spontan sagen oder ?.Ich geh erstmal nach dem Buch vor.Den Code versteh ich aber schon etwas.
Re: Syntax error in simplen Code ?
Verfasst: Dienstag 1. März 2011, 16:03
von cofi
Nein, das ist ein Dictionary, das den Operator die entsprechende Funktion zuordnet.
Re: Syntax error in simplen Code ?
Verfasst: Mittwoch 2. März 2011, 11:23
von mutetella
Code: Alles auswählen
print ""
print "Dein Ergebnis ist gleich: ", ergebnis
print ""
kann man auch so schreiben:
Ein '\n' innerhalb einer print-Anweisung bewirkt einen Zeilenumbruch.
Die if-Konstruktion
Code: Alles auswählen
if nochmal == "y":
weiter = True
elif nochmal == "n":
weiter = False
lässt sich ebenfalls vereinfachen:
Es muss ja nur dann reagiert werden, wenn der Nutzer ein 'n' oder ein 'N' eingibt. Somit ist jede andere Abfrage an dieser Stelle nicht wichtig. Ich würde allerdings die Schleife ganz ohne 'weiter' machen und die Abfrage, ob weitergemacht werden soll, gleich in die Schleife einbeziehen:
Code: Alles auswählen
choice = ' '
while choice not in 'nN':
...
...
choice = raw_input('Noch eine Rechnung (y/n)? ')
Gruß
mutetella