Zeichnen mit Turtle

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
Sülo
User
Beiträge: 29
Registriert: Dienstag 4. Mai 2021, 09:58

Hey Leute ich hab ein Problem und brauche eure Hilfe folgende Aufgabe ist zu tun :
Programmieren Sie eine Funktion quadrat, welche das Turtle Grafikpaket nutzt, um ein Quadrat an einer Position x,y zu zeichnen, das entweder weiß oder schwarz ausgefüllt wird.

Schreiben Sie ein Programm, dass die Funktion Quadrat nutzt und ein Schachbrettmuster, ähnlich wie in der Abbildung, zeichnet. Ihr Programm soll mit Hilfe einer verschachtelten for-Schleife zeilen- oder spaltenweise abwechselnd schwarze und weiße Quadrate zeichnen.



Ich hab das jetzt so geschrieben:

import turtle

t = turtle.Turtle()
cSet=["white","black"]

t.hideturtle()

def square():
x = 100
y = 100
for a in range(8):
t.penup()
t.goto(-x,y)
t.pendown()
cVar=a%2
y=y-30
for b in range(8):
if cVar==0: cVar=1;
else: cVar=0;
t.fillcolor(cSet[cVar])
t.begin_fill()
for w in range(5):
t.forward(30)
if w!=4:
t.right(90)
t.end_fill()

print(square())


Leider ist das (weiß Gott wieso) nicht korrekt. Turtle zeichnet zwar das Schachbrett jedoch will meine Professorin folgendes:

Euer Programm soll sich nicht in der Funktion "quadrat" befinden. Sondern Ihr sollt for-Schleifen programmieren in denen die Funktion "quadrat" aufgerufen wird.

An sich ist es doch genau das selbe also verstehe ich das nicht so recht
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Aufgabe ist nicht, ein Schachbrett zu malen, sondern, dass Du lernst, wie man programmiert.

Und zum Programmieren gehört dazu, Probleme in kleinere Teilprobleme zu zerlegen, damit man nicht jedes mal ein sehr komplexes Problem am Stück lösen muß.

Funktionen lösen ein exakt definiertes Teilproblem. Eine Funktion square zeichnet ein Quadrat und kein Schachbrett. Und ein Schachbrett besteht nicht aus 256 Zeichenoperationen sondern aus 64 Quadraten.

Sonstige Anmerkungen zum Code: wenn nach einem : ein neuer Block beginnt, dann beginnt der in einer neuen Zeile. Strichpunkte sind in Python überflüssig. Um Operatoren werden Leerzeichen gesetzt, zwecks besserer Lesbarkeit.
Variablennamen werden komplett klein geschrieben. Konstanten dagegen komplett gross.
cSet -> COLORS und cVar -> color

Code: Alles auswählen

import turtle

COLORS = ["white","black"]

def square(x, y, color):
    t.penup()
    t.goto(-x, y)
    t.pendown()
    t.fillcolor(color)
    t.begin_fill()
    for w in range(4):
        t.forward(30)
        t.right(90)
    t.end_fill()


def checkerboard():
    for a in range(8):
        for b in range(8):
            color = COLORS[(a + b) % 2]
            square(100 - b*30, 100 - a*30, color)

t = turtle.Turtle()
t.hideturtle()
checkerboard()
Zuletzt geändert von Sirius3 am Dienstag 4. Mai 2021, 10:43, insgesamt 1-mal geändert.
Sülo
User
Beiträge: 29
Registriert: Dienstag 4. Mai 2021, 09:58

Sirius3 hat geschrieben: Dienstag 4. Mai 2021, 10:27 Die Aufgabe ist nicht, ein Schachbrett zu malen, sondern, dass Du lernst, wie man programmiert.

Und zum Programmieren gehört dazu, Probleme in kleinere Teilprobleme zu zerlegen, damit man nicht jedes mal ein sehr komplexes Problem am Stück lösen muß.

Funktionen lösen ein exakt definiertes Teilproblem. Eine Funktion square zeichnet ein Quadrat und kein Schachbrett. Und ein Schachbrett besteht nicht aus 256 Zeichenoperationen sondern aus 64 Quadraten.


Sonstige Anmerkungen zum Code: wenn nach einem : ein neuer Block beginnt, dann beginnt der in einer neuen Zeile. Strichpunkte sind in Python überflüssig. Um Operatoren werden Leerzeichen gesetzt, zwecks besserer Lesbarkeit.
Variablennamen werden komplett klein geschrieben. Konstanten dagegen komplett gross.
cSet -> COLORS und cVar -> color
Mir ist schon klar das ich es lernen soll,wobei ich Bauinformatik nur 1 Semester habe, ich versuche es ja auch zu lernen aber ich verstehe das Problem immer noch nicht.
Soll ich jetzt erst eine verschachtelte for Schleife machen die ein Square definiert oder wie?? Ich bin da echt verloren
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Aufgabenstellung zeigt Dir welche Schritte Du programmieren sollst:
1. eine Funktion, die ein Quadrat an die Position x,y zeichnet.
2. eine Funktion, die ein Schachbrett zeichnet, und zwar mit zwei for-Schleifen und dem Benutzen der Funktion square.
Antworten