python替代了goto命令?
-
10-10-2019 - |
题
我有一个由乌龟图形组成的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):
好吧,单一外观是最好的,因为它总是使仪器变得更容易,并且通常使推理更容易(直到替代引入了如此多的愚蠢的布尔国旗,以至于跟踪这些旗帜比疾病更糟糕)。
不隶属于 StackOverflow