Seite 1 von 1

gleiche Schleife - verschiedene Bedingungen

Verfasst: Sonntag 21. August 2022, 16:08
von Pitwheazle
Ich hoffe, ihr sagt mir nicht wieder, es sei doch ganz einfach und stünde in den Docs - möglicherweise geht es aber auch gar nicht?
Ich habe dreimal die gleiche Schleife, diese muss aber, je nach Vorgabe, unter bestimmten Bedingungen ablaufen:

Code: Alles auswählen

            if typ3 == 1:                                                        #Spiegelachse ist Winkelhalbierende
                x0 = 0
                y0 = 0
                #hier kommt das Dreieck:
                while x1 + breite > h_breite/20 -3 or y1 + hoehe > h_hoehe/20 -6 :
                    x1 = random.randint(4,12)
                    y1 = random.randint(1,12) 
                    breite = random.randint(2,6)
                    hoehe = random.randint(2,6)
            elif typ3 == 2:                                                        #Spiegelachse parallel zur y-Achse
                x0 = random.randint(4,7)
                y0 = 0
                #hier kommt das Dreieck:
                while x1 + breite > h_breite/20 -3 or y1 + hoehe > h_hoehe/20 -6 or x1 - x0 > x0 + x_null/20:
                    x1 = random.randint(4,12)
                    y1 = random.randint(1,12) 
                    breite = random.randint(2,6)
                    hoehe = random.randint(2,6)
            elif typ3 == 3:                                                        #Spiegelachse parallel zur x-Achse
                x0 = 0
                y0 = random.randint(4,7)
                #hier kommt das Dreieck:
                while x1 + breite > h_breite/20 -3 or y1 + hoehe > h_hoehe/20 -6 or y1 - y0 > y0 + y_null/20:
                    x1 = random.randint(4,12)
                    y1 = random.randint(1,12) 
                    breite = random.randint(2,6)
                    hoehe = random.randint(2,6)
geht das auch einfacher? Wenn ich aus der Konstruktion des Dreiecks eine eigene Funktion erstelle, muss ich ja immer die ganzen Parameter mit übergeben, das steht doch nicht im Verhältnis?

Re: gleiche Schleife - verschiedene Bedingungen

Verfasst: Sonntag 21. August 2022, 16:18
von __deets__
Doch, das steht im Verhältnis. Bau einfach eine Funktion & ruf die auf.

Re: gleiche Schleife - verschiedene Bedingungen

Verfasst: Sonntag 21. August 2022, 16:35
von Pitwheazle
Stimmt!

Re: gleiche Schleife - verschiedene Bedingungen

Verfasst: Sonntag 21. August 2022, 20:57
von Sirius3
Benutze sprechende Variablennamen. Was soll das 3 an typ3? Was bedeutet h_ bei h_breite und h_hoehe? Was unterscheidet diese Breite von der anderen Breite?
Kommentare sind dazu da, zu erklären, warum man etwas macht, den Kommentar dann irgendwo rechts außen zu verstecken ist da Kontraproduktiv.
Je nachdem, was x_null ist, implizierte die Bedingung bei typ3 == 2 den Fall x0 = 0.
Damit vereinfachen sich die drei if-Blöcke zu einem:

Code: Alles auswählen

if typ3 == 1:
    # Spiegelachse ist Winkelhalbierende
    x0 = 0
    y0 = 0
elif typ3 == 2:
    # Spiegelachse parallel zur y-Achse
    x0 = random.randint(4, 7)
    y0 = 0
elif typ3 == 3:
    # Spiegelachse parallel zur x-Achse
    x0 = 0
    y0 = random.randint(4, 7)
else:
    raise AssertionError("typ3 ungültig")
# hier kommt das Dreieck:
while x1 + breite > h_breite / 20 - 3 or x1 - 2 * x0 > x_null / 20:
    x1 = random.randint(4, 12)
    breite = random.randint(2, 6)
while y1 + hoehe > h_hoehe / 20 - 6 or y1 - 2 * y0 > y_null / 20:
    y1 = random.randint(1, 12)
    hoehe = random.randint(2, 6)