Seite 1 von 1

Einsteiger Fragen

Verfasst: Donnerstag 21. Oktober 2021, 09:30
von Szabi
Hallo zusammen,
Ich bin in der Python Programmierung und brauche ein bisschen Hilfe. Ich lerne mit "Python 3 Programmieren für Einsteiger" von Michael Bonacina.
Aktuell habe ich einen Beispiel, wo ich immer wieder eine Fehlermeldung erhalte. Ich komme aber nicht mehr weiter, weil jeder Änderung eine neue Fehler auslöst. kann mir bitte jemand helfen?
Programm sieht folgendermassen aus:

Code: Alles auswählen

liste = [12, 18, 3, 6, 0, 46, 234, 23]
wert = eval(input("Welcher Wert soll dividiert werden? "))
for n in liste:
	if n == 0:
	print("Fehler: Zahlen dürfen nicht durch 0 geteilt werden")
	continue
	print (wert/n)
Fehlermeldung dazu:
File "C:\Users\sulak.szabolcs\Documents\Python\kap4\break.py", line 5
print ("Fehler: Zahlen dürfen nicht durch 0 geteilt werden")
^
IndentationError: expected an indented block

Ich habe versucht die Tabs und Leerzeichen nicht zu mischen, trotzdem komme ich nicht zum Ergebnis.

Vielen Dank
Gruss an euch
Sabi

Re: Einsteiger Fragen

Verfasst: Donnerstag 21. Oktober 2021, 09:43
von Sirius3
Das Buch wurde hier schon öfter mal diskutiert. Jemand, der für verschiedenste Programmiersprachen "Einsteiger"-Bücher schreibt, ist eben kein Experte für eine Programmiersprache.

Einrückungen sind für den Python-Compiler wichtig, um zu erkennen, was zu einem if-Block oder for-Block gehört. Wenn nach einem if kein neuer Block anfängt, dann gibt es eben Fehler.

`eval´ darf man nicht benutzen. Eines der Schwachpunkte des Buches.
`continue` sollte man nicht benutzen, wenn es nicht wirklich gute Gründe dafür gibt.

Code: Alles auswählen

zahlen = [12, 18, 3, 6, 0, 46, 234, 23]
wert = int(input("Welcher Wert soll dividiert werden?"))
for n in zahlen:
    if n == 0:
        print("Fehler: Zahlen dürfen nicht durch 0 geteilt werden")
    else:
        print(wert / n)

Re: Einsteiger Fragen

Verfasst: Donnerstag 21. Oktober 2021, 10:23
von /me
Wenn der Autor hier ernsthaft `eval` verwendet dann solltest du das Buch wegwerfen. Oder besser noch, nicht einfach weg, sondern dem Autor an den Kopf. Mit Schwung. Mit viel Schwung.

eval ist so ein großes Sicherheitsrisiko, dass du das als Anfänger überhaupt nicht abschätzen kannst. So etwas einem Einsteiger vorzusetzen, obwohl es hier mit `int` oder `float` eine viel passendere Alternative gäbe, ist nicht einfach fahrlässig, das ist schon kriminell.

Ergänzung: Man sollte `eval` erst dann einsetzen, wenn man diesen Artikel gelesen und verstanden hat: Eval really is dangerous. Und wenn man das gelesen und verstanden hat, dann will man `eval` gar nicht mehr einsetzen.

Re: Einsteiger Fragen

Verfasst: Donnerstag 21. Oktober 2021, 10:28
von Szabi
Vielen Dank für euch.
Wenn das wirklich so ist, wie ihr sagt, dann mache ich mit diesem Buch lieber nicht weiter.
Im Internet finde ich sicher bessere alternativen.
Danke

Re: Einsteiger Fragen

Verfasst: Donnerstag 21. Oktober 2021, 11:00
von Dennis89
Hallo,

hier ist eine Alternative, sogar eine hoch offizielle:
https://docs.python.org/3/tutorial/

Grüße und viel Erfolg
Dennis