Различия между версиями 14 и 15
Версия 14 от 2020-10-15 16:35:30
Размер: 4770
Редактор: FrBrGeorge
Комментарий:
Версия 15 от 2020-10-15 16:35:53
Размер: 4747
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 4: Строка 4:
 * {i} Посчитать количество __вхождений__ различных слов в тексте  * {i} Посчитать количество различных слов в тексте

10.15 Словари и их применение

  • Основные свойства словарей
  • Словари внутри python
  • {i} Посчитать количество различных слов в тексте

  • {i} То же с помощью Counter

  • <!> Задача_1: Подсчитать количество вхождений различных пар букв в тексте

    • на вход подаётся строка, в которую могут входить: буквы, пробелы, а также любые другие символы
    • буквой считается символ, на котором isalpha() возвращает True
    • требуется подсчитать количество различных пар букв в тексте (заглавные и строчные буквы не считаются различными, поэтому строку сразу перевести в нижний регистр через lower())
    • парой букв считаются расположенные рядом две буквы (примеры разных пар: аб, бб, wъ, щz)
    • пример:
      • вход: "аwба%Ба б7"
      • выход: 3
      • пары букв (выводить не надо): аw, wб, ба
  • {i} Убрать все повторяющиеся слова из текста (однострочник)

  • Использование sys.argv

  • Использование random

  • Пароль (однострочник) — пример
    • Ещё пример:
      $ # на самом деле https://github.com/first20hours/google-10000-english/raw/master/google-10000-english.txt
      $ python3 -c 'import urllib.request; import random; print(" ".join(random.sample(urllib.request.urlopen("https://tinyurl.com/z9lcu2y").read().decode().split(),4)))'
      • :D

  • Использование seed()

  • Генератор тестов: передача seed и других параметров через argv

    • seed() без параметров

  • <!> Задача_2: Генерация произносимого пароля

    • произносимый пароль состоит из "слогов" трёх видов: 'Г', 'ГС' 'СГ', где 'Г' - заглавная гласная буква, 'С' - заглавная согласная буква (Ь и Ъ не используем; автор задачи помнит, что (со)гласными могут быть звуки, а не буквы :) )

    • на вход подаётся длина пароля (целое положительное число N)
    • требуется сгенерировать пароль длины N путём его достройки, начиная с пустой строки, до требуемой длины путём добавления случайного слога одного из описанных выше видов
    • к частично построенной строке длины (N-1) разрешается добавлять последний слог из двух букв
    • пример:
      • вход: 8
      • выход: АЗАЗЕЛЛО
      • слоги добавлялись так: АЗ, АЗ, ЕЛ, ЛО; начиная со слога А такой выход построить невозможно
      • тоже корректный выход (длины 9): АЗЫАЗЕЛЛО
  • <!> Задача_3 (Д/З): Генерация литературного пароля

    • померить частоты пар букв в ../../06_DictCollection/anna.txt (пара букв - то же, что в Задаче_2)

    • на вход программе подаётся длина пароля (целое положительное число N)
    • требуется сгенерировать пароль длины N путём его достройки до требуемой длины
    • выбор первой пары букв - случайный, вероятность выбора пропорциональна числу её вхождений в литер. текст
    • добавление очередной буквы в конец пароля - случайный, вероятность выбора добавляемой буквы пропорциональна числу вхождений пары букв pq в литер. текст (здесь p - последняя буква частично построенного пароля, q - добавляемая буква)

LecturesCMC/PythonIntro2020/Prac/06_DictCollection (последним исправлял пользователь FrBrGeorge 2020-10-20 20:31:03)