09.10 Командная строка и объекты
(с прошлого раза) Использование git.cs.msu.ru/prac
(с прошлого раза) Использование XMPP:stud.cs.msu.ru
Регистрация на Ejudge (148 турнир)
- Правила проверки Д/З в EJudge
- Вывод и ввод данных в Python:
print()
input() и eval(input())
Что такое eval()
Конструкции вида a, b, c = eval(input())
Простейшая программа, которая вводит и выводит
Задача_1 на эксперименты с вводом (см. ниже раздел с задачами)
- Самостоятельное тестирование
Перенаправление ввода-вывода с помощью "<" и ">"
Перенаправление ввода и вывода с помощью "|"
Понятие о stdout vs stderr
Понятие о сценарии ( в windows — .cmd)
Сравнение двух файлов с помощью diff
если у вас windows: имеется утилита на Python
Задача_2 на автоматическое тестирование, с ручным заданием тестовых данных (см. ниже раздел с задачами).
Задача_3 на автоматическое тестирование, с автогенерацией тестовых данных (см. ниже раздел с задачами).
Задачи
Задача_1 на эксперименты с вводом:
- а) введите значения для переменных x, y, z так, чтобы x стало числом, y - строкой, z - числом
- б) введите значения для переменных x, y так, что в стандартном вводе для х задается арифметическое выражение, а для у - строковое выражение (конкатенация константных строк)
- в) введите значения для переменных х, у, z так, чтобы х стало числом, у - списком из трех чисел, z - числом
Задача_2 на автоматическое тестирование, с ручным заданием тестовых данных:
- напишите программу, которая:
- получает через стандартный вход (stdin) последовательность целых чисел в виде списка, например "[1,2,3]"
- сортирует эти числа по возрастанию
- выводит результат в стандартный выход (stdout) в виде списка
- составьте вручную 3 тестовых примера, содержащих:
- текстовый файл с входными данными
- текстовый файл с эталонными выходными данными (соответствующими входным, в правильном формате)
- напишите тестовый сценарий, который:
- получает на вход (параметры командной строки) имя файла с входными данными и имя файла с эталонными выходными данными
- запускает программу, подает ей на вход входные данные, направляет выходные данные во временный файл, и сравнивает полученные выходные данные с эталонными; в сценарии используйте перенаправление ввода и вывода
- попробуйте, как работает сценарий с "ошибочной" программой, которая выдает на выход числа в том же порядке, в котором получила на вход. Каким должен быть тестовый пример, чтобы сценарий при этом не обнаружил ошибку?
Задача_3 на автоматическое тестирование, с автогенерацией тестовых данных:
- напишите программу, которая ищет наибольшее из поданных на вход целых чисел и выводит его; ввод и вывод организован аналогично описанной выше программе сортировки, с тем отличием что выводится единственное целое число.
- напишите программу, которая
- получает через стандартный вход целое число
- генерирует набор входных данных для программы-искателя максимума (10 случайных целых чисел от 1 до 100, кроме одного из чисел, равного полученному на вход)
- выдает сгенерированный набор в стандартный выход в виде списка
- напишите сценарий, который:
- получает на вход (параметр командной строки) целое число
- запускает программу-генератор и программу-искатель максимума в конвейере через "|", при этом программе-генератору на вход подает полученное число
- направляет выход программы-искателя максимума во временный файл
- сравнивает выход программы-искателя максимума с эталоном (для этого генерирует временный файл, содержащий полученное на вход число)
- попробуйте запустить сценарий, передавая ему:
- а) число, большее чем 100
- б) число, меньшее чем 100
- в каком из вариантов (а, б) сценарий может "обнаружить" ошибку в программе-искателе максимума, притом что программа правильная?
Д/З
- добиться работоспособности сценариев (для задач 2 и 3) дома