Работа проверки на наличие элемента в массиве (PYTHON)
#На числовой прямой даны два отрезка: P=[10,29] и Q=[13,18]
#Укажите наибольшую возможную длину отрезка A, для которого
#выражение ((x∈A)<=(x∈P))or(x∈Q) тоджественно истинно,
#то есть принимает значение 1 при любых целых неотрицательных x?
def f(x,A):
P=[i for i in range(10,30)]
Q=[i for i in range(13,18)]
return ((x in A) <= (x in P)) or (x in Q)
for A in range(0,500):
OK=True
for x in range(0,500):
if not f(x,A):
OK=False
break
if OK:
print(A)
В функции отказывает работать проверка наличии элемента в массиве. Выдаёт ошибку: argument of type 'int' is not iterable'. Подскажите, как переписать функцию, чтобы проверка заработала?
Ответы (1 шт):
Автор решения: Maksim
→ Ссылка
В данной задачи мы должны найти А (отрезок) на котором любое для любого х верно выражение ((x∈A)<=(x∈P))or(x∈Q). Вот мое решение
def f(x):
p = {'min': 10, 'max': 29}
q = {'min': 13, 'max': 18}
value_ = (p['min'] <= x <= p['max']) or (q['min'] <= x <= q['max'])
return value_
a = []
for i in range(1, 500):
iter = f(i)
if iter == True:
a.append(i)
a.sort()
print(a)
otrezok = {}
y1 = otrezok['min'] = a[0]
y2 = otrezok['max'] = a[len(a)-1]
print(f'Наибольшая длина отрезка А = [{y1}, {y2}]')