Informatik, 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.

Woher ich das weiß:Hobby – Jahre langes lernen