Top.Mail.Ru
Ответы

Пожалуйста, помогите решить задачу на 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: Линия наилучшего соответствия

1234567891011121314151617181920212223
 # Запросить у пользователя координаты точек 
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: Тасуем колоду карт

123456789101112131415161718192021222324252627282930
 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: Карточка лото

123456789101112131415161718192021222324252627282930313233
 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) 
Аватар пользователя
Мудрец

нет