Plötzlich wird alles mit invailed Syntax bemängelt, obwohls

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
Joscha
User
Beiträge: 2
Registriert: Freitag 12. Dezember 2014, 23:44

Ich habe gestern Nach mal meine ersten Gehversuche in Python gemacht (habe in der Schule im Schnelldurchlauf schon ein kleines bisschen über Syntax, Variablen (in, float, list, tuple usw.), Zahlensysteme, Zeichenkodierung usw... gelernt und kan so auch eigentlich ganz gut mit der Aufgabe vorann.
Jetzt komme ich heute vom Training zurück, bastle noch ein bisschen herum und plötzlich wird mir bei allem möglichem ein "SyntaxError: invalid syntax
" ausgespuckt.
Es fing bei einigen Zuweisungen (initialisierungen von Variablen an). Gut, durch wildes hin und her verschieben dieser Zuweisungen ging das dann auch wieder., doch nun fängt das selbe mit dem ersten anderen Befehl an.
Nun meckert er beim Doppelpunkt hinter "for comment in(commentlist):" und wenn ich die ganze Schleife auskommentiere beim nächsten Doppelpunkt der nächsten Schleife.

Ich nutze Eclipse mit Pydev unter Ubuntu, habe aber auch mal im Terminal "python3 <Dateiname>.py eingetippt und den selben Fehler bekommen.

ich hänge mal den Quellcode an, aber denke es hängt eher an dem Python auf meinem System... Einfach mal Synaptic anweisen Python 3 vollständig neu zu installieren?


Code: Alles auswählen

import shutil

incounter = 0
list = [1]
dividend = 0.0
listcounter = 0
result = 0

#Variablen für die Rauten am Anfang
shutil = shutil.get_terminal_size()
colums = int(shutil[0])
comment1 = ""
comment2 = "Durchschnittsrechner"
comment3 = "by Joscha"
comment4 = "Zahlen <=0 beenden die Eingabe"
comment5 = ""
commentlist = [comment1,comment2,comment3,comment4,comment5]
comment = 1
hashkeys = 0
hashkeycounter =0
border = int((colums - (len (max(commentlist))) / 2)


#Schleife zur Generierung der Rauten
for comment in(commentlist):
    if len(comment) == 0:
        hashkeycounter = colums
    else:
        hashkeycounter = border
    while hashkeycounter != 0:
        hashkeys += "#"
        hashkeycounter -= 1
    print(hashkeys + comment + hashkeys)
    hashkeys = ""

#Schleife zur Inptübergabe in eine Liste
while list[-1] > 0:
    incounter += 1
    list.append(float(input("{}.Zahl:".format(incounter))))
incounter -= 1
list.remove(list[-1])

listcounter = incounter

#Addition sämtlicher Listenelemente zur späteren Division
while listcounter != 0:
    dividend += list[listcounter]
    listcounter -= 1

result = dividend/incounter

print("Ergebniss:", result)
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@Joscha: wenn Python über Syntaxerrors meckert, wo keine sind, ist das oft ein Hinweis darauf, dass in einer Zeile davor etwas nicht stimmt: Zähl die Klammern in Zeile 21.
Joscha
User
Beiträge: 2
Registriert: Freitag 12. Dezember 2014, 23:44

Danke. Da war ja schon der Fehler.
Darauf muss man erstmal kommen.

Danke
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@Joscha: noch ein Paar Anmerkungen: Variablen sollten immer erst dann initialisiert werden, wenn man sie dann braucht, also 'incounter' wird erst in Zeile 38 das erste mal benutzt, also kann Zeile 3 nach Zeile 36 verschoben werden, genauso Zeile 4. comment=1 in Zeile 18 ist unnötig, weil es ja in der for-Schleife sowieso gesetzt wird. Ebenso hashkeycounter. hashkeys in Zeile 34 wird danach nie wieder verwendet, also warum auf eine leere Zeichenkette setzen? Viel logischer ist es, hashkeys="" vor Zeile 30 zu schreiben, weil das ja in der for-Schleife gebraucht wird.
Antworten