Python中替代goto命令的选项?
我有一个用Python写的程序,主要是用海龟图形库来画图。这个程序会问用户想画多少个正方形,然后每画一个正方形,就用下面的代码把一个计数器加1:
counter=1
<drawing code here>
counter +=1
接下来,我想检查一下用户输入的正方形数量和实际画的数量是否相等。如果相等,我想跳到脚本的最后一部分,让它显示完成!!。但是我不知道怎么跳到脚本的某个特定部分,因为我习惯的那种goto命令在Python里不支持(我知道,goto=乱七八糟的代码)。
我发现一个简单的解决办法,就是下载一个别人做的模块,这样就可以在Python里导入goto命令,像在批处理文件里那样使用。但我更希望能找到一个原生的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 个回答
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
+--+
| |
[省略]
2
别先数好有多少个方块再去最后画,而是直接根据需要的次数循环,每次画一个方块。
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()
不要把问题想成一长串的指令。相反,试着把问题拆分成更小的动作,比如“画一个球”,然后把每个动作写成一个步骤;接着再想想怎么把这些步骤组合在一起,达到你的目标。如果你发现自己在重复写同样的代码,那说明你可能走入了误区。