设置边界和转换变量(布尔蟒蛇)



我正处于学习python的开始旅程中,我正在努力转换代码中的条目。

我有一个 for 循环,对于每个循环,我创建了 4 个变量。下面是四个循环的结果。

A    B   C    D
0    0   18   19
0    0   52   52
0    0   18   19
-1  -1   19   52 ** in this loop A have to be 0 , B have to be 0 and D have to be 50
-1  -1   19   20 ** in this case A and B must become 0

预期成果:

A    B   C    D
0    0   18   19
0    0   50   50 (## just a mark no need to be here just to point) , C and D became 50
0    0   18   19
0    0   19   52
0    0   19   20  ** A and B got transformed to 0

所以我认为这会起作用,我需要的是这些变量都不大于 50 或低于 0。如果它们低于零,它们必须变为 0,如果它们高于 50,则变为 50,否则只是变量本身:

if A < 0:
A = 0
elif A>50:
A = 50
elif 0<A<50:
A=A
elif A < 0:
A = 0
elif B>50:
B = 50
elif 0<B<50:
B=B    ......

我还考虑过定义一个函数,每次将 4 个变量传递给函数。

好的,我编辑如果,对不起错字。让我们在每次运行时更清楚一点 A、B、C 和 D 如果高于 50 或低于零,则必须进行转换,因此只需使用 0

>A = A不做任何事情,所以不需要。

有一个问题,因为elif,您将B的比较与A混合在一起。您应该将它们分开:

if A < 0:
A = 0
elif A > 50:
A = 50
if B < 0:
B = 0
elif B > 50:
B = 50

最后,你可以只写一个可重用的函数:

def clamp(val, minval, maxval):
if val < minval:
return minval
elif val > maxval:
return maxval
else:
return val

并将其用于:

A = clamp(A, 0, 50)
B = clamp(B, 0, 50)
C = clamp(C, 0, 50)
D = clamp(D, 0, 50)

可以简化为:

if A < 0:
A = 0;
elif A > 50:
A = 50;

.....

说 A=A 是多余的

最新更新