Domanda

Sono molto nuovo a Python. Ho bisogno di disegnare questo forma per il college, ma lo trovo davvero difficile in modo che io sto cercando di fare piazza prima di andare in quell'immagine.

In ogni caso ecco la mia domanda: Come posso avere 8 righe? (Ci sono 8 quadrati in 1 fila) Non posso continuare ad aggiungere def start_point1(): Questo non sarebbe il modo corretto di farlo.

entrare descrizione dell'immagine qui

#!/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()
È stato utile?

Soluzione

In questo tipo di problemi, si dovrebbe chiedere che cosa è l'operazione "atomica" che - ripete più e più volte - genererà la soluzione completa. È già trovato il tuo "atom" di base: disegnando un lato di un quadrato:

t.forward(60)

Ora, qual è il prossimo livello di "atomicità"? Beh, ripetendo quattro volte laterali, è possibile ottenere un quadrato (come l'avete trovato correttamente da soli)

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

Ora sulla stessa linea, si potrebbe giungere alla conclusione che se si ripete 8 volte quanto sopra, si ottiene una linea, e se si ripete 8 volte una linea si otterrà una scheda di controllo completo. Dovrebbe essere qualcosa di simile:

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

Ora, è già da soli scritto la funzione per disegnare un quadrato, l'unico problema è che si avrebbe bisogno di richiamare ciascuno di loro in luoghi diversi. Il punto chiave è necessario concentrarsi qui è: si può pensare a un metodo per calcolare questa posizione a partire dai valori di col e row

Se ti trovi in ??difficoltà, ho postato un esempio di implementazione qui , Sono sicuro che non sarà necessario verificare che , ma se lo fai, ecco l'assegnazione in più:. invece di utilizzare quel codice così com'è, ruotare il cerchio interno in una chiamata a una funzione separata draw_square(row, col)

Modifica per guadagnare punti extra e l'orgoglio, una volta completato l'esercizio, osservare come la maggior parte delle linee nella scheda di controllo vengono ridisegnati più e più volte . Con poco sforzo si può raddoppiare l'efficienza del vostro programma. Riuscite a pensare a come?

HTH!

Altri suggerimenti

Si consideri l'aggiunta di argomenti per start_point invece di creare nuove versioni la funzione. Per esempio:

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

Con questo, è possibile eliminare start_pos1() e si sono riutilizzo del codice, che è buono.

Lungo queste linee, considerare l'aggiunta di una certa flessibilità per le vostre altre funzioni pure. Per esempio, perché non hanno draw_turtlerow prendere un numero che dice che quanti quadrati disegnare in prima fila? Poi si potrebbe fare un altro metodo che accetta il numero di righe che si desidera - questa funzione sarebbe quindi chiamare draw_turtlerow e start_pos più volte per richiamare l'intera griglia.

Non sono sicuro che questa è la direzione giusta per voi assegnazione, ma spero che si punta nella direzione giusta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top