Share This
Связаться со мной
Крути в низ
Categories
//5 задач по Python для начинающих c решениями: генераторы и методы словарей

5 задач по Python для начинающих c решениями: генераторы и методы словарей

Решение этих задач поможет изучить и запомнить, как правильно использовать генераторы, а также основные методы словарей — fromkeys, setdefault и get.

5 zadach po python dlja nachinajushhih c reshenijami generatory i metody slovarej 976b294 - 5 задач по Python для начинающих c решениями: генераторы и методы словарей

Повторы слов

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

Формат ввода

Текстовая строка. Слова разделены пробелами, знаков препинания нет.

Формат вывода

Для каждого слова из введенной строки программа выводит одно целое число — количество повторов этого слова в тексте с учетом позиции и регистра. Числа выводятся на одной строке, через пробел.

Пример ввода:

         прием Хьюстон Хьюстон как слышно прием меня слышно прием хьюстон Хьюстон у нас проблема     

Вывод:

         1 1 2 1 1 2 1 2 3 1 3 1 1 1     

Решение

Способ 1:

         d = {} for i in input().split():     d[i] = d.get(i, 0) + 1     print(d[i], end=' ')      

Способ 2:

         my_dict = {} for i in input().split(' '):     my_dict[i] = my_dict.setdefault(i, 0) + 1     print(my_dict[i], end=' ')       

Способ 3:

         s = input().split() d = dict.fromkeys(s, 1) for i in s:     print(d[i], end=' ')     d[i] += 1      

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста» Интересно, перейти к каналу

Словарь начинающего разработчика

Программисты в общении между собой часто используют профессиональный сленг. Напишите программу, которая помогает «войтивайтишникам» разобраться в значении сленговых выражений.

Формат ввода

В первой строке подается целое число n — количество слов в словаре. В следующих n строках записаны слова и их определения, разделенные двоеточием и символом пробела. В последующей строке подается целое число m — количество поисковых слов. Затем в m строках даются слова, для которых нужно вывести определение из созданного словаря.

Формат вывода

Для каждого слова, если оно присутствует в словаре, необходимо вывести определение. Регистр не учитывается. Если слова в словаре нет, программа должна вывести Не найдено.

Пример ввода:

         7 Бэкенд: программно-аппаратная или серверная часть приложения Бэкап: резервная копия или процесс создания резервной копии приложения Галера: компания, в которой платят низкие зарплаты и не ценят разработчиков Гит: система контроля версий Git или сервис GitHub Г***окод: плохой, некачественный код Жаба: язык программирования Java Жабаскрипт: язык программирования JavaScript 6 Жаба Змея Костыль Бета БЭКЕНД Г***окод     

Вывод:

         язык программирования Java Не найдено Не найдено Не найдено программно-аппаратная или серверная часть приложения плохой, некачественный код      

Решение

Способ 1:

         d = {k.lower(): v for _ in range(int(input())) for k, v in [input().split(': ', 1)]} print(*(d.get(input().lower(), 'Не найдено') for _ in range(int(input()))), sep='n')      

Способ 2:

         prog = {} for _ in range(int(input())):     descr = input().split(': ')     prog[descr[0].lower()] = descr[1] for _ in range(int(input())):     print(prog.get(input().lower(), 'Не найдено'))      

Способ 3:

         n = int(input()) lib = {j[0].lower(): j[1] for j in [input().split(': ') for i in range(n)]} for request in range(int(input())):     print(lib.get(str(input()).lower(), 'Не найдено'))      

Справочник

На вход программе подается список стран и городов каждой страны. Затем даны названия городов. Напишите программу, которая определяет, в какой стране расположен город.

Формат ввода

Программа получает на вход количество стран n, а затем – n строк. Каждая строка начинается с названия страны, затем идут названия городов этой страны. В следующей строке записано число m, далее идут m запросов — названия некоторых из m городов, заданных выше.

Формат вывода

Программа должна вывести название страны, в которой находится город, указанный в запросе.

Пример ввода:

         2 Германия Берлин Мюнхен Гамбург Дортмунд Нидерланды Амстердам Гаага Роттердам Алкмар 4 Амстердам Алкмар Гамбург Гаага      

Вывод:

         Нидерланды Нидерланды Германия Нидерланды      

Решение

Способ 1:

         d = {} for _ in range(int(input())):     country, *cities = input().split()     d.update(dict.fromkeys(cities, country)) for _ in range(int(input())):         print(d[input()])      

Способ 2:

         d = {} for _ in range(int(input())):     country, *cities = input().split()     for c in cities:         d[c] = country for _ in range(int(input())):     print(d[input()])      

