【发布时间】:2017-09-05 23:43:32
【问题描述】:
这段代码 sn-p 来自一所中学教授的 Python 课程。该文件导入turtle,然后随机导入以允许在绘制正方形时从列表中选择颜色。我尝试将 if 更改为 while 循环,并得到了意想不到的结果。在 num = 0 之后循环继续,无限期地打印 0。我尝试在调用之外删除减量 sqspin(num-1) 并在上面的行上进行减量,如下所示: num = num -1 在 num 首次达到 0 后,此更改开始对每个连续循环的 num 的打印值进行随机更改。我不明白为什么当 num = 0 或 num 的随机值来自哪里时,当 num > 0 时不会终止循环。有什么线索吗? 我运行的是 3.4.3,但学校使用的是 2.7。
from turtle import *
from random import *
shape("turtle")
st()
def sq():
fd(100)
rt(90)
fd(100)
rt(90)
fd(100)
rt(90)
fd(100)
rt(90)
colors = ['red', 'green', 'orange', 'blue', 'yellow']
def pickcolor():
return choice(colors)
def sqspin(num):
print(num)
if num > 0:
sq()
rt(5)
mycolor = pickcolor()
pencolor(mycolor)
sqspin(num-1)
sqspin(5)
【问题讨论】:
-
为什么要添加行号?
-
因为你永远不会改变
num!你在递归调用中传递了num - 1,但这不会改变调用者中的num。 -
你说了两次“我尝试改变...”。你有没有尝试过一种改变,然后是另一种?或者您是否同时尝试了两种更改?你能分享你最终得到的确切代码,而不是你开始的代码吗?
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。给我们一个特定的问题,你得到的输出,你期望的输出,以及重现它所需的代码。您当前的代码没有运行。
-
不要将代码放入 cmets。没有办法让它清晰易读。改为编辑问题
标签: python random turtle-graphics