09.13 Командная строка и объекты
У всех уже должны быть аккаунты на GH/GL!
- FIXME: для доступа в репозитории на GH/GL нужны ssh-ключи, об их создании/добавлении нужно заранее рассказать
- Заведение хранилища для практикума
- На git.cs.msu.ru под названием pythonprac или на GH/GL!
- Повторение git clone / hack / git add / git commit / git push
- Вывод и ввод данных в 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: имеется утилита на Python
- Где она лежит??
python3 -c 'import os; print(os.path.join(os.path.dirname(os.__file__), "Tools", "scripts", "diff.py"))'
А потом python3 путь-до-diff.py ключи файл1 файл2
Сравнение двух файлов с помощью diff:
Создать два файла из результатов python3 -m calendar 2022 месяц, где месяц — это 09 и 12
Сравнить их с ключом -u
- Решение заданий
Задачa_1 (демо):
- Написать программу, которая вводит два числа через запятую и выводит наибольшее из них
- Написать три теста
- Решение Задачи_1
- (клон репозитория)
- Создать каталог
mkdir `date "+%Y%m%d`/1
- перейти туда
написать программу prog.py
создать каталог mkdir tests
создать три входных файла: echo "число, число" > tests/1.in" (а также tests/2.in и tests/3.in)
создать три эталонных вывода (проверить глазками, что они действительно эталонные☺): python3 prog.py < tests/1.in > tests/1.out)
Обязательный commit и push во время семинара
Задача_2:
- напишите программу, которая:
- получает через стандартный вход (stdin) последовательность целых чисел в виде списка, например
[7,2,3]
- сортирует эти числа по возрастанию
- выводит результат в стандартный выход (stdout) через пробел и запятую
2, 3, 7
- получает через стандартный вход (stdin) последовательность целых чисел в виде списка, например
- составьте вручную 3 тестовых примера, содержащих:
- текстовый файл с входными данными
- текстовый файл с эталонными выходными данными (соответствующими входным, в правильном формате)
- протестируйте программу каждом из составленных примеров:
- запустите программу с подачей входных данных из подготовленного файла и перенаправлением вывода в другой текстовый файл
- при помощи команды diff проверьте совпадение файла с выводом и файла с эталонным выводом
- напишите "ошибочную" программу, которая выдает на выход числа в том же порядке, в котором получила на вход. Протестируйте её на подготовленных входных данных. Каким должен быть тестовый пример, чтобы ошибка в программе не была обнаружена?
Обязательный commit и push
- напишите программу, которая: