Перенаправление В/В, числа, словари, множества, функции (начало)

Видеолекции: 3. 4, 5

Остатки от прошлой лекции

Интерактивная HTML-документация

Перенаправление ввода-вывода в командной строке

Генераторы входных данных для задач.

Скалярные типы данных

Модуль random и его возможности

(random)

Последовательности

(в основном были на прошлом занятии)

Строки

Другой тип данных:

Множества

Словари

Функции (введение)

Д/З

Прочитать
  • В учебнике до пятой главы включительно и седьмую главу (есть на русском)

  • Прочитать про модули random.hmtl, decimal.html, fractions.ahtml

  • Задачи и упражнения
    Все примеры попробовать не только на заданном В/В, но и на самостоятльно сгенерированном
  • Рекурсия:

    (domari:ReqSum) Сумма подпоследовательности

    Ввести число N, а на следующей строке — последовательность натуральных чисел через запятую. Проверить, является ли N суммой не более, чем 10 каких-либо элементов последовательности, и вывести YES или NO в зависимости от результата.

    Input:

    21
    1,2,3,4,5,6,7
    Output:

    YES
  • Передача функции в качестве параметра:

    (domari:DiffLet) Количество разных символов

    Ввести строку (слова, разделённые пробелами), и вывести через пробел вначале слова, состоящие из повторения единственного символа (если таковые имеются), затем — слова, образованные всего из двух символов в любом количестве и сочетании, затем — из трёх и т. д. Слова с одинаковым количеством символов выводить в порядке их появления в строке.

    Input:

        sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
    Output:

    --> new list sorted key=None, cmp=None, reverse=False) sorted(iterable,
  • Словарь:

    (domari:PopularWord) Самое популярное слово

    Ввести построчно текст, состоящий из пробелов, переводов строки и латинских букв, и заканчивающийся пустой строкой. Вывести слово, которое чаще других встречается в тексте, если оно такое одно, и ---, если таких слов несколько.

    Input:

    Sed tempus ipsum quis eros tempus lacinia Cras finibus lorem ut lacinia egestas nunc nibh iaculis est convallis tincidunt mi mi sed nisl Sed porttitor aliquam elit ullamcorper tincidunt arcu euismod quis Mauris congue elit suscipit leo varius facilisis Cras et arcu sodales laoreet est vitae pharetra orci Integer eget nulla dictum aliquet justo semper molestie neque Maecenas bibendum lacus tincidunt auctor varius purus felis ullamcorper dui et laoreet ligula ex et risus Donec eget fringilla nibh Cras congue tincidunt accumsan Maecenas euismod eleifend elit ut rhoncus tortor sodales a Cras egestas finibus lorem non tempor tincidunt aera
    Output:

    tincidunt
  • Строки и random:

    (domari:EasySentence) Произносимое предложение

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

    Input:

    <ВВОД НЕ ИСПОЛЬЗУЕТСЯ>
    Output:

    <ЭТО ПРИМЕР ВЫВОДА>
    Пе вожи ичумкяп леобсил ботрумч сбкясотно шфтулзоём аирба уотэлмя?
  • Форматирование строки:

    (domari:MultTable) Таблица умножения на N

    Ввести через запятую M и N и вывести таблицу умножения от M×1 до M×N в столбик, где K-я строчка имеет вид __P_=__K_*_M. Между элементами стоят символы подчёркивания, причём перед P может быть ноль или больше подчёркиваний, а перед K — одно или больше, в остальных случаях подчёркивание одно. В результате символы = и * должны стоять друг под другом.

    Input:

    7,11
    Output:

    _7_=__1_*_7
    14_=__2_*_7
    21_=__3_*_7
    28_=__4_*_7
    35_=__5_*_7
    42_=__6_*_7
    49_=__7_*_7
    56_=__8_*_7
    63_=__9_*_7
    70_=_10_*_7
    77_=_11_*_7
  • Использование eval()

    (domari:GenMinMax) Найти минимум и максимум произвольной функции на целочисленном отрезке

    Ввести строку — произвольное выражение Python, в котором могут дополнительно встречаться функции из модуля math и переменная x. На следующей строке ввести через запятую целые числа A и B (выражение должно быть определено как минимум на A или на B). Вывести через пробел минимальное и максимальное значение выражения на всех допустимых целых x, принадлежащих отрезку [A,B]. Точностью вычислений не управлять.

    Input:

    (x**5+1)/(factorial(x)-720)
    -10,10
    Output:

    -6 3
  • <!>

    (domari:PaidStairs) Классическая задача динамического программирования «Платная лестница»

    Наступить на k-ю ступень лестницы A стоит Ak монет. Ввести через запятую «цены» ступеней A, и на следующей строке — ширину шага S (все числа натуральные) и вывести минимальную стоимость пути с земли до последней ступени (на которую наступать обязательно), при условии, что идти можно только вверх и перешагивать можно не более, чем через S-1 ступень.

    Input:

    5, 3, 6, 1, 1, 2, 3, 4, 7, 5, 5, 7, 1, 1, 4, 6, 3, 4, 7, 4, 2
    4
    Output:

    14

  • CategoryClass