Python отрезки пересечения по оси x

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
a1, b1, a2, b2 = (int(input()) for i in range(4))
print(*set(range(a1, b1 + 1)) & set(range(a2, b2 + 1)) or 'пустое множество', sep=' ')
извините если вопрос тупой, только изучаю питон, программа почему то выдаёт п у с т о е м н о ж е с т в о, через пробелы, если убираю сепаратор выдаёт отрезки в виде 24 а надо через пробел, просто хочу разобраться?
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Пара вопросов:
1) Вы знаете, что & в питоне это бинарный оператор с числами? а не логическое 'и'
2) Какова вообще цель программы? Если вывести текст по буквам через пробел, то проще так: print(*text)
3)Зачем вы создаете два множества в print ?
 

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
На числовой прямой даны два отрезка: [a_1; \, b_1][a1; b1] и [a_2; \, b_2][a2; b2]. Напишите программу, которая находит их пересечение.

Пересечением двух отрезков может быть:

  • отрезок;
  • точка;
  • пустое множество.
Формат входных данных
На вход программе подаются 4 целых числа a_1, \, b_1, \, a_2, \, b_2a1,b1,a2,b2, каждое на отдельной строке. Гарантируется, что a_1 < b_1a1<b1 и a_2 < b_2a2<b2.

Формат выходных данных
Программа должна вывести на экран границы отрезка, являющегося пересечением, либо общую точку, либо текст «пустое множество».
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Если я правильно понял и сначала вводятся границы одного отрезка, а потом другого, то можно так:
Python:
start1, end1, start2, end2 = (int(input()) for a in range(4))

first = range(start1, end1 + 1)

second = range(start2, end2 + 1)

general = [a for a in first if a in second]

if len(general) == 0:

    print('пустое множество ')

else:

    print(*sorted({general[0], general[-1]}))
 

qzpxg

Новичок
Пользователь
Мар 25, 2021
24
0
1
работает, большое спасибо)
 

Форум IT Специалистов