Подтвердить что ты не робот

Как использовать сравнение и "если нет" в python?

В одной части моей программы я сомневаюсь, что правильно использую сравнение. я хочу убедиться, что (u0 <= u < u0 + step), прежде чем что-то сделать.

if not (u0 <= u) and (u < u0+step):
    u0 = u0+ step # change the condition until it is satisfied
else:
    do something. # condition is satisfied
4b9b3361

Ответ 1

Вы можете сделать:

if not (u0 <= u <= u0+step):
    u0 = u0+ step # change the condition until it is satisfied
else:
    do sth. # condition is satisfied

Использование цикла:

while not (u0 <= u <= u0+step):
   u0 = u0+ step # change the condition until it is satisfied
do sth. # condition is satisfied

Ответ 2

Приоритет оператора в python
Вы можете видеть, что not X имеет более высокий приоритет, чем and. Это означает, что not применяется только к первой части (u0 <= u). Запись:

if not (u0 <= u and u < u0+step):  

или даже

if not (u0 <= u < u0+step):  

Ответ 3

В этом конкретном случае самым ясным решением является ответ S.Lott

Но в некоторых сложных логических условиях я бы предпочел использовать некоторую булеву алгебру, чтобы получить четкое решение.

Используя закон Де Моргана ¬ (A ^ B) = ¬AvBB

not (u0 <= u and u < u0+step)
(not u0 <= u) or (not u < u0+step)
u0 > u or u >= u0+step

затем

if u0 > u or u >= u0+step:
    pass

... в этом случае "ясное" решение не более понятно: P

Ответ 4

Зачем думать? Если not смущает вас, включите предложения if и else, чтобы избежать отрицания.

Я хочу убедиться, что (u0 <= u < u0 + step) перед тем, как сделать.

Просто напишите это.

if u0 <= u < u0+step:
    "do sth" # What language is "sth"?  No vowels.  An odd-looking word.
else:
    u0 = u0+ step

Зачем переубеждать?

Если вам нужен пустой if - и не может выработать логику - используйте pass.

 if some-condition-that's-too-complex-for-me-to-invert:
     pass
 else: 
     do real work here

Ответ 5

Есть два пути. В случае сомнений вы всегда можете попробовать. Если это не сработает, вы можете добавить дополнительные фигурные скобки, чтобы убедиться, например:

if not ((u0 <= u) and (u < u0+step)):