@root44: Man ruft die Funktion einfach mehrfach nacheinander auf. Was Dir hier im Weg steht ist der Aufruf von `mainloop()` — der kehrt erst zurück wenn der Benutzer das Fenster geschlossen hat.
Anmerkungen zum Quelltext: Eingerückt wird per Konvention mit vier Leerzeichen pro Ebene.
Es ist unübersichtlich Funktionsdefinitionen zwischen anderen Code zu schreiben. Normalerweise hat man erst die Funktionsdefinitionen und das das Hauptprogramm. Das eigentlich auch in einer eigenen Funktion, die üblicherweise `main()` heisst.
Funktionsnamen beschreiben normalerweise was die Funktion macht, damit man das als Leser weiss, und um Funktionen leichter von eher passiven Werten unterscheiden zu können. Also besser `zeichne_haus()` statt `turtle()`. `turtle` wäre eher ein Name für ein `Turtle`-Objekt.
`zahl` wird definiert, aber nirgends verwendet. Womit dann auch der Import von `random` hinfällig wird.
Eingabe über das Terminal und Programmende mit einer Ausnahme wenn der Benutzer etwas eingibt, was nicht in eine ganze Zahl umgewandelt werden kann, müssen nicht sein: `numinput()`.
Ungetestet:
Code: Alles auswählen
#!/usr/bin/env python3
from turtle import *
def zeichne_haus():
forward(200)
left(90)
forward(200)
left(90)
forward(200)
left(90)
forward(200)
penup()
left(180)
forward(200)
right(90)
forward(200)
pendown()
left(135)
forward(150)
left(94)
forward(143)
left(41)
forward(200)
left(90)
forward(200)
def main():
anzahl = int(
numinput(
"Anzahl",
"Wie viele Häuser sollen entstehen?",
default=1,
minval=0,
maxval=5,
)
)
for _ in range(anzahl):
zeichne_haus()
mainloop()
if __name__ == "__main__":
main()