拒绝重复时如何修复“ i in range(n)”

时间:2019-07-17 22:34:35

标签: python

我正在尝试从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。

2 个答案:

答案 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)。只要正确缩进即可。