随机游走 - 任何方向
Random Walk - Any Direction
我是新手,但我正在尝试创建一个在 turtle 中随机游走的程序,但我不知道我是什么 doing.This 是我需要的程序创建 Requirements, and this is what I have so far Code。我开始有点迷茫,想知道我是否正朝着正确的方向前进,或者我是否需要放弃它并重新开始
谢谢,
import turtle
import random
import math
def start():
myS = turtle.Screen()
myS.title("Random Walk")
border = 50
myWin.setworldcoordinates(-border, -border, border, border)
def go(heading, step_size):
turtle.setheading(heading)
turtle.forward(step_size)
def random_walk(step_size, steps):
angle = random.random() * 2 * math.pi
x = 0
y = 0
x = x + math.cos(angle)
y = y + math.sin(angle)
coord = (x, y)
for _ in range(steps):
go(random.choice(coord), step_size)
if __name__ == '__main__':
turtle.hideturtle()
turtle.speed('fastest')
random_walk(15, 1000)
因为这看起来像是一项家庭作业,所以我不想只修复您的错误,而是为您提供正确解决方案的指示。我也会在剧透后面隐藏提示...
如果你 运行 random_walk()
例如parameters random_walk(1, 1)
你会注意到行走的方向不会随机出现。使用某种形式的调试找出原因
你的 go()
函数需要一个角度,看看 random.choice()
产生什么
如果你修复了问题1,你会发现海龟不会再随机画线了
貌似每一步角度都没有变化。找到在每一步之前更新角度的解决方案!
角度单位:找出setheading()
期望的单位:hint
你的要求提到直线距离和行驶距离的输出。这在某种程度上听起来像是您需要某种形式的计数变量(一个或多个)。提示:如果你仔细阅读 turtle 文档,你可能会发现一个函数可以使这个任务更容易
阅读 turtle.position()
的文档。
您的 random_walk
函数可以处理很多事情;我认为它有点超过你的头脑。每一步应该做什么:
- 计算
0
和2*math.pi
之间的随机角度
- 用给定的公式计算
x
和y
- 调用
turtle.goto(x,y)
去这些坐标
start
中还有一个小错字。
import turtle
import random
import math
def start():
myS = turtle.Screen()
myS.title("Random Walk")
border = 50
myS.setworldcoordinates(-border, -border, border, border)
def go(heading, step_size):
turtle.setheading(heading)
turtle.forward(step_size)
def random_walk(steps):
x = 0
y = 0
for i in range(steps):
angle = random.random()*2*math.pi
x = x + math.cos(angle)
y = y + math.sin(angle)
turtle.goto(x,y)
if __name__=="__main__":
start()
random_walk(100)
我是新手,但我正在尝试创建一个在 turtle 中随机游走的程序,但我不知道我是什么 doing.This 是我需要的程序创建 Requirements, and this is what I have so far Code。我开始有点迷茫,想知道我是否正朝着正确的方向前进,或者我是否需要放弃它并重新开始
谢谢,
import turtle
import random
import math
def start():
myS = turtle.Screen()
myS.title("Random Walk")
border = 50
myWin.setworldcoordinates(-border, -border, border, border)
def go(heading, step_size):
turtle.setheading(heading)
turtle.forward(step_size)
def random_walk(step_size, steps):
angle = random.random() * 2 * math.pi
x = 0
y = 0
x = x + math.cos(angle)
y = y + math.sin(angle)
coord = (x, y)
for _ in range(steps):
go(random.choice(coord), step_size)
if __name__ == '__main__':
turtle.hideturtle()
turtle.speed('fastest')
random_walk(15, 1000)
因为这看起来像是一项家庭作业,所以我不想只修复您的错误,而是为您提供正确解决方案的指示。我也会在剧透后面隐藏提示...
如果你 运行
random_walk()
例如parametersrandom_walk(1, 1)
你会注意到行走的方向不会随机出现。使用某种形式的调试找出原因你的
go()
函数需要一个角度,看看random.choice()
产生什么如果你修复了问题1,你会发现海龟不会再随机画线了
貌似每一步角度都没有变化。找到在每一步之前更新角度的解决方案!
角度单位:找出
setheading()
期望的单位:hint你的要求提到直线距离和行驶距离的输出。这在某种程度上听起来像是您需要某种形式的计数变量(一个或多个)。提示:如果你仔细阅读 turtle 文档,你可能会发现一个函数可以使这个任务更容易
阅读
turtle.position()
的文档。
您的 random_walk
函数可以处理很多事情;我认为它有点超过你的头脑。每一步应该做什么:
- 计算
0
和2*math.pi
之间的随机角度 - 用给定的公式计算
x
和y
- 调用
turtle.goto(x,y)
去这些坐标
start
中还有一个小错字。
import turtle
import random
import math
def start():
myS = turtle.Screen()
myS.title("Random Walk")
border = 50
myS.setworldcoordinates(-border, -border, border, border)
def go(heading, step_size):
turtle.setheading(heading)
turtle.forward(step_size)
def random_walk(steps):
x = 0
y = 0
for i in range(steps):
angle = random.random()*2*math.pi
x = x + math.cos(angle)
y = y + math.sin(angle)
turtle.goto(x,y)
if __name__=="__main__":
start()
random_walk(100)