Лаба: http://cs.mipt.ru/python/lessons/lab3.html.
В качестве ДЗ достаточно решить четыре задачи: одну по функциям, две по спискам + файлам (один блок задач по двум темам) и одну по Черепахе.
Начертите график какой-нибудь функции с помощью функции plot
библиотеки matplotlib
, но при построении графика задайте:
- тип линии (например, сплошная или пунктирная)
- ширину линии
- цвет линии
- тип точек, по которым строится график ("маркеры")
- размер точек
- цвет точек
- ширину границы точек
- цвет границы точек
Пример графика, построенного с помощью plt.plot
и кучи параметров.
Напишите функцию f
, которая печатает на экране одну строку и которую можно бы было вызывать следующим образом:
# Определение функции f от скольких-то параметров
# ...
f('a', 'b') # a b b c a
f('b', 'a') # b b a c a
f('a', 'b', 'f') # a b b f a
f('a', 'b', d='d') # a d b c a
f('*', '*', '*', '*', '*') # * * * * *
Напишите функцию, которая печатает на экране строку, причём результат (конкретный вывод) чередуется в зависимости от вызова. То есть: первый раз вызвали функцию — на выходе одна строка, второй раз вызвали — другая, ещё один вызов — и функция выводит первоначальную строчку, и так далее.
Пример:
# Определение "непостоянной" функции-флюгера vane_print
# ...
# Использование функции (после вызова в комментарии указан вывод)
vane_print() # попка
vane_print() # дурак
vane_print() # попка
vane_print() # дурак
В текстовом файле записана следующая информация: в первой строчке указано количество чисел
Напишите программу, которая считает, сколько нулей на конце у самого большого числа, и ответ записывает в новый файл result.txt
.
Например, если на вход программе дать файл СФ1.txt, то она должна будет записать в качестве ответа число 2 (так как самое большое число, записанное во входном файле, это 1700, и у него на конце два нуля).
Маша не транжира, но деньги тратит часто (и ничего плохого в этом не видит).
В текстовом файле СФ2.txt построчно записаны категории её трат в течение некоторого времени (то есть именно категории, без указания суммы).
Напишите программу, определяющую самую частую категорию трат Маши.
Ответ запишите в файл result.txt
.
Вы, наверно, замечали рекламу на сайтах: иногда она сбоку, иногда сверху, а иногда за ней вообще почти ничего не видно. Или когда слушаешь музыку на некоторых сервисах: находясь посреди хорошего альбома, получаешь "интересное" предложение купить что-нибудь со скидкой или сыграть в лотерею. Ну, а про телевизор и говорить нечего — это уже как будто абсолютно нормально, если, к примеру, посреди крушения Титаника в фильме Кэмерона вам предложат ненадолго "отвлечься" на рекламу пива (безалкогольного) или средства от прыщей.
Одно из немногих мест, где пока ещё можно проводить время без рекламы — это тексты художественных произведений (распечатанные в книгах, не на сайтах)... Исправьте же это "недоразумение"! Пусть пластмассовый мир победит — напишите программу, вставляющую рекламные слоганы между строк исходного текста.
На вход программа получает путь до текстового файла. Также программе даётся список однострочных рекламных слоганов, которые она должна вставлять в скобках через каждые четыре строки исходного текста. Слоганы должны чередоваться — в том порядке, как они будут даны в списке. В результате работы программы должен получиться новый текстовый файл, с "орекламленным" содержимым.
Например, пусть входной файл — это файл СФ3.txt со стихотворением Фёдора Тютчева "Она сидела на полу...":
Она сидела на полу
И груду писем разбирала —
И, как остывшую золу,
Брала их в руки и бросала —
Брала знакомые листы
И чудно так на них глядела —
Как души смотрят с высоты
На ими брошенное тело...
И сколько жизни было тут,
Невозвратимо пережитой —
И сколько горестных минут,
Любви и радости убитой…
Стоял я, молча, в стороне
И пасть готов был на колени, —
И страшно-грустно стало мне,
Как от присущей милой тени...
И пусть список рекламных слоганов такой:
adverts = [
"Пяточками А, пяточками ЗОТ. Все ботинки на АЗОТ. Готовьте пяточки.",
"Кредит с кешбэком, 10%. Гамма-банк."
]
Тогда результат работы программы:
Она сидела на полу
И груду писем разбирала —
И, как остывшую золу,
Брала их в руки и бросала —
(Пяточками А, пяточками ЗОТ. Все ботинки на АЗОТ. Готовьте пяточки.)
Брала знакомые листы
И чудно так на них глядела —
Как души смотрят с высоты
На ими брошенное тело...
(Кредит с кешбэком, 10%. Гамма-банк.)
И сколько жизни было тут,
Невозвратимо пережитой —
И сколько горестных минут,
Любви и радости убитой…
(Пяточками А, пяточками ЗОТ. Все ботинки на АЗОТ. Готовьте пяточки.)
Стоял я, молча, в стороне
И пасть готов был на колени, —
И страшно-грустно стало мне,
Как от присущей милой тени...
(Кредит с кешбэком, 10%. Гамма-банк.)
В текстовом файле записаны числа, причём в первой строчке указано количество чисел
Напишите программу, которая записывает числа в новый файл, но в обратном порядке.
Например, если на вход программе дать файл СФ1.txt, то она должна будет создать новый текстовый файл reverse.txt
следующего содержания:
-256
111
1700
195
20
-100
12
Задача СФ5 (Чётные элементы1)
В текстовом файле — например, в файле СФ5.txt — дан список чисел: первая строка — количество чисел
Запишите в файл result.txt
все чётные числа, по одному на строке.
Числа должны идти в том же порядке, что и в исходном файле.
Пример:
# Вход (три числа):
3
1
2
3
# Выход:
2
Задача СФ6 (Больше своих соседей2)
В текстовом файле — например, в файле СФ6.txt — дан список чисел: первая строка — количество чисел
Определите, сколько в этом списке элементов, которые больше двух своих соседей, и запишите ответ в файл answer.txt
.
Крайние элементы списка учитывать не надо, потому что у них нет двух соседей.
Пример:
# Вход (три числа):
3
1
3
2
# Выход:
1
Задача СФ7 (Наибольший элемент3)
В текстовом файле — например, в файле СФ6.txt — дан список чисел: первая строка — количество чисел
Запишите в файл result.txt
значение наибольшего числа, а затем на новой строке ещё и индекс этого числа в списке.
Если наибольших элементов несколько, выведите индекс первого из них.
Пример:
# Вход (три числа):
3
1
3
2
# Выход (в Питоне индексация начинается с нуля):
3
1
Задача СФ8 (Переставить min и max4)
В текстовом файле — например, в файле СФ8.txt — дан список чисел: первая строка — количество чисел
Поменяйте местами минимальное и максимальное число.
Результат (список чисел с заменой мест) запишите в файл result.txt
, по одному числу на строке.
Пример:
# Вход (три числа):
3
1
3
2
# Выход:
3
1
2
Упражнение из лабы. (Далее идёт копия условия с сайта.)
При помощи конструктора turtle.Turtle()
можно создать новый объект черепахи.
Если поместить эти объекты в список, а потом циклически двигать каждую черепаху на нельшое смещение, возникает эффект одновременного движения:
import turtle
from random import randint
num_turtles = 5
num_steps = 100
spawn_border = 200
turtle_speed = 50
one_step = 2
turtles = []
for i in range(num_turtles):
new_turtle = turtle.Turtle(shape='turtle')
turtles.append(new_turtle)
for turtle in turtles:
turtle.penup()
turtle.speed(turtle_speed)
x = randint(-spawn_border, spawn_border)
y = randint(-spawn_border, spawn_border)
turtle.goto(x, y)
for i in range(num_steps):
for turtle in turtles:
turtle.forward(one_step)
При помощи подобного кода заставьте черепах вести себя как идеальный газ в сосуде. Если это слишком просто, то как реальный газ.5
Газ из черепашек (gif).
На основе кода как в первой задаче про черепашек сделайте так, чтобы черепашки словно танцевали вальс: разбиты на пары, партнёры смотрят друг на друга, кружатся и двигаются по полю (и не как газ, туда-сюда, а более-менее плавно).
Вальс черепашек (gif).
На основе кода как в первой задаче про черепашек сделайте так, чтобы черепашки проводили "ритуал вызова Ктулху": каждая черепашка идёт по своей окружности около общего центра, по часовой стрелке, рисуя линию; все черепашки двигаются с одинаковой линейной скоростью.
Вызов Ктулху (gif).
Если с включённым компьютером долго ничего не делать, то (при соответствующих настройках) может включиться экранная заставка (screensaver).
Ещё на "старом Windows" было много популярных вариантов таких заставок. Например, заставка с "трансформирующейся загогулиной". Или заставка с объектом, двигающимся по прямой по экрану и отскакивающим от стенок. В данной задаче с помощью черепашек как раз предлагается реализовать вариант подобной заставки.
На основе кода как в первой задаче про черепашек сделайте так, чтобы черепашки представили вариант "заставки Windows": все образуют какую-то фигуру, двигаются синхронно с одинаковой скоростью по прямой, при столкновении же хотя бы одной черепашки со стенкой — все меняют направление скорости как луч света при отражении.
Ниже показано несколько примеров возможных "черепашьих заставок":
Химическая колба (gif).
Цветочек (gif).