Skip to main content
 首页 » 编程设计

python之重复 if 语句

2025年05月04日21bhlsheji

我的代码在 3D 空间中映射随机游走时遇到问题。这段代码的目的是模拟 3 维随机游走的 N 步。在每一步中,都会选择一个随机方向(北、南、东、西、上、下),并在该方向上采取大小为 1 的步长。这是我的代码:

import random  # this helps us generate random numbers 
 
N = 30  # number of steps 
 
n = random.random()  # generate a random number 
 
x = 0 
y = 0 
z = 0 
count = 0  
while count <= N: 
 
    if n < 1/6: 
        x = x + 1           # move east 
        n = random.random() # generate a new random number 
    if n >= 1/6 and n < 2/6: 
        y = y + 1           # move north 
        n = random.random() # generate a new random number 
    if n >= 2/6 and n < 3/6: 
        z = z + 1           # move up 
        n = random.random() # generate a new random number 
    if n >= 3/6 and n < 4/6: 
        x = x - 1           # move west 
        n = random.random() # generate a new random number 
    if n >= 4/6 and n < 5/6: 
        y = y - 1           # move south 
        n = random.random() # generate a new random number 
    if n >= 5/6: 
        z = z - 1           # move down 
        n = random.random() # generate a new random number 
 
    print("(%d,%d,%d)" % (x,y,z)) 
    count = count + 1 
 
print("squared distance = %d" % (x*x + y*y + z*z))   

问题是我在每次迭代之间得到的不仅仅是一个步骤。我添加了注释以显示迭代之间的步骤差异。

这是输出的前 10 行:

(0,-1,0) #1 step   
(0,-2,0) #1 step   
(1,-3,1) #4 steps   
(1,-4,1) #1 step   
(1,-3,1) #1 step   
(1,-2,1) #1 step   
(2,-2,0) #2 steps   
(2,-2,0) #0 steps   
(2,-2,0) #0 steps   
(2,-1,0) #1 step   

请您参考如下方法:

如果您从 if 语句中删除多个 n = random.random() 并在开始处替换为单个 n = random.random() while 循环然后每个循环只有一个步骤。