我正在尝试从Python教程https://youtu.be/BfS2H1y6tzQ?t=156复制代码,然后逐字复制,但它在视频中的工作方式不一样。
import random
def random_walk(n):
"""Return coodrinates after 'n' block random walk."""
x = 0
y = 0
for i in range(n):
step = random.choice(['N','S','E','W'])
if step == 'N':
y = y + 1
elif step == 'S':
y = y - 1
elif step == 'E':
x = x + 1
elif step == 'W':
x = x - 1
return (x, y)
我希望“ for i in range(n):”重复下一行n次,但似乎只尝试一次,因此将新坐标潜水一个数字差。我期待的结果更像https://youtu.be/BfS2H1y6tzQ?t=176的结果。作为参考,我使用的是Python 3.7.3。
答案 0 :(得分:1)
您的return
语句意图错误,因此必须删除一些空白。下面是正确的代码,请注意最后一行。
import random
def random_walk(n):
"""Return coodrinates after 'n' block random walk."""
x = 0
y = 0
for i in range(n):
step = random.choice(['N','S','E','W'])
if step == 'N':
y = y + 1
elif step == 'S':
y = y - 1
elif step == 'E':
x = x + 1
elif step == 'W':
x = x - 1
return (x, y)
答案 1 :(得分:1)
您正在for循环中返回(x,y)。只要正确缩进即可。