09.16 Командная строка и объекты
FIXME повторение git clone / hack/ git add / git commit / git push
(с прошлого раза) Использование git.cs.msu.ru/prac
Регистрация на Ejudge (164 турнир) для сдачи заданий по лекциям
- Правила проверки Д/З в EJudge
- Вывод и ввод данных в Python:
print()
input() и eval(input())
Что такое eval()
Конструкции вида a, b, c = eval(input())
Простейшая программа, которая вводит и выводит
Задача_1 на эксперименты с вводом (см. ниже раздел с задачами)
- Самостоятельное тестирование
Перенаправление ввода-вывода с помощью "<" и ">"
Понятие о stdout vs stderr
Сравнение двух файлов с помощью diff
если у вас windows: имеется утилита на Python
Задача_2 на тестирование, с ручным заданием тестовых данных (см. ниже раздел с задачами).
Задача_3 (Д/З) на тестирование, с автогенерацией тестовых данных (см. ниже раздел с задачами).
Задача_1 на эксперименты с вводом:
введите с помощью a, b, c = eval(input()) значения для переменных a, b, c так, чтобы a стало числом, b - строкой, c - числом
- Пример вывода:
<class 'int'> <class 'str'> <class 'int'>
- Пример вывода:
введите с помощью a, b, c = eval(input()) значения для переменных a, b так, что в стандартном вводе для a задается целочисленное арифметическое выражение, для b - строковое выражение (конкатенация константных строк), для c --- вещественное число
введите с помощью a, b, c = eval(input()) значения для переменных a, b, c так, чтобы a стало числом, b - списком из трех чисел, c - числом
Задача_2 на тестирование, с ручным заданием тестовых данных:
- напишите программу, которая:
- получает через стандартный вход (stdin) последовательность целых чисел в виде списка, например "[1,2,3]"
- сортирует эти числа по возрастанию
- выводит результат в стандартный выход (stdout) в виде списка
- составьте вручную 3 тестовых примера, содержащих:
- текстовый файл с входными данными
- текстовый файл с эталонными выходными данными (соответствующими входным, в правильном формате)
- протестируйте программу каждом из составленных примеров:
- запустите программу с подачей входных данных из подготовленного файла и перенаправлением вывода в другой текстовый файл
- при помощи команды diff проверьте совпадение файла с выводом и файла с эталонным выводом
- напишите "ошибочную" программу, которая выдает на выход числа в том же порядке, в котором получила на вход. Протестируйте её на подготовленных входных данных. Каким должен быть тестовый пример, чтобы ошибка в программе не была обнаружена?
- напишите программу, которая:
Задача_3 на автогенерацию тестовых примеров:
- напишите программу, которая ищет наибольшее из поданных на вход целых чисел и выводит его; ввод и вывод организован аналогично описанной выше программе сортировки, с тем отличием что выводится единственное целое число.
напишите программу gentest.py, которая
- получает через стандартный вход целое число
- генерирует набор входных данных для программы-искателя максимума (9 случайных целых чисел от 1 до 100, и число, полученное на вход - оно должно быть расположено в случайной позиции с номером от 1 до 10)
- выдает сгенерированный набор в стандартный выход в виде списка
- сформируйте при помощи программы-генератора два тестовых примера (пример - комплект из двух файлов "входные данные" + "эталонный вывод", по аналогии с задачей_2):
- с числом, большим чем 100
- с числом, меньшим чем 100
- протестируйте программу-искатель максимума с каждым из этих тестовых примеров
- в каком из вариантов (а, б) тестирование может "обнаружить" ошибку в программе-искателе максимума, при том что программа правильная?
Д/З
Доделать Д/З