Оценить несколько значений для условия - PullRequest
0 голосов
/ 16 января 2019

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

Ниже приведен быстрый пример, демонстрирующий, чего я хочу достичь.

a=1
b=3
c=5

if 0 <= {a,b,c} <= 6:
    print("yes")
else:
    print("no")

Я ожидаю, что это напечатает да, но это печатает нет. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

В Python 3.x для целых чисел вы можете использовать all с range:

if all(x in range(7) for x in (a, b, c)):
    # your logic

Для нецелых чисел или Python 2.x вы можете использовать цепочечные операции:

if all(0 <= x <= 6 for x in (a, b, c)):
    # your logic

Проблема вашей логики в том, что Python не реализует векторизованные операции с операторами сравнения.

0 голосов
/ 16 января 2019

Что я делаю не так?

{a,b,c} представляет собой набор из трех значений. Это не значение между 0 и 6.

Условие 0 <= {a,b,c} <= 6 фактически создает исключение в Python 3, потому что не имеет смысла спрашивать, является ли набор большим или меньшим, чем число. Если ваш код печатает "no", то вы, вероятно, используете Python 2.

Если вы хотите проверить, выполняется ли условие для каждого значения в некоторой последовательности, вы можете использовать встроенную функцию all.

if all(0 <= x <= 6 for x in (a,b,c)):
    print("yes")
else:
    print("no")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...