Python

Задача 3. Случайные соревнования

Что нужно сделать
Мы хотим протестировать работу электронной таблицы для участников некоторых соревнований. Есть два списка (то есть две команды) по 20 участников в каждом. В этих списках хранятся очки каждого участника (это вещественные числа с двумя знаками после точки, например 4.03). Участник одной команды соревнуется с участником другой команды под таким же номером. То есть первый соревнуется с первым, второй — со вторым и так далее.

Напишите программу, которая генерирует два списка участников (по 20 элементов) из случайных вещественных чисел (от 5 до 10). Для этого найдите подходящую функцию из модуля random. Затем сгенерируйте третий список, в котором окажутся только победители из каждой пары.

Пример:

Первая команда: [7.86, 6.76, 9.97, 9.08, 5.45, 6.9, 8.65, 5.17, 8.17, 5.06, 7.56, 7.1, 7.18, 8.25, 5.53, 7.95, 8.91, 7.11, 8.29, 9.52]
Вторая команда: [7.13, 5.7, 8.89, 5.36, 5.62, 9.46, 5.82, 8.67, 8.41, 7.0, 5.31, 7.8, 9.93, 7.76, 7.4, 8.26, 7.94, 5.71, 7.89, 7.77]
Победители тура: [7.86, 6.76, 9.97, 9.08, 5.62, 9.46, 8.65, 8.67, 8.41, 7.0, 7.56, 7.8, 9.93, 8.25, 7.4, 8.26, 8.91, 7.11, 8.29, 9.52]


ПРИМЕЧАНИЕ ОТ ПРЕПОДАВАТЕЛЯ:

У нас модуль про List comprehensions, нужно для тренировки использовать List comprehensions для решения задачи.
Циклы, повторения кода, округления... суеты много, толку мало.
 from random import randint
parts = tuple(map(list, map(lambda _: map(100..__rtruediv__, map(randint, (500,) * 20, (1000,) * 20)), (0, 0))))
print(*parts, list(map(max, zip(*parts))), sep = '\n')
Александр Хромых
Александр Хромых
54 053
Лучший ответ
Ваша задача может быть решена с помощью генератора списков (list comprehension) и модуля random. Вот пример кода, который решает вашу задачу:
 import random 

# генерируем списки с оценками для команд
team1 = [round(random.uniform(5, 10), 2) for _ in range(20)]
team2 = [round(random.uniform(5, 10), 2) for _ in range(20)]

# генерируем список победителей
winners = [max(pair) for pair in zip(team1, team2)]

# выводим результаты
print("Первая команда:", team1)
print("Вторая команда:", team2)
print("Победители тура:", winners)
В этом коде функция `random.uniform(5, 10)` генерирует случайное вещественное число от 5 до 10. Функция `round(..., 2)` округляет это число до двух знаков после запятой.

С помощью генератора списков мы создаём два списка из 20 случайных чисел для каждой команды.

Потом мы создаём список победителей с использованием функции `zip(team1, team2)`, которая объединяет два списка в список пар. В каждой паре мы выбираем максимальное значение с помощью функции `max()`.
Pasha Sadovskij
Pasha Sadovskij
56 728
это можно и самому сделать, сложного ничего нет
 from random impor randint
spis_1=[randint(5.00,10) for s in range(20)]
spis_2=[randint(5.00,10) for s in range(20)]
spis_3=[]
for s in range(20)
spis_3.append(spis_1[s] if spis_1[s]> spis_2[s] else spis_2[s])
print(spis_3)