我有一个由乌龟图形组成的Python程序,它基本上要求用户绘制多少个正方形,然后在每个正方形之后,它使用以下方式添加了1个正方形。

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

然后,我想进行检查以查看平方的数量是否等于用户输入的数量,如果是的,那么我想转到脚本的底部,我会说它说就像是 完毕!!. 。但是我不知道该如何使其转到脚本的某个部分,因为我曾经在python中不支持我曾经在批处理的goto命令(我知道,goto = spaghetti code)

我发现一个简单的解决方法只是下载某人制作的模块,该模块使您可以将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) 

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

有帮助吗?

解决方案

这有帮助吗?

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

不要考虑一长串说明。相反,请考虑将您的问题分解为较小的动作,例如“绘制球”,并将每个动作写为程序;然后考虑如何将这些程序加在一起以实现您的目标。反复编写相同的代码表明您做错了。

其他提示

请勿检查正方形的数量,然后再进入末端,只需循环适当的次数,每次绘制一个正方形即可。

一些提示:

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


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


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

1
+--+
|  |

狙击

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

更新:正如评论者显然假定的那样,我不一定宽恕功能的多个出口点;这个答案是在问题的背景下。我对多项式问题的看法与 蒂姆·彼得斯(Tim Peters):

好吧,单一外观是最好的,因为它总是使仪器变得更容易,并且通常使推理更容易(直到替代引入了如此多的愚蠢的布尔国旗,以至于跟踪这些旗帜比疾病更糟糕)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top