放置边界和转换变量(Python Python)

时间:2018-09-05 20:21:05

标签: python loops if-statement

我正处在学习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个变量传递给该函数。

好的,我编辑if,抱歉打错了。让我们更清楚一点,如果每次运行A,B,C和D大于50或小于零,则必须对其进行转换,因此只需使用0

2 个答案:

答案 0 :(得分:1)

A = A不执行任何操作,因此不需要。

由于B,存在将Aelif的比较混合在一起的问题。您应该将它们分开:

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)

答案 1 :(得分:0)

可以简化为:

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

.....

说A = A是多余的