我必须编写一个代码来计算酒鬼步行的路线和长度。
Excersise: 一个酒鬼开始漫无目的地走路,从一个灯柱开始。在每个时间步,他随机地向前迈出一步,无论是北,东,南,西。酒鬼会走多远 从N个台阶后的灯柱? 为了模仿醉汉的步骤,我们可以用数字对每个方向进行编码,这样当随机变量等于0时,醉汉向北移动,如果随机变量等于1,则醉汉向东移动,依此类推。
编写一个带整数参数N的程序,并模拟N步的随机游走运动。在每个步骤之后,打印随机游走的位置,将灯柱视为原点(0,0)。另外,打印距离原点的最终平方距离。
到目前为止,我已经提出:
import random
x = 0
y = 0
def randomWalk(N):
for i in range (1, (N)):
a = random.randint
if a == 0:
x = x+0
y = y+1
return (x, y)
print (x, y)
if a == 1:
x = x+1
y = y+0
return (x, y)
print (x, y)
if a == 3:
x = x+0
y = y-1
return (x, y)
print (x, y)
if a == 3:
x = x-1
y = y+0
return (x, y)
print (x, y)
print(randomWalk(input()))
但是当我测试这段代码时,我得到None作为输出。
我会感谢你对这个例外的任何帮助。
答案 0 :(得分:4)
这是一个好的开始。
主要问题是您未能拨打randint
:
a = random.randint
这只会将a
变为random.randint
的别名。相反,它应该是
a = random.randint(0, 3)
另外,您重复if a == 3:
两次。
此外,将x
和y
设置为零应该在函数内部完成,而不是在外部。
最后,你的循环(顺便说一下,这是一次迭代太短)并不能真正起到循环的作用,因为你在第一次迭代中总是return
。
P.S。这是一个有点离别的难题。弄清楚以下工作原理:
dx, dy = random.choice([(-1, 0), (1, 0), (0, -1), (0, 1)])
x += dx
y += dy
答案 1 :(得分:0)
def randomWalk(steps):
x = 0 # Make sure you initialize the position to 0,0 each time the function is called
y = 0
directions = ['N', 'E', 'S', 'W'] # To keep track of directions, you could use strings instead of 0, 1, 2, 3.
for i in range(steps):
a = random.choice(directions) # You can use random.choice to choose a dir
if a == 'N':
y += 1
print('Current position: ({},{})'.format(x,y)) # You can print the position using format
elif a == 'S':
y -= 1
print('Current position: ({},{})'.format(x,y))
elif a == 'E':
x += 1
print('Current position: ({},{})'.format(x,y))
else:
x -= 1
print('Current position: ({},{})'.format(x,y))
测试
>>> randomWalk(8)
Current position: (0,-1)
Current position: (1,-1)
Current position: (1,0)
Current position: (1,-1)
Current position: (0,-1)
Current position: (-1,-1)
Current position: (-1,0)
Current position: (0,0)