random, генерация тестовых входных данных, turtle
Ещё немного обо всём
zip(последовательность, последовательность, ...)
- удобнее всего одинаковой длины
столько же элементов, сколько в параметре наименьшей длины, остальные отбрасываются
(07.02) Ввести матрицу N*M, выдать транспонированную матрицу
Ввести N строк, проделать то же самое
lambda arguments: returnexpr
python3 matrix_generator.py | python3 another_program.py
- в т. ч. возможность писать самые настоящие автоматические тесты для своих программ!
вспомним, что конвейеры командной строки работают везде: Linux, Windows, OS X, any other Unix
Про random
- Случайное и неслучайное, зачем нужно
- Датчик случайных чисел
- неслучайность
- воспроизводимость, seed()
Модуль random
random() , randint(), randrange()
choice(), shuffle(), sample()
seed()
Случайное число на отрезке A…B
Гистограмма (список частот для возможных значений)
Перемешать строку
Случайные слова случайной длины
1 import random 2 3 # при необходимости можно вынести ограничения 4 # на к-во и длину слов в параметры функции 5 def randwords(): 6 words = [] 7 nws = random.randint(3, 9) 8 9 for i in range(nws): 10 wl = random.randint(3, 15) 11 s = "" 12 while len(s) < wl: 13 s += chr(random.choice(range(ord('a'), ord('z') + 1))) 14 words += [s] 15 return words 16 17 if __name__ == "__main__": 18 print(randwords())
Генератор значений для 07.02 (транспонирование матрицы)
1 # выводит случайные целые N и M (3 < … < 12) 2 # выводит N кортежей по M случайных целых 3 # в диапазоне 10…99 4 5 import random 6 import sys 7 8 MIN, MAX = 3, 12 9 D2MIN, D2MAX = 10, 99 10 11 M,N = random.randint(MIN, MAX), random.randint(MIN, MAX) 12 print("{},{}".format(N,M)) 13 print("{},{}".format(N,M), file=sys.stderr) 14 15 for i in range(N): 16 for j in range(M): 17 cell = random.randrange(D2MIN, D2MAX) 18 print(cell, end=",") 19 print(cell, end=",", file=sys.stderr) 20 print() 21 print(file=sys.stderr) 22 print("="*60, file=sys.stderr)
в каждой функции, которую пишете, краткий docstring, к хорошему тону надо привыкать
Функция, с вероятностью 1/3 выдающая "yes", с 2/3 "no". (без модуля random, кроме random.random)
Программа, выводящая выборку из N вызовов такой функции и гистограмму (кол-во "yes" и кол-во "no")
Функция, выдающая случайные произносимые слова случайной длины (запихать в модуль)
критерий произносимости произволен
if __name__ == "__main__": краткое демо
Используя модуль-генератор произносимых слов: функция, генерирующая несколько предложений из нескольких случайных слов.
Используя модуль-генератор предложений: ввести слово; посчитать, сколько раз оно встретилось в сгенерированных предложениях.
слово может состоять и из одной, и из двух букв, например
В первой программе сгенерировать двумерный список чисел случайно и вывести на экран
в другой: среди всех минимумов в строчках полученной матрицы найти максимум
тестируем при помощи конвейера (что-то сродни python3 gen.py | python3 program.py)
обратите внимание, что по pipe между программами проходит текст, т. е. строчки символов
Про черепаху
Модуль turtle
Координатная плоскость turtle, черепаха
- Основные команды:
forward(), backward(), left(), right()
penup(), pendown()
color()
Спираль
- Как закрасить область
begin_fill(), end_fill()
fillcolor()
Подсолнух
Функция, рисующая домик размера N пикселей.
Функция, рисующая ёлочку из n треугольников размера от k до l
лес с разными ёлочками
немного не параллельными
дальше не успеем