Пожалуйста, помогите решить задачу на Python. Упражнение 124, 125, 146
Упражнение 124. Линия наилучшего соответствия
(41 строка)
Линией наилучшего соответствия называется прямая, проходящая на
наименьшем удалении от набора из n точек. В данном упражнении мы
предположим, что каждая точка в коллекции обладает координатами x
и y. Символы и мы будем использовать для подсчета средних значений по осям x и y соответственно. Линия наилучшего соответствия
представлена формулой y = mx + b, где m и b вычисляются по следующим
формулам:
Напишите программу, которая будет запрашивать у пользователя координаты коллекции точек. При этом пользователь должен вводить сначала координату x, а затем y. Ввод координат может продолжаться до тех
пор, пока пользователь не оставит пустым ввод координаты x. Отобразите формулу, характеризующую линию наилучшего соответствия, вида
y = mx + b путем замены переменных m и b на значения, вычисленные
по предыдущим формулам. Например, если пользователь введет три
точки (1, 1), (2, 2.1) и (3, 2.9), итоговая формула должна приобрести вид
y = 0,95x + 0,1
Упражнение 125. Тасуем колоду карт
(Решено. 49 строк)
Стандартная игральная колода состоит из 52 карт. Каждая карта соответствует одной из четырех мастей (пики, червы, бубны и трефы) и одному
из 13 номиналов (от 2 до 10, валет (J), дама (Q), король (K) и туз (A)).
Таким образом, каждая игральная карта может быть представлена при
помощи двух символов. Первый из них указывает на номинал карты (от
2 до 9, T (десятка), J, Q, K или A), а второй – на масть (s = пики (spades),
h = червы (hearts), d = бубны (diamonds) и c = трефы (clubs)). В табл. 5.1
представлены некоторые из возможных обозначений игральных карт.
Таблица 5.1. Игральные карты
Карта Обозначение
Валет пик Js
Двойка треф 2c
Десятка бубен Td
Туз червей Ah
Девятка пик 9s
Начните с написания функции createDeck. В ней должны использоваться
циклы для создания полной колоды карт путем сохранения в список двухсимвольных аббревиатур всех 52 карт. Именно этот список и будет возвращаемым из данной функции значением. На вход функция createDeck
принимать параметры не будет.
Напишите вторую функцию с именем shuffle, которая будет случайным образом перетасовывать карты в списке. Одна из техник тасования
колоды заключается в проходе по элементам и перестановке их с любым
другим случайным элементом в этом списке. Вы должны создать свой
собственный цикл для тасования карт в колоде, а не пользоваться стандартной функцией shuffle языка Python.
Используйте обе созданные функции в основной программе, в которой
должна отображаться колода карт до и после тасования. Убедитесь, что
основная программа выполняется только в случае, если файл не импортирован в качестве модуля.
Упражнение 146. Карточка лото
(Решено. 58 строк)
Карточка для игры в лото состоит из пяти колонок, в каждой из которых –
пять номеров. Колонки помечены буквами B, I, N, G и O. Под каждой буквой
могут быть номера в своем диапазоне из 15 чисел. А именно под буквой B
могут присутствовать числа от 1 до 15, под I – от 16 до 30, под N – от 31 до
45 и т. д.
Напишите функцию, которая будет создавать случайную карточку лото
и сохранять ее в словаре. Ключами словаря будут буквы B, I, N, G и O, а значениями – списки из пяти чисел, располагающихся в колонке под каждой
буквой. Создайте еще одну функцию для отображения созданной карточrи лото на экране со столбцами с заголовками. В основной программе
создайте карту лото случайным образом и выведите ее на экран. Ваша
программа должна запускаться только в том случае, если она не импортирована в виде модуля в другой файл.
Упражнение 124: Линия наилучшего соответствия
# Запросить у пользователя координаты точек
points = []
while True:
x = input("Введите координату x (оставьте пустым для завершения): ")
if not x:
break
y = float(input("Введите координату y: "))
points.append((float(x), y))
# Вычислить средние значения по осям x и y
sum_x = sum(point[0] for point in points)
sum_y = sum(point[1] for point in points)
mean_x = sum_x / len(points)
mean_y = sum_y / len(points)
# Вычислить значения m и b
numerator = sum((point[0] - mean_x) * (point[1] - mean_y) for point in points)
denominator = sum((point[0] - mean_x) ** 2 for point in points)
m = numerator / denominator
b = mean_y - m * mean_x
# Вывести формулу линии наилучшего соответствия
print(f"Формула линии наилучшего соответствия: y = {m:.2f}x + {b:.2f}")
Упражнение 125: Тасуем колоду карт
import random
# Создание колоды карт
def createDeck():
deck = []
suits = ['s', 'h', 'd', 'c']
ranks = ['2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A']
for suit in suits:
for rank in ranks:
deck.append(rank + suit)
return deck
# Тасование колоды карт
def shuffle(deck):
for i in range(len(deck)):
j = random.randint(0, len(deck) - 1)
deck[i], deck[j] = deck[j], deck[i]
# Отображение колоды карт
def displayDeck(deck):
for card in deck:
print(card)
# Создание и тасование колоды карт
deck = createDeck()
print("Колода карт до тасования:")
displayDeck(deck)
shuffle(deck)
print("Колода карт после тасования:")
displayDeck(deck)
В данном коде мы создаем функцию createDeck(), которая создает колоду карт, используя два списка: suits - список мастей, и ranks - список номиналов. Затем мы создаем функцию shuffle(), которая случайным образом переставляет карты в колоде. Для этого мы проходим по каждой карте в колоде и меняем ее местами с другой случайной картой в колоде. Наконец, мы создаем функцию displayDeck(), которая отображает колоду карт. В основной программе мы создаем колоду карт, отображаем ее до тасования, тасуем ее и отображаем ее после тасования.
Упражнение 146: Карточка лото
import random
# Создание случайной карточки лото
def createLottoCard():
card = {}
numbers = list(range(1, 16))
random.shuffle(numbers)
card['B'] = numbers[:5]
numbers = list(range(16, 31))
random.shuffle(numbers)
card['I'] = numbers[:5]
numbers = list(range(31, 46))
random.shuffle(numbers)
card['N'] = numbers[:5]
numbers = list(range(46, 61))
random.shuffle(numbers)
card['G'] = numbers[:5]
numbers = list(range(61, 76))
random.shuffle(numbers)
card['O'] = numbers[:5]
return card
# Отображение карточки лото
def displayLottoCard(card):
print(" B I N G O")
for i in range(5):
for letter in ['B', 'I', 'N', 'G', 'O']:
print(f"{card[letter][i]:2d}", end=" ")
print()
# Создание и отображение карточки лото
lotto_card = createLottoCard()
displayLottoCard(lotto_card)
нет