Informatik, Thonny?
Kann mir jemand erklären, was der Fehler bei diesem Programm ist? (Bei Thonny)
3 Antworten
also wenn man die fehlermeldung lesen würde dann könnte man herausfinden, dass man einen float hernimmt wo ein int hinsoll. z4 ist dein for-loop, heißt prozent ist ein float. man kann für for-loops nur ints hernehmen.
int = integer = ganze zahl (Groß Z in der Mathe, -1 0 1 2 3 etc)
float = rationelle zahl (groß Q, -1 0 0.25 etc)
sieh einen for-loop als anweisung, etwas i mal zu machen. wenn du jetzt sagst “mach die kaffeemaschine 3.5 mal an” dann macht das halt recht wenig sinn.
btw! auch wenn man eine ganze zahl in einem float speichert (z.b. for i in range(8/4)) funktioniert das trotzdem nicht.
range akzeptiert nur integer (Ganzzahlwerte).
Um die Funktion robust gegen Fehlnutzung zu machen:
def kreis(prozent):
for _ in range(int(prozent)):
....
Der Fehler passiert, weil range() nur mit ganzen Zahlen (int) funktioniert. Wenn du 360/4 schreibst, kommt 90.0 raus – also eine Kommazahl (float) – und das mag range() nicht.
Die Lösung ist einfach: Du kannst entweder // benutzen, damit direkt eine ganze Zahl rauskommt, oder das Ergebnis mit int() umwandeln:
kreis(360 // 4) -> Ganzzahlige Division
oder
kreis(int(360 / 4)) -> Wandelt die Kommazahl in eine ganze Zahl um
Warum? Ein for-loop sagt sowas wie „wiederhole das 3 Mal“. Aber „wiederhole das 3.5 Mal“? Das ergibt keinen Sinn.