擅长:python、mysql、java
<p>第一个问题是,您不在列表<code>moves</code>和<code>turns</code>中列出函数调用,而是列出调用的结果。第二个问题是在<code>random.choice</code>调用之后不调用函数。你实际上从中得到的是可见笔尖的闪烁效果,它会无休止地改变颜色</p>
<p>buran的回答中已经显示了如何修复它。另一种使turn和move参数不在循环中的方法是,在这里<code>lambda :</code>将函数调用转换为匿名函数,引用存储在<code>moves</code>和<code>turns</code>中:</p>
<p>另一个选项是提取实际移动并转化为函数</p>
<pre><code>from turtle import Turtle
from turtle import Screen
import random
pen = Turtle()
pen.pensize(8)
pen.speed(10)
window = Screen()
window.colormode(255)
moves=[lambda : pen.forward(30), lambda : pen.backward(30)]
turns=[lambda : pen.right(90), lambda : pen.left(90)]
for _ in range(100):
pen.color(random.randint(0,255),random.randint(0,255),random.randint(0,255))
random.choice(turns)()
random.choice(moves)()
window.exitonclick()
</code></pre>
<p>我决定只画10条线,所以海龟很可能会留在屏幕上。有关摆脱<code>while True</code>循环的更好方法(包括解释),请参阅cdlane的答案</p>