Решение модуля 9.6 Добрый, добрый Python

Модуль 9.6 Сортировка с помощью sort и sorted.

Отметьте все пункты, справедливые для метода sort и функции sorted.

функция sorted возвращает отсортированный список для итерируемого объекта
метод sort сортирует список, для которого вызывается
метод sort применим только к спискам (среди базовых типов данных)

На вход поступает список целых чисел, записанных в одну строчку через пробел. Преобразуйте сначала эту строку в список из целых чисел, а затем список в кортеж из целых чисел. То есть, в программе будет две разные коллекции: список и кортеж. Отсортируйте по возрастанию значений эти коллекции методом sort, если это возможно, а иначе — примените функцию sorted.

На экран ничего выводить не нужно, только сформировать две отсортированные коллекции: lst (список) — результат сортировки списка; tp_lst (кортеж) — результат сортировки кортежа.

P. S. На результаты сортировок обязательно должны ссылаться переменные с именами lst и tp_lst!

# ввод строки в переменную s (переменную в программе не менять)
s = input()

# Преобразуем её в список
int_list = list(map(int, s.split()))

# Преобразуем список в кортеж
int_tuple = tuple(int_list)

# Сортируем список методом sort, если это возможно, иначе - функцией sorted
if hasattr(int_list, 'sort'):  # Проверяем, что метод sort существует для списка
    int_list.sort()
else:
    int_list = sorted(int_list)

# Сортируем кортеж, используя функцию sorted, так как у кортежа нет метода sort
int_tuple = tuple(sorted(int_tuple))

# Присваиваем отсортированные значения переменным lst и tp_lst соответственно
lst = int_list
tp_lst = int_tuple

На вход функции с именем get_sort поступает словарь, например, такой:

d = {'cat': 'кот', 'horse': 'лошадь', 'tree': 'дерево', 'dog': 'собака', 'book': 'книга'}

Необходимо отсортировать словарь d по убыванию ключей (лексикографическая сортировка строк) и возвратить список из соответствующих значений ключей словаря. Например, для указанного словаря d, результатом должен быть список:

[‘дерево’, ‘лошадь’, ‘собака’, ‘кот’, ‘книга’]

Сигнатура функции get_sort должна быть следующей:

def get_sort(d): …

В программе только определить функцию, вызывать ее не нужно и что-либо выводить на экран тоже не нужно.

P. S. Подсказка: список в функции get_sort лучше всего формировать с помощью генератора списков.

def get_sort(d):
    # Создаём список из значений словаря, отсортированных по убыванию ключей
    values_sorted = [d[key] for key in sorted(d.keys(), reverse=True)]
    return values_sorted

На вход программы поступает список целых чисел, записанных в одну строчку через пробел. Необходимо выбрать из них четыре наибольших уникальных значения. Результат вывести на экран в порядке их убывания в одну строчку через пробел.

# Считываем список целых чисел из входной строки
lst = list(map(int, input().split()))

# Создаём множество уникальных значений из списка
unique_values = set(lst)

# Сортируем множество по убыванию значений и берём первые 4 элемента
result = sorted(unique_values, reverse=True)[:4]

# Выводим результат на экран в одну строку через пробел
print(*result)

На вход программы поступают два списка целых чисел (каждый в отдельной строке), записанных в одну строчку через пробел. Длины списков могут быть разными. Необходимо первый список отсортировать по возрастанию, а второй — по убыванию. Полученные пары из обоих списков сложить друг с другом и получить новый список чисел. Результат вывести на экран в виде строки чисел через пробел.

P. S. Подсказка: не забываем про функцию zip.

# Считываем две строки с числами, записанными через пробел, и преобразуем их в списки целых чисел
list1 = list(map(int, input().split()))
list2 = list(map(int, input().split()))

# Сортируем первый список по возрастанию
list1.sort()

# Сортируем второй список по убыванию
list2.sort(reverse=True)

# С помощью функции zip объединяем отсортированные списки в кортежи пар чисел и суммируем их
sum_pairs = [x + y for x, y in zip(list1, list2)]

# Преобразуем список сумм в строку чисел через пробел и выводим на экран
print(' '.join(map(str, sum_pairs)))

На вход программы поступает список товаров в формате:

название_1:цена_1

название_N:цена_N

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

Вызовите эту функцию и отобразите на экране полученный список в порядке возрастания цены в одну строчку через пробел.

P. S. Для считывания списка целиком в программе уже записаны начальные строчки.

import sys

# считывание списка из входного потока
lst_in = list(map(str.strip, sys.stdin.readlines()))

# определение функции get_cheap, которая принимает список lst, 
# преобразует его в словарь, в котором ключами являются цены (целые числа), 
# а значениями - соответствующие названия товаров, 
# и возвращает список из наименований трех наиболее дешевых товаров
def get_cheap(lst):
    # создание словаря d с помощью функции dict, 
    # которая принимает список кортежей, получаемых из списка lst с помощью функции map
    # lambda-функция, передаваемая в map, разбивает строки на пары "название:цена"
    # затем каждая пара преобразуется в кортеж (название, цена), 
    # а затем словарь создается из полученных кортежей
    d = dict(map(lambda x: (int(x[1]), x[0]), map(lambda y: y.split(':'), lst)))
    
    # цикл по отсортированному по ключам словарю d
    # для каждого элемента (ключ k и значение v) вызывается функция yield
    # чтобы вернуть соответствующее значение v, 
    # наименьшие три значения будут возвращены при первых трех вызовах функции next()
    for k, v in sorted(d.items()):
        yield v


# создание генератора x, который содержит список из наименований трех наиболее дешевых товаров
x = get_cheap(lst_in)

# вывод на экран первых тех элементов из списка x, которые будут возвращены функцией next(), 
# идущих через пробел
for _ in range(3):
    print(next(x), end=' ')

Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы

Понравилась статья? Поделиться с друзьями:
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x