09.10 Командная строка и объекты
У всех уже должны быть аккаунты на Git-хостере (GitHub, GitLab, факультетский GitLab, иное
- а также ssh-ключи (или токены) для доступа в репозитории на это хостере
- Заведение хранилища для практикума (если ещё не)
- На git.cs.msu.ru под названием pythonprac или где угодно
Проверить, что оно публичное
Повторение git clone / hack / git add / git commit / git push
Создание каталога с протоколом семинара (т. н. « Задача_0»
Создать каталог <репозиторий>/<timestamp>/0, например, так:
mkdir `date "+%Y%m%d"`/0
- перейти туда
- В «Задаче 0» нет тестов и определённой структуры, всё, что нужно — это вовремя закоммитить и запушить результаты работы в классе
Всю работу на практикуме складывать в …/0
- Вывод и ввод данных в Python:
print()
input() и eval(input())
Что такое eval()
Конструкции вида a, b, c = eval(input())
Простейшая программа, которая вводит и выводит
Организовать ввод так, чтобы данная программа:
- выдала следующее:
<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
- напишите программу, которая: