Frage

Ich habe ein Python-Programm, das essentailly gemacht Schildkröte Grafiken, und es fragt im Grunde den Benutzer, wie viele Quadrate zu zeichnen, und dann nach jedem Platz, fügt es 1 zu einem Zähler mit:

counter=1
<drawing code here>
counter +=1

Und dann nach, dass ich einen Scheck zu sehen tun wollte, wenn die Anzahl der Quadrate der Menge gleich ist, dass der Benutzer eingegeben, und wenn ja, dann wollte ich auf den Grund des Skripts gehen, wo ich würde macht es so etwas sagen wie getan !! . aber ich weiß nicht, wie es zu einem bestimmten Teil des Skripts als goto Befehl gehen zu machen, dass ich in Batch gewohnt bin nicht in Python unterstützt (ich weiß, ginge zu = Spaghetti-Code)

fand ich eine einfache Abhilfe ist nur ein Modul zum Download, dass jemand gemacht, mit dem Sie den Befehl GOTO in Python importieren und verwenden, wie Sie in Batch würden, aber ich würde eine native Python-Lösung wie wenn überhaupt!

mein aktueller Code ist:

from turtle import *
import time
counter=1
color("red", "blue")
down()

user=int(raw_input('how many balls do you want?'))
counter +=1
if user===counter:

# solution goes here!

else:

for step in range(24):
        right(105)
        forward(100)
        right(105)
        forward(100)
        right(105)
        forward(100)
        right(105)
        forward(100)

up()
goto(120,0)
down()


counter +=1
if user==counter:

#solution goes here!

else:

for step in range(24):
        right(105)
        forward(100)
        right(105)
        forward(100)
        right(105)
        forward(100)
        right(105)
        forward(100)

up()
goto(0,-50)
write("Done!")

time.sleep(5) 

Wenn Sie eine Antwort oder Alternative zu diesem Problem haben würde es sehr zu schätzen!

War es hilfreich?

Lösung

Ist diese Hilfe?

import turtle   # don't pollute the namespace
import time

def getInt(msg):
    return int(raw_input(msg))

def drawBall():
    turtle.down()
    for i in range(96):
        turtle.right(105)
        turtle.forward(100)
    turtle.up()

def moveOver():
    turtle.goto(120,0)

def Done():
    turtle.goto(0,-50)
    turtle.write('Done!')
    time.sleep(5)

def main(): 
    turtle.color('red','blue')
    for i in range(getInt('How many balls do you want?')):
        drawBall()
        moveOver()
    Done()

if __name__=="__main__":
    main()

Denken Sie nicht in Form einer einzigen langen Liste von Anweisungen. Denken Sie stattdessen über Ihr Problem in kleinere Aktionen zu brechen, wie „Zeichnen eine Kugel“ und schreibt jede dieser Aktionen als Verfahren; dann darüber nachdenken, wie diese Verfahren miteinander verbinden Ihr Ziel zu erreichen. Das Schreiben den gleichen Code wiederholt ein Zeichen ist, dass Sie es falsch machen.

Andere Tipps

Do die Anzahl der Plätze nicht überprüfen und geht dann zu Ende, nur Schleife der entsprechende Anzahl von Zeiten statt, ein Quadrat jedes Mal zu ziehen.

einige Hinweise:

>>> def square():
    print "+--+"
    print "|  |"
    print "|  |"
    print "+--+"
    print


>>> range(5)
[0, 1, 2, 3, 4]
>>> for x in range(5):
    print x
    square()


0
+--+
|  |
|  |
+--+

1
+--+
|  |

[schnipp]

Break nach unten Ihren Code in Funktionen, dann return verwenden, wenn die verbleibende Code einer Funktion überspringen wollen.

UPDATE: Ich weiß nicht notwendigerweise condone mehrere Austrittspunkte für eine Funktion, wie ein Kommentator offensichtlich angenommen; Diese Antwort ist im Zusammenhang mit der Frage. Meine Meinung über die Angelegenheit von mehreren Ausgängen zusammenfällt mit dass von Tim Peters:

Nun, Single-Ausgang ist am besten, weil es immer macht Instrumentierung einfacher und oft macht einfache Argumentation (bis so viele, bis die alternativen einleiten doof Boolesche Flags, die den Überblick über die zu halten, ist schlimmer als die Krankheit).

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