0

我有一个基本上由海龟图形组成的 python 程序,它基本上是询问用户要绘制多少个正方形,然后在每个正方形之后,它使用以下方法将 1 添加到计数器:

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

然后我想做一个检查,看看方块的数量是否等于用户输入的数量,如果是,那么我想去脚本的底部,在那里我会说像完成的事情!. 但我不知道如何让它转到脚本的某个部分,因为我习惯于批量使用的 goto 命令在 python 中不受支持(我知道,goto= 意大利面条代码)

我发现一个简单的解决方法就是下载某人制作的模块,该模块可让您将 goto 命令导入 python 并像批量使用它一样使用它,但如果有的话,我想要一个本机 python 解决方案!

我当前的代码是:

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) 

如果您对此问题有答案或替代方法,将不胜感激!

4

4 回答 4

3

这有帮助吗?

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()

不要用一长串指令来思考。而是考虑将您的问题分解为较小的动作,例如“画一个球”,并将每个动作写成一个过程;然后考虑如何将这些程序结合在一起以实现您的目标。重复编写相同的代码表明你做错了。

于 2010-12-14T20:38:46.120 回答
2

不要检查正方形的数量然后走到最后,只需循环适当的次数即可,每次绘制一个正方形。

于 2010-12-14T19:40:16.547 回答
0

一些提示:

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


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


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

1
+--+
|  |

[剪辑]

于 2010-12-14T19:49:14.017 回答
0

将您的代码分解为函数,然后return在您想跳过函数的剩余代码时使用。

更新:正如评论者显然假设的那样,我不一定宽恕一个函数的多个退出点;这个答案是在问题的背景下。我对多出口问题的看法与Tim Peters 的看法一致:

好吧,单出口是最好的,因为它总是使检测更容易,并且通常使推理更容易(直到替代方案引入了如此多愚蠢的布尔标志,以至于跟踪这些标志比疾病更糟糕)。

于 2010-12-15T00:21:47.827 回答