Проверка переменной на соответствие диапазону
Допустим, есть входные данные: четыре числа от 1 до 8 каждое. Как сделать проверку каждого числа на соответствие заданному диапазону?
Я сделал вот такую запись, но она просто огромная: вдруг будет var_with_long_name или просто много переменных. Как сократить эту запись?
a, b, c, d = int(input()), int(input()), int(input()), int(input())
if a < 1 or a > 8 or b < 1 or b > 8 or c < 1 or c > 8 or d < 1 or d > 8:
print('Еррор')
else:
print('Не еррор, идём работать дальше')
Ответы (5 шт):
Вот для любого количества вводимых данных
cont = True
while cont is True:
v = int(input())
if 1 <= v <= 8:
print("Не еррор, идём работать дальше")
else:
print("Еррор")
cont = False
if 1 <= a <= 8 and 1 <= b <= 8 and 1 <= c <= 8 and 1 <= d <= 8:
print('Не еррор, идём работать дальше')
Универсально:
range_ = range(1, 9)
for x in map(int, input().split()):
if x not in range_:
print('Error')
break
else:
print('Succes')
способ 1:
использовать:
1 <= value <= 8
если много переменных, то можно использовать функцию all
функция all
выдает True
если верны все значения иначе False
a = 5
b = 3
c = 4
print(all(map(lambda i: 1 <= i <= 8, (a, b, c))))
способ 2: использовать range
для задания диапазона и ключевое слово in
для проверки
all(map(lambda i: i in range(1, 9), (a, b, c)))
способ 3: это модификация способа 2, которая позволяет работать с любыми числами:
all(map(lambda i: i in (1, 2, 3, 4, 5, 6, 7, 8), (a, b, c)))
например, если надо было бы проверить диапазоны от 1 до 3 и от 6 до 8, то было бы
all(map(lambda i: i in (1, 2, 3, 6, 7, 8), (a, b, c)))
P.S.
вместо map
можно использовать более короткую запись с for
:
all(1 <= i <= 8 for i in (a, b, c))
или
all(i in range(1, 9) for i in (a, b, c))
мне кажется переменные лучше положить в список
a, b, c, d = int(input()), int(input()), int(input()), int(input())
arr = [a, b, c d]
if 1 <= min(arr) and max(arr) <= 9:
print('Еррор')
else:
print('Не еррор, идём работать дальше')