有人能解释这个奇怪的python turtle现象吗?

1 投票
3 回答
1184 浏览
提问于 2025-04-15 13:21

如果你不知道,Python Turtle是一个帮助人们学习Python的应用程序。你可以在这个程序里使用Python代码来控制屏幕上的小乌龟。

比如,输入go(10)会让小乌龟向前移动10个像素,输入turn(10)会让它顺时针转动10度。

现在看看这个:

alt text

代码:

import random
while(1):
    r = random.randint(1,10)
    go (r)
    r = random.randint(-90,90)
    turn (r)

有没有人能解释一下这个现象?注意那条直线。Python的随机模块是不是有什么问题?

3 个回答

0

试着把值打印出来。这里有一个基于你代码片段的小Python程序,可以做到这一点:

import random
while(1):
  distance = random.randint(1,10)
  angle = random.randint(-90, 90)
  print distance, angle

我自己试过这个,发现角度“没有卡住”。我怀疑可能是Python的turtle库里有某种bug,但不在那个环境里测试的话,很难确定。

有没有办法让Python的turtle库告诉我们当前乌龟的角度?你可能也想把这个值打印出来。

1

我是PythonTurtle的创建者。

首先,我很荣幸在StackOverflow上看到关于它的第一个问题。

关于你的问题:我尝试运行了代码,但没有出现你说的那个错误。不过因为这个程序涉及随机性,所以我无法复现你电脑上发生的情况。

这看起来像是个错误,但我真的无法猜测是什么导致的。如果你再次遇到这种错误,最好是在没有随机因素的情况下,我会很感激你能把截图和代码片段发给我。我的邮箱是cool-rr@cool-rr.com。

7

在调试这样的问题时,打印出每个指令的值可能会很有帮助。希望你的海龟环境有办法把这些值显示在屏幕上的某个窗口里。你可以这样做:

while(1):
     r = random.randint(1,10)
     print "going:", r
     go (r)
     r = random.randint(-90, 90)
     print "turning:", r
     turn (r)

这个方法有很多名字,但我喜欢叫它“有疑问就多打印”。这样做可能会让你更明白为什么你的海龟会表现出你看到的那种行为。

撰写回答