作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须编写代码来计算醉汉步行的路线和长度。
练习:一个酒鬼开始漫无目的地行走,从一根灯柱开始。在每个时间步,他随机向北、向东、向南或向西迈出一步。酒鬼能走多远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 作为输出。
如果您对此练习有任何帮助,我将不胜感激。
最佳答案
这是一个好的开始。
主要问题是您无法调用 randint
:
a = random.randint
这只是将 a
变成了 random.randint
的别名。相反,它应该是
a = random.randint(0, 3)
此外,您重复 if a == 3:
两次。
此外,将 x
和 y
设置为零应该在函数内部完成,而不是在外部。
最后,您的循环(顺便说一下,它的一次迭代太短了)实际上并没有像循环一样运行,因为您总是在第一次迭代期间return
。
附言这是给你的一个小分手谜题。弄清楚以下是如何工作的:
dx, dy = random.choice([(-1, 0), (1, 0), (0, -1), (0, 1)])
x += dx
y += dy
关于Python:酒鬼走路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26195815/
我是一名优秀的程序员,十分优秀!