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

Долг за прошлую лекцию:

Числа

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

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

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

Строки

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

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

split() и join()

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

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

NEW Python3.12: Syntactic formalization of f-strings

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

Зачем нужны спецсимволы

Д/З

<!> Во всех домашних заданиях нашего курса используются только стандартные модули Python.

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

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

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

    Input:

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

    18
  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: AlmostRandom 'Почти случайное'

    Написать функцию divrandom(a, b, s, p), принимающую четыре целых ненулевых параметра. Функция должна возвращать случайно выбранное целое число, не кратное p, из диапазона от a до b (включительно; таким образом диапазоны a…b и b…a одинаковы и допустимы) с шагом s. Если такое число выбрать невозможно, функция возвращает 0.

    Input:

       1 print(divrandom(10, 21, 5, 2))
    
    Output:

    15
  5. EJudge: TriangleSquare 'Площадь треугольника'

    Ввести через запятую шесть чисел: x1, y1, x2, y2, x3, y3 и вывести точное значение площади треугольника (x1, y1), (x2, y2), (x3, y3).

    Input:

    1.1, 1, 6, 4, 8, 2
    Output:

    7.9

LecturesCMC/PythonIntro2023/05_StringsNumbers (последним исправлял пользователь FrBrGeorge 2023-10-08 23:39:29)