Frage

Ich bin sehr neu in Python. Ich muss diese Form für das College zeichnen, aber ich finde es wirklich schwer, also versuche ich, ein Square zu machen, bevor ich in dieses Bild gehe.

Wie auch immer, hier ist meine Frage: Wie kann ich 8 Zeilen haben? (Es gibt 8 Quadratmeter in 1 Reihe) Ich kann nicht weiter hinzufügen def start_point1(): Dies wäre nicht der richtige Weg, es zu tun.

enter image description here

#!/usr/bin/python

import turtle as t
import time

def start_point():
    t.penup()
    t.setpos(-200,-240)
    t.pendown()

def start_point1():
    t.penup()
    t.setpos(-200,-180)
    t.pendown()

def draw_turtle():
    for a in range(4):
        t.forward(60)
        t.left(90)

def draw_turtlerow():
    for a in range(8):
        draw_turtle()
        t.forward(60)



def main():
    start_point()
    draw_turtlerow()
    start_point1()
    draw_turtlerow()
War es hilfreich?

Lösung

Bei solchen Problemen sollten Sie sich fragen, was die "Atomic" -Operation ist, die - immer wieder wiederholt - Ihre vollständige Lösung erzeugt. Sie haben bereits Ihr grundlegendes "Atom" gefunden: Zeichnen einer Seite eines Quadrats:

t.forward(60)

Was ist nun die nächste Ebene der "Atomizität"? Wenn Sie viermal einer Seite wiederholen, können Sie ein Quadrat erhalten (wie Sie selbst richtig herausgefunden haben)

for a in range(4):
    t.forward(60)
    t.left(90)

In der gleichen Sicht kommen Sie möglicherweise zu dem Schluss, dass Sie eine Linie erhalten, wenn Sie das 8 -fache der oben genannten oben wiederholen. Wenn Sie das 8 -fache einer Linie wiederholen, erhalten Sie eine vollständige Scheckplatte. Es sollte so etwas sein wie:

for col in range(8):
    for row in range(8):
        # draw a square here

Jetzt haben Sie sich bereits die Funktion geschrieben, ein Quadrat zu zeichnen. Das einzige Problem ist, dass Sie jeden von ihnen an verschiedenen Orten zeichnen müssen. Der entscheidende Punkt, den Sie sich hier konzentrieren müssen, ist: Können Sie sich eine Methode vorstellen, um diesen Ort aus den Werten von zu berechnen? col und row?

Wenn Sie stecken bleiben, habe ich eine Beispielimplementierung veröffentlicht hier, Ich bin zuversichtlich, dass Sie das nicht überprüfen müssen, Aber wenn Sie dies tun, hier ist die zusätzliche Zuordnung: Anstatt diesen Code als IS zu verwenden, wenden Sie den inneren Kreis in einem Anruf in eine separate Funktion draw_square(row, col).

BEARBEITEN: Für zusätzliche Punkte und Stolz, sobald die Übung abgeschlossen ist, Beobachten Sie, wie die meisten Linien in der Check Board immer wieder neu gezeichnet werden. Mit sehr wenig Aufwand können Sie die Effizienz Ihres Programms verdoppeln. Kannst du überlegen, wie?

HTH!

Andere Tipps

Erwägen Sie, Argumente an hinzuzufügen start_point Anstatt neue Versionen der Funktion zu erstellen. Zum Beispiel:

def start_point(x,y):
    t.penup()
    t.setpos(x,y)
    t.pendown()

Damit können Sie eliminieren start_pos1() Und Sie verwenden Code wieder, was gut ist.

In diesem Sinne erwägen Sie auch, Ihren anderen Funktionen eine gewisse Flexibilität zu verleihen. Zum Beispiel, warum nicht haben? draw_turtlerow Nehmen Sie eine Nummer, die sagt, wie viele Quadrate in der Reihe zeichnen, um sie zu zeichnen? Dann können Sie eine andere Methode erstellen, die die Anzahl der gewünschten Zeilen aufnimmt - diese Funktion würde dann aufrufen draw_turtlerow und start_pos mehrmals, um das gesamte Netz zu zeichnen.

Ich bin mir nicht sicher, ob dies die richtige Richtung für Ihre Aufgabe ist, aber ich hoffe, dass es Sie in die richtige Richtung zeigt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top