Различия между версиями 4 и 5
Версия 4 от 2017-07-23 14:26:50
Размер: 6071
Редактор: ArsenyMaslennikov
Комментарий:
Версия 5 от 2017-08-03 13:33:13
Размер: 6603
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 1: Строка 1:
= Нет тут тултипа, одна сборная солянка. =
== random, turtle, тестирование ==
= random, генерация тестовых входных данных, turtle =
Строка 7: Строка 6:
  * столько же элементов, сколько в аргументе ''наименьшей'' длины, остальные отбрасываются   * столько же элементов, сколько в параметре ''наименьшей'' длины, остальные отбрасываются
Строка 46: Строка 45:
        # на к-во и длину слов в аргументы функции         # на к-во и длину слов в параметры функции
Строка 103: Строка 102:
 * Основные команды  * Координатная плоскость `turtle`, черепаха
 * Основные команды:
  * `forward()`, `backward()`, `left()`, `right()`
  * `penup()`, `pendown()`
  * `color()`
 * {*} Спираль
 {{{#!highlight python3
from turtle import *
for i in range(600):
    forward(i/10)
    left(10)

mainloop()
}}}
Строка 105: Строка 118:
  * `begin_fill()`, `end_fill()`
  * `fillcolor()`
 * {*} Подсолнух
 {{{#!highlight python3
from turtle import *
color("green", "yellow")
begin_fill()
for i in range(18):
    forward(200)
    left(100)
end_fill()

mainloop()
 }}}

random, генерация тестовых входных данных, turtle

Ещё немного обо всём

  • zip(последовательность, последовательность, ...)

    • удобнее всего одинаковой длины
    • столько же элементов, сколько в параметре наименьшей длины, остальные отбрасываются

    • {*} (07.02) Ввести матрицу N*M, выдать транспонированную матрицу

      •    1         N, M = eval(input())
           2 
           3         Matrix = []
           4         for i in range(N):
           5             Matrix.append(eval(input()))
           6     
           7         #import pprint
           8         #pprint.pprint(Matrix)
           9         for col in zip(*Matrix):
          10             print(*col)
        
    • {i} Ввести 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, к хорошему тону надо привыкать

  • {i} Функция, с вероятностью 1/3 выдающая "yes", с 2/3 "no". (без модуля random, кроме random.random)

    • {i} Программа, выводящая выборку из N вызовов такой функции и гистограмму (кол-во "yes" и кол-во "no")

  • {i} Функция, выдающая случайные произносимые слова случайной длины (запихать в модуль)

    • критерий произносимости произволен

    • if __name__ == "__main__": краткое демо

  • {i} Используя модуль-генератор произносимых слов: функция, генерирующая несколько предложений из нескольких случайных слов.

  • {i} Используя модуль-генератор предложений: ввести слово; посчитать, сколько раз оно встретилось в сгенерированных предложениях.

    • слово может состоять и из одной, и из двух букв, например

  • {i} В первой программе сгенерировать двумерный список чисел случайно и вывести на экран

    • {i} в другой: среди всех минимумов в строчках полученной матрицы найти максимум

    • тестируем при помощи конвейера (что-то сродни python3 gen.py | python3 program.py)

    • обратите внимание, что по pipe между программами проходит текст, т. е. строчки символов

Про черепаху

  • Модуль turtle

  • Координатная плоскость turtle, черепаха

  • Основные команды:
    • forward(), backward(), left(), right()

    • penup(), pendown()

    • color()

  • {*} Спираль

       1 from turtle import *
       2 for i in range(600):
       3     forward(i/10)
       4     left(10)
       5 
       6 mainloop()
    
  • Как закрасить область
    • begin_fill(), end_fill()

    • fillcolor()

  • {*} Подсолнух

       1 from turtle import *
       2 color("green", "yellow")
       3 begin_fill()
       4 for i in range(18):
       5     forward(200)
       6     left(100)
       7 end_fill()
       8 
       9 mainloop()
    
  • {i} Функция, рисующая домик размера N пикселей.

  • {i} Функция, рисующая ёлочку из n треугольников размера от k до l

  • {i} лес с разными ёлочками

    • <!> немного не параллельными

  • дальше не успеем

Python/Summer2017/2017-07-07 (последним исправлял пользователь FrBrGeorge 2017-08-03 13:33:13)