Расстановка границ и преобразование переменных (логический питон) - PullRequest
0 голосов
/ 05 сентября 2018

Я нахожусь на начальном этапе изучения 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 голосов
/ 05 сентября 2018

A = A ничего не делает, поэтому не нужно.

Существует проблема в том, что вы смешиваете сравнения B с A из-за elif. Вы должны разделить их:

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)
0 голосов
/ 05 сентября 2018

Может быть упрощено до:

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

.....

Сказать, что A = A является излишним

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...