09.14 Командная строка и объекты
FIXME долг за прошлый семинар: использование ssh-агента
Создание пары SSH-ключей:
ssh-keygen
- Защитить пассфразой
добавить в агент ssh-add
проверить ssh-add -l
посмотреть ls .ssh
Что делать:
- Закрытый никуда не копировать
- Открытый выложить на git-хостинг:
Ключу от практикума стоит дать как можно меньше привилегий — доступа в единственный репозиторий Д/З хватит
Репозиторий с Д/З
У всех уже должны быть аккаунты на Git-хостере (GitHub, GitLab, факультетский GitLab, иное
- Если нет:
- Заведение хранилища для практикума (если ещё не)
- На git.cs.msu.ru под названием pythonprac
Проверить, что оно публичное
- Открытый выложить на git-хостинг
- Заведение хранилища для практикума (если ещё не)
Что делать в Д/З
Повторение git clone / hack / git add / git commit / git push
на репозитории с Д/З
Создание каталога с протоколом семинара (т. н. «
Задача_0» Создать каталог <репозиторий>/<timestamp>/0, где timestamp — это ГГГГММДД; например, так:
mkdir -p `date "+%Y%m%d"`/0
- перейти туда
- В «Задаче 0» нет тестов и определённой структуры, всё, что нужно — это вовремя закоммитить и запушить результаты работы в классе
Всю работу на практикуме складывать в …/0
- Вывод и ввод данных в Python:
print()
input() и eval(input())
Что такое eval()
Конструкции вида a, b, c = eval(input())
Простейшая программа, которая вводит и выводит Добавить её и сделать git commit
Организовать ввод так, чтобы данная программа: - выдала следующее:
<class 'int'> <class 'str'> <class 'builtin_function_or_method'>
- выдала следующее:
- Самостоятельное тестирование
Перенаправление ввода-вывода с помощью "<" и ">"; понятие о stdout vs stderr
Сравнение двух файлов с помощью diff
если у вас windows и нет утилиты diff: имеется утилита на Python Просто копируем содержимое этого примера в файл путь-до-diff.py
А потом python3 путь-до-diff.py ключи файл1 файл2
Сравнение двух файлов с помощью diff: Создать два файла из результатов python3 -m calendar 2024 месяц, где месяц — это 09 и 12
Сравнить их с ключом -u
Написание тестов
Задачa_0 (демо): - Написать программу, которая вводит два числа через запятую и выводит наибольшее из них
- Написать три теста
Решение Задачи_0
написать программу prog.py
создать каталог mkdir check
создать три входных файла: echo "число, число" > check/1.in" (а также check/2.in и check/3.in)
создать три эталонных вывода (проверить глазками, что они действительно эталонные☺): python3 prog.py < check/1.in > check/1.out)
Остальные файлы в каталоге <timestamp>/0 удалять не надо — это протокол вашей работы
NB!: Обязательный commit и push во время семинара
Д/З
Последний раз™ напоминаем о необходимости зарегистрироваться
Ознакомьтесь с порядком оформления репозитория с Д/З
Задача_1: - напишите программу, которая:
получает через стандартный вход (stdin) последовательность целых чисел в виде списка, например
[7,2,3]
- сортирует эти числа по возрастанию
выводит результат в стандартный выход (stdout) через пробел и запятую
2, 3, 7
составьте вручную 3 тестовых примера (check/*.{in,out}), содержащих:
- текстовый файл с входными данными
- текстовый файл с эталонными выходными данными (соответствующими входным, в правильном формате)
- протестируйте программу каждом из составленных примеров:
- запустите программу с подачей входных данных из подготовленного файла и перенаправлением вывода в другой текстовый файл
- при помощи команды diff проверьте совпадение файла с выводом и файла с эталонным выводом
- напишите "ошибочную" программу, которая выдает на выход числа в том же порядке, в котором получила на вход. Протестируйте её на подготовленных входных данных. Каким должен быть тестовый пример, чтобы ошибка в программе не была обнаружена?
Обязательный commit и push
- напишите программу, которая:
