Funktionen mehrfach ausführen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
root44
User
Beiträge: 1
Registriert: Freitag 6. Dezember 2024, 12:46

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()

mallo321123
User
Beiträge: 11
Registriert: Mittwoch 12. April 2023, 14:16
Wohnort: 127.0.0.1

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()
Benutzeravatar
__blackjack__
User
Beiträge: 13905
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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()
“I am Dyslexic of Borg, Your Ass will be Laminated” — unknown
Antworten