Числа и строки

Долги за прошлый раз:

Числа

Псевдослучайные числа

randomsecrets, а также os.getrandom)

Больше математики!

Строки

Строковые методы

Базовая статья

split() и join()

Форматные строки

Базовая статья

Спецсимволы и необработанные строки

Д/З

  1. Прочитать и прощёлкать про строки в учебнике, в документации, а также про форматирование строк в учебнике и в документации.

TODO

  1. EJudge: PatternFind 'Поиск простого шаблона в строке'

    Ввести строку, содержащую произвольные символы (кроме символа «@»). Затем ввести строку-шаблон, которая может содержать символы '@'. Проверить, содержится ли в исходной строке подстрока, совпадающая со строкой-шаблоном везде, кроме символов '@'; на месте '@' в исходной строке должен стоять ровно один произвольный символ. Вывести наименьшую позицию в строке, с которой начинается эта подстрока, или '-1', если её там нет. Использовать регулярные выражения нельзя! ☺

    Input:

    lorem ipsum, quia dolor sit, amet, consectetur
    dolor @it,@@met
    Output:

    18
  2. EJudge: DrawSquare 'Рисуем квадраты'

    Написать функцию squares(w,h,(X,Y,s,c),...) со следующими параметрами: w и h — ширина и высота «экрана», за которыми следуют 0 или больше 4-элементных последовательностей вида (X,Y,s,c), где X и Y — координаты левого верхнего угла квадрата, s — длина его стороны (не меньше 1), а c — символ которым он заполняется на экране. Функция должна выводить прямоугольник из h×w точек, на котором соответствующими символами «нарисованы» квадраты соответствующих размеров в соответствующих местах. Координаты левого верхнего угла поля — 0,0. Растут вправо вниз. Проверять, что квадраты не выходят за границы поля, не надо.

    Input:

    squares(20,23,(1,1,5,'@'), (2,3,1,'!'), (4,5,11,'#'), (8,11,9,'/'))
    Output:

    ....................
    .@@@@@..............
    .@@@@@..............
    .@!@@@..............
    .@@@@@..............
    .@@@###########.....
    ....###########.....
    ....###########.....
    ....###########.....
    ....###########.....
    ....###########.....
    ....####/////////...
    ....####/////////...
    ....####/////////...
    ....####/////////...
    ....####/////////...
    ......../////////...
    ......../////////...
    ......../////////...
    ......../////////...
    ....................
    ....................
    ....................
  3. EJudge: MultTable 'Таблица умножения'

    Ввести два натуральных числа через запятую: N и M. Вывести таблицу умножения от 1 до N включительно в формате, представленном ниже, разделяя колонки, если они есть, тремя символами « | ». Количество столбцов в выводе должно быть наибольшим, но общая ширина строки не должна превышать M (предполагается, что M достаточно велико, чтобы вместить один столбец). Ширина колонок под сомножители и произведения должна соответствовать максимальной ширине соответствующего значения (даже если в данной колонке данного столбца эта ширина не достигается, см. пример). Таким образом все столбцы должны быть одинаковой ширины, без учёта пробелов в конце строк, которых быть не должно. Разделители вида "===…===" должны быть ширины M.

    Input:

    11, 62
    Output:

    ==============================================================
     1 * 1  = 1   |  2 * 1  = 2   |  3 * 1  = 3   |  4 * 1  = 4  
     1 * 2  = 2   |  2 * 2  = 4   |  3 * 2  = 6   |  4 * 2  = 8  
     1 * 3  = 3   |  2 * 3  = 6   |  3 * 3  = 9   |  4 * 3  = 12 
     1 * 4  = 4   |  2 * 4  = 8   |  3 * 4  = 12  |  4 * 4  = 16 
     1 * 5  = 5   |  2 * 5  = 10  |  3 * 5  = 15  |  4 * 5  = 20 
     1 * 6  = 6   |  2 * 6  = 12  |  3 * 6  = 18  |  4 * 6  = 24 
     1 * 7  = 7   |  2 * 7  = 14  |  3 * 7  = 21  |  4 * 7  = 28 
     1 * 8  = 8   |  2 * 8  = 16  |  3 * 8  = 24  |  4 * 8  = 32 
     1 * 9  = 9   |  2 * 9  = 18  |  3 * 9  = 27  |  4 * 9  = 36 
     1 * 10 = 10  |  2 * 10 = 20  |  3 * 10 = 30  |  4 * 10 = 40 
     1 * 11 = 11  |  2 * 11 = 22  |  3 * 11 = 33  |  4 * 11 = 44 
    ==============================================================
     5 * 1  = 5   |  6 * 1  = 6   |  7 * 1  = 7   |  8 * 1  = 8  
     5 * 2  = 10  |  6 * 2  = 12  |  7 * 2  = 14  |  8 * 2  = 16 
     5 * 3  = 15  |  6 * 3  = 18  |  7 * 3  = 21  |  8 * 3  = 24 
     5 * 4  = 20  |  6 * 4  = 24  |  7 * 4  = 28  |  8 * 4  = 32 
     5 * 5  = 25  |  6 * 5  = 30  |  7 * 5  = 35  |  8 * 5  = 40 
     5 * 6  = 30  |  6 * 6  = 36  |  7 * 6  = 42  |  8 * 6  = 48 
     5 * 7  = 35  |  6 * 7  = 42  |  7 * 7  = 49  |  8 * 7  = 56 
     5 * 8  = 40  |  6 * 8  = 48  |  7 * 8  = 56  |  8 * 8  = 64 
     5 * 9  = 45  |  6 * 9  = 54  |  7 * 9  = 63  |  8 * 9  = 72 
     5 * 10 = 50  |  6 * 10 = 60  |  7 * 10 = 70  |  8 * 10 = 80 
     5 * 11 = 55  |  6 * 11 = 66  |  7 * 11 = 77  |  8 * 11 = 88 
    ==============================================================
     9 * 1  = 9   | 10 * 1  = 10  | 11 * 1  = 11 
     9 * 2  = 18  | 10 * 2  = 20  | 11 * 2  = 22 
     9 * 3  = 27  | 10 * 3  = 30  | 11 * 3  = 33 
     9 * 4  = 36  | 10 * 4  = 40  | 11 * 4  = 44 
     9 * 5  = 45  | 10 * 5  = 50  | 11 * 5  = 55 
     9 * 6  = 54  | 10 * 6  = 60  | 11 * 6  = 66 
     9 * 7  = 63  | 10 * 7  = 70  | 11 * 7  = 77 
     9 * 8  = 72  | 10 * 8  = 80  | 11 * 8  = 88 
     9 * 9  = 81  | 10 * 9  = 90  | 11 * 9  = 99 
     9 * 10 = 90  | 10 * 10 = 100 | 11 * 10 = 110
     9 * 11 = 99  | 10 * 11 = 110 | 11 * 11 = 121
    ==============================================================
  4. EJudge: ArbTangent 'Тангенс'

    Ввести числа: рациональное A (целое или десятичная дробь) — угол из диапазона от 1 до 99 градов (метрических градусов), и натуральное 4 ⩽ E ⩽ 1000 — точность вычисления (в терминах контекста вычислений модуля Decimal — поле perc). Вычислить значение тангенса с указанной точностью. Число Пи (если оно вам понадобится) тоже надо вычислять!

    Input:

    50
    7
    Output:

    1.000000

LecturesCMC/PythonIntro2021/05_StringsNumbers (last edited 2021-10-18 14:43:58 by FrBrGeorge)