Seite 1 von 1

Funktionen mehrfach ausführen

Verfasst: Freitag 6. Dezember 2024, 13:03
von root44
Halloooo, ich habe ein Problem, ich würde gerne eine Funktion mehrfach ausführen. Wie geht das? Kann mir jemand weiter helfen?

Code: Alles auswählen

from turtle import *
import random


anzahl = int(input("Wie viele Häuser sollen entstehen?: "))

zahl = random.randint(3,  10)

def turtle():
        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)

        mainloop()

if anzahl == 1:
    turtle()

elif anzahl == 2:
    turtle()


Re: Funktionen mehrfach ausführen

Verfasst: Dienstag 15. April 2025, 13:09
von mallo321123
Wenn ich richtig verstehe, was du meinst, dann suchst du nach einer for schleife.
Hier ist ein beispiel:

Code: Alles auswählen

anzahl = int(input("Wie oft soll die Funktion ausgeführt werden? "))

def funktion():
    print("Hello")
    print("World")
    print("")
    
for i in range(anzahl):
    funktion()

Re: Funktionen mehrfach ausführen

Verfasst: Dienstag 15. April 2025, 16:17
von __blackjack__
@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()