PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unexpected indent



Rapter
24.07.2010, 12:59
Hallo.
Ich arbeite gerade das Buch "Einstieg in Python 3" durch.
Ich habe gerade einen Code vom Buch abgetippt um ihn zu vertiefen.
Dieser lautet:


#Modul random import
import random

#Zufallsgenerator initialisieren
random.seed()

#Zufallswerte

a = random.randint(1,10)
b = random.randint(1,10)
c = a + b

print("Die Aufgabe lautet:", a, "+", b)

for i in 1,2,3,4:
#Aufgabe
print("Bitte eine Zahl eingeben")
z = input()
zahl = int(z)

#Verzweigung
if zahl == c:
print(Zahl, "ist richtig")
break

else:
print(zahl,"ist falsch")

#Ende
print("Ergebnis:", c)

input()
Führe ich den Code jetzt aus, schreibt er "unexpected indent" und zwar bei break.
Wenn ich break dann verschiebe, schreibt Python "break outside loop".

Kann mir einer sagen wo genau der Fehler liegt?
Danke!

AlterHacker
24.07.2010, 13:16
Hey,

Ich kann Python zwar nicht, aber was passiert wenn du break einfach weglässt?

Rapter
24.07.2010, 13:23
Bei dem Spiel hat man 4 mal die Möglichkeit, die Rechnung richtig zu beantworten.
Wenn ich die Antwort aber schon beim ersten Mal richtig eingebe, brauch ich ja die 3 anderen Versuche nicht mehr und das Spiel kann abbrechen.
Break bentötigt man zum abbrechen und ist somit für den Ablauf wichtig.

Lass ich break weg, hab ich wie schon gesagt 4 mal die Möglichkeit die Rechnung zu beantworten. Das Programm funktioniert dann aber..

blackberry
24.07.2010, 13:54
if zahl == c:
print(Zahl, "ist richtig")
breakPython erkennt den If-Block ja am Einrücken (to indent = einrücken).
In deinem Source ist noch ein Leerzeichen zuviel vor break.
Das bringt Python durcheinander.

Hoffe es klappt...

EDIT:
und das ganze If-Zeugs muss auf die Höhe der Schleife.

for i in 1,2,3,4:
#Aufgabe
print("Bitte eine Zahl eingeben")
z = input()
zahl = int(z)

#Verzweigung
if zahl == c:
print(Zahl, "ist richtig")
break

else:
print(zahl,"ist falsch")

Rapter
24.07.2010, 16:10
Danke :)
Das hat geklappt.

0x30
24.07.2010, 16:20
Genau aus diesem Grund würde ich die Finger von dieser Sprache lassen ;)

Rapter
24.07.2010, 16:26
Es wird bestimmt bei den meisten Sprachen einen "Grund" geben die Finger davon zu lassen.

Ich find Python nicht schlecht. Man macht schnelle Fortschritte und kann die Sprache zu vielen Dingen einsetzen. Nur weil mal was nicht geklappt hat, brauch ich ja nicht gleich die Finger von lassen :p

Aber lassen wir's, sonst wird's sowieso nur eine "Welche Sprache ist die Bessere?" Diskussion.

0x30
24.07.2010, 16:34
Ich meine eher das es auf das Einrücken ankommt... In keiner andere Sprache ist das relevant.

EBFE
24.07.2010, 16:50
Miranda und Haskell nutzen auch Indentation zur Codestrukturierung ;)
Ein anständiger Editor (vim, emacs oder Eclipse) erledigt das Einrücken eher automatisch. Und man braucht nicht ständig Java/C mäßig irgenwelche Klammern und Semicolons zu setzen (was entweder zu schlechter Lesbarkeit oder "leerzeilen" nur mit "{"/"}" führt). D.h der Code wird kompakter und i.R deutlich lesbarer ;).
Eigentlich sollte es kein Problem sein, seinen Code anständig zu Strukturieren, da die Einrückpraxis i.R auch in anderen Sprachen angeraten wird:
http://www.possibility.com/Cpp/CppCodingStandard.html#indent
aber manche müssen halt zu ihrem Glück gezwungen werden ;)

blackberry
24.07.2010, 20:06
Obwohl ich kein Python kann muss ich doch sagen, dass ich dieses "erzwungene" Einrücken doch für sehr gut befinde.
Warum sollte schnell klar werden, wenn man in die C/C++ Section geht... was machne Leute einem da vorwerfen und erwarten, dass man das korrigiert, wenn jede einzelne Zeile völlig wahrlos durcheinandergerückt ist und auch mehrere Anweisungen in eine Zeile geklatscht werden...

Ansonsten: Problem gelöst:
/closed