Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 边界内的随机游动_Python_Turtle Graphics - Fatal编程技术网

Python 边界内的随机游动

Python 边界内的随机游动,python,turtle-graphics,Python,Turtle Graphics,我想使用海龟创建一个程序,在随机距离内沿随机方向移动50次,在x轴和y轴上保持在-300到300之间(在相反方向旋转,到达边界时向前移动) 当if语句为true时,代码可以正常运行,但偶尔在执行else语句时(由于超出边界),else语句将一次又一次地执行,直到计数达到50。换句话说,它沿着同一条线前后移动。我不明白为什么,因为当海龟反弹时,它应该在边界内,并再次运行if语句,而不是else语句。我怎样才能解决这个问题,让海龟在弹跳后继续它的随机行走?谢谢 我的代码如下所示 import tur

我想使用海龟创建一个程序,在随机距离内沿随机方向移动50次,在x轴和y轴上保持在-300到300之间(在相反方向旋转,到达边界时向前移动)

当if语句为true时,代码可以正常运行,但偶尔在执行else语句时(由于超出边界),else语句将一次又一次地执行,直到计数达到50。换句话说,它沿着同一条线前后移动。我不明白为什么,因为当海龟反弹时,它应该在边界内,并再次运行if语句,而不是else语句。我怎样才能解决这个问题,让海龟在弹跳后继续它的随机行走?谢谢

我的代码如下所示

import turtle
import random

count = 0
while count <51:
    count += 1
    if (turtle.xcor() >-300 and turtle.xcor() <300) and\
       (turtle.ycor() >-300 and turtle.ycor() <300):
        turtle.forward(random.randint(30,100))
        turtle.right(random.randint(0,360))
    else:
        turtle.right(180)
        turtle.forward(300)
导入海龟
随机输入
计数=0

当count-300和turtle.xcor()-300和turtle.ycor()时,您是否尝试在
if
语句中切换
turtle.forward(random.randint(30100))
turtle.right(random.randint(0360))


感觉就像你走出了束缚,然后转身。然后它转到
else
,然后它再次转向,并进一步进入界外区域

在if语句中,您应该首先转向,然后继续:

假设你在(0299),乌龟面朝上,你将前进(假设100),然后转向(假设向左)。然后,您将在(0399)处,面向左侧

然后您将进入else循环,向右/300,因此将处于300/399,因此仍然超出范围(请注意,
forward(300)
可能有点太多)

如果你先转弯,然后再往前走,你真的会掉头。
但再一次,300可能太多了。我更希望通过以下方式保留以前的距离:

if (-300 < turtle.xcor() <300) and (-300 < turtle.ycor() <300):
    turtle.right(random.randint(0,360))
    distance = random.randint(30,100) 
    turtle.forward(distance)
else:
    turtle.right(180)
    turtle.forward(distance)

if(-300
。然后再次循环。

发生的情况是它返回到窗口中,然后旋转180度,向后移动,并重复此操作,直到计数达到50。相反,我希望它在返回到窗口后拾取一个随机角度和距离(执行if语句),但它会连续执行else语句。旁注:您可以使用
-300