我有以下简单的“随机游走”代码:
import random
def random_walk(n):
"""Return coordinates 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 == 'W':
x = x + 1
else:
x = x - 1
return (x,y)
for i in range(25):
walk = random_walk(10)
print(walk, "Distance from home = ", abs(walk[0]) + abs(walk[1]))
我有两个问题:
(A)当我在Visual Studio Code中运行它时,它告诉我变量i为 未使用。它带有“下划线”,给我以下错误:
[pylint] Unused variable 'i' [W0612] (10,6)
[pylint] Unused variable 'i' [W0101] (22,3)
请注意,Sublime和Jupyter可以毫无问题地运行它。
(B)由于某种原因,我在x轴上移动的步幅不能超过一个 方向和一个y方向。结果是我离家的距离 始终为0,1或但是上面的代码清楚地表明我们 对于n个块而不是 仅0、1或2个块。
(0, 1) Distance from home = 1
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(0, 1) Distance from home = 1
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(0, 0) Distance from home = 0
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(0, 0) Distance from home = 0
(1, 0) Distance from home = 1
(1, 0) Distance from home = 1
(0, 0) Distance from home = 0
(0, 1) Distance from home = 1
(1, 0) Distance from home = 1
(0, 0) Distance from home = 0
(1, 0) Distance from home = 1
(0, 0) Distance from home = 0
(0, 0) Distance from home = 0
出什么问题了?
答案 0 :(得分:1)
“未使用的变量”消息不是错误,而是警告。这说明您是真的:您在for语句的开头设置了i
,但没有在任何地方使用i
的值。如果不需要i
的值,则可以忽略该警告。默认情况下,Jupyter显然不认为警告您未使用它足够重要(或者它指示您错过了警告)。他们可能有一个选项,您可以将其设置为获取此类警告。
由于您没有使用i
,因此可以使用_
来避免警告(_
代替了您未使用的变量名):>
for _ in range(n):
而且,在您的主程序中:
for _ in range(25):
您有错字:y == y - 1
应该是y = y - 1
由于缩进,return (x,y)
位于for循环中。因此,您的函数每次都在第一次迭代后返回。您需要在for循环完成后使用它。伸出它。 Python使用缩进来确定块结构。
for i in range(n):
...
else:
x = x - 1
return (x,y)