Seite 1 von 1

Python Wabe

Verfasst: Mittwoch 12. Mai 2021, 12:27
von thomasfelixlöllgen
Guten Tag,
Und zwar bin ich dabei eine Wabe zu Programmieren. Ich habe folgendes Problem:
- Jede Wabe muss mit einer zufälligen Farbe ausgefüllt sein
- Und jede Wabe soll beschriftet sein
Den folgenden Programm-Code habe ich schon angefangen:

import turtle
import random

for i in range (8):
lst=["red","green","orange","yellow","pink","brown","cyan","violet","gray"]

turtle.shape("turtle")
turtle.speed(10)


def hexagon():
for i in range(6):
turtle.forward(100)
turtle.left(60)

for i in range (6):
hexagon()
turtle.forward(100)
turtle.right(60)

turtle.exitonclick()

Vielen Dank für eure Hilfe!!!

Re: Python Wabe

Verfasst: Mittwoch 12. Mai 2021, 15:04
von __blackjack__
@thomasfelixlöllgen: Eingerückt wird konventionell mit vier Leerzeichen pro Ebene.

Es wird sehr schnell sehr unübersichtlich wenn man das Hauptprogramm mit Funktionsdefinitionen auf Modulebene mischt. Das Hauptprogramm steht auch üblicherweise in einer Funktion.

Namen sollten nicht kryptisch abgekürzt werden und keine Grunddatentypen enthalten. Der Leser sollte am Namen ablesen können was der Wert dahinter bedeutet. `lst`? Das wäre besser `colors`.

Warum wird an den Namen `lst` in einer Schleife 8 mal die gleiche Liste gebunden? Das macht keinen Sinn.

Wenn man aus syntaktischen Gründen, beispielsweise in einer Schleife einen Namen schreiben muss, der aber dann gar nicht wirklich benötigt wird, hat sich der Name `_` als Konvention durchgesetzt. Dann weiss der Leser, ah das wird absichtlich nicht verwendet und ist kein Fehler.

Funktionen (und Methoden) werden üblicherweise nach Tatätigkeiten benannt, um sie besser von eher passiven Werten unterscheiden zu können. Also `draw_hexagon()` statt `hexagon()`.

Zwischenstand:

Code: Alles auswählen

#!/usr/bin/env python3
import random
import turtle


def draw_hexagon():
    for _ in range(6):
        turtle.forward(100)
        turtle.left(60)


def main():
    colors = [
        "brown",
        "cyan",
        "gray",
        "green",
        "orange",
        "pink",
        "red",
        "violet",
        "yellow",
    ]
    turtle.shape("turtle")
    turtle.speed(10)

    for _ in range(6):
        draw_hexagon()
        turtle.forward(100)
        turtle.right(60)

    turtle.exitonclick()


if __name__ == "__main__":
    main()
Was heisst denn beschriften in diesem Kontext?