Способ 3:

         d = {i : j for _ in range(int(input())) for i, *j in  [input().split()]} [print(k) for _ in range(int(input())) for i in [input()] for k, v in d.items() if i in v]      

Телефонная книга

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

Формат ввода

В первой строке подается одно целое число n — количество номеров телефонов, информацию о которых Вася сохранил в телефонной книге. В следующих n строках заданы телефоны и имена их владельцев через пробел. Затем подается целое число m — количество поисковых запросов от Васи. В последующих m строках записаны сами запросы, по одному на строке. Каждый запрос — это имя друга, чьи номера Вася хочет найти.

Формат вывода

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

Пример ввода:

         3 79184219577 Саша 79194249271 Кирилл 79281234567 Саша 3 Кирилл Саша Егор     

Вывод:

         79194249271 79184219577 79281234567 абонент не найден      

Решение

Способ 1:

         d = {} for _ in range(int(input())):     phone, name = input().split()     d.setdefault(name, []).append(phone) for _ in range(int(input())):     print(*d.get(input(), ['абонент не найден']))      

Способ 2:

         book = {} for _ in range(int(input())):     line = input().split()     if line[1] not in book:         book[line[1]] = [line[0]]     else:         book[line[1]].append(line[0]) for _ in range(int(input())):     print(*book.get(input(), (['абонент не найден'])))      

Способ 3:

         dct = {} [dct.setdefault(owner, []).append(num) for _ in range(int(input())) for num, owner in [input().split()]] [print(*dct.get(input(), ['абонент не найден'])) for _ in range(int(input()))]      

Футбол

Напишите программу, которая получает на вход список игр футбольных команд с результатом матча и выводит сводную таблицу результатов всех матчей. За победу команде начисляется 3 очка, за поражение — 0, за ничью — 1.

Формат ввода

В первой строке указано целое число n — количество завершенных игр.

После этого идут n строк, в которых записаны результаты игры в следующем формате:

Первая_команда;Забито_первой_командой;Вторая_команда;Забито_второй_командой

Формат вывода

Программа должна выводить результаты матчей по каждой команде:

Команда:Всего_игр Побед Ничьих Поражений Всего_очков

Пример ввода:

         3 Спартак;9;Зенит;10 Локомотив;12;Зенит;3 Спартак;8;Локомотив;15      

Вывод:

         Спартак:2 0 0 2 0 Зенит:2 1 0 1 3 Локомотив:2 2 0 0 6      

Решение

Способ 1:

         a = [input().split(';') for i in range(int(input()))] b = {i:[] for i in set([i[0] for i in a])|set([i[2] for i in a])} for i in a:                 b[i[0]].append(1 if i[1]==i[3] else 3 if i[1]>i[3] else 0)                 b[i[2]].append(1 if i[1]==i[3] else 3 if i[1]<i[3] else 0) for i in b: print(f'{i}:{len(b[i])} {b[i].count(3)} {b[i].count(1)} {b[i].count(0)} {sum(b[i])}')      

Способ 2:

         d = {} for a, p, b, v in (input().split(';') for n in range(int(input()))):     d[a] = [i + j for i, j in zip(d.setdefault(a, [0, 0, 0, 0, 0]), [1, (p > v), (p == v), (p < v), 3 if p > v else (p == v)])]     d[b] = [i + j for i, j in zip(d.setdefault(b, [0, 0, 0, 0, 0]), [1, (p < v), (p == v), (p > v), 3 if p < v else (p == v)])] print(*(i+":" + ' '.join(map(str, d.get(i))) for i in d), sep='n')      

Способ 3:

         d = {} for game in range(int(input())):     c1, r1, c2, r2 = input().split(';')     r1, r2 = int(r1), int(r2)     r1, r2 = 3 * (r1 > r2) + (r1 == r2), 3 * (r2 > r1) + (r1 == r2)     r1, r2 =  [[1, int(_ == 3), int(_ == 1), int(_ == 0), _] for _ in (r1, r2)]     d[c1] = [sum(_) for _ in zip(d.get(c1, [0, 0, 0, 0, 0]), r1)]     d[c2] = [sum(_) for _ in zip(d.get(c2, [0, 0, 0, 0, 0]), r2)] [print(k, ' '.join(map(str, v)), sep=':') for k, v in d.items()]       

***

Материалы по теме

  • 🐍 Словари в Python: 12 задач для начинающих с решениями
  • 🐍 5 задач с решениями на Python для начинающих разработчиков
  • 🐍 5 классических задач по Python для начинающих с решениями

  • 0 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

    Связаться со мной
    Close