Question

Je suis très nouveau à python. Je dois dessiner cette forme pour le collège mais je trouve qu'il est vraiment difficile, donc je suis en train de faire place avant d'entrer dans cette image.

En tout cas voici ma question: Comment puis-je avoir 8 lignes? (Il y a 8 carré en 1 ligne) Je ne peux pas continuer à ajouter def start_point1(): Ce ne serait pas la bonne façon de le faire.

entrer image description ici

#!/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()
Était-ce utile?

La solution

Dans ce genre de problèmes, vous devez vous demander quel est l'opération « atomique » qui - répété à plusieurs reprises - va générer votre solution complète. Vous avez déjà trouvé votre « atome » de base: le dessin d'un côté d'un carré:

t.forward(60)

Maintenant, quel est le niveau de « atomicité »? Eh bien, en répétant quatre fois par côté, vous pouvez obtenir un carré (comme vous avez trouvé correctement vous-même)

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

dans le même sens, vous pourriez arriver à la conclusion que si vous répétez 8 fois ce qui précède, vous obtenez une ligne, et si vous répétez 8 fois par ligne vous obtiendrez une carte de contrôle complète. Il devrait être quelque chose comme:

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

Maintenant, vous vous déjà écrit la fonction pour dessiner un carré, le seul problème est que vous devez tirer chacun d'entre eux à des endroits différents. Le point clé que vous devez vous concentrer ici est: vous pouvez penser à une méthode de calcul de cet emplacement à partir des valeurs de col et row

Si vous êtes coincé, j'ai posté un exemple d'implémentation , Je suis sûr que vous aurez pas besoin de vérifier que sur , mais si vous le faites, voici la mission supplémentaire:. au lieu d'utiliser ce code tel quel, tournez le cercle dans un appel à une fonction séparée draw_square(row, col)

EDIT: Pour des points supplémentaires et la fierté, une fois l'exercice terminé, observer comment la plupart des lignes du tableau de contrôle sont redessinés à plusieurs reprises . Avec très peu d'effort, vous pouvez doubler l'efficacité de votre programme. Pouvez-vous penser comment?

HTH!

Autres conseils

Pensez à ajouter des arguments à start_point au lieu de créer de nouvelles versions de la fonction. Par exemple:

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

Avec cela, vous pouvez éliminer start_pos1() et vous réutilisation du code, ce qui est bon.

Le long de ces lignes, pensez à ajouter une certaine souplesse à vos autres fonctions. Par exemple, pourquoi ne pas avoir draw_turtlerow prendre un certain nombre qu'il indique le nombre de places pour dessiner dans la ligne? Ensuite, vous pouvez faire une autre méthode qui prend le nombre de lignes que vous voulez - cette fonction serait alors appeler draw_turtlerow et start_pos plusieurs fois pour dessiner la grille entière.

Je ne suis pas sûr que ce soit la bonne direction pour vous mission, mais j'espère que vous pointe dans la bonne direction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top