форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
55 строки
4.4 KiB
Markdown
55 строки
4.4 KiB
Markdown
# ОБЩЕЕ КОНТРОЛЬНОЕ ЗАДАНИЕ по Теме 5
|
|
Выполнил: Тимошенко А.А. Проверил: Козлюк Д.А.
|
|
|
|
## Задание
|
|
Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следую-щие операции:
|
|
• Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
|
|
• Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
|
|
• Записывается кортеж в бинарный файл.
|
|
• Записывается в этот же файл список и закрывается файл.
|
|
• Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
|
|
• Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
|
|
• Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде от-дельных списков со своими именами.
|
|
|
|
## Решение
|
|
```
|
|
>>> nums = tuple(str(random.randint(6, 56)) for _ in range(125))
|
|
>>> nums
|
|
('7', '34', '42', '20', '50', '45', '9', '29', '17', '9', '51', '51', '39', '22', '49', '34', '45', '29', '49', '48', '56', '28', '48', '47', '41', '43', '33', '44', '49', '10', '30', '6', '49', '14', '41', '18', '7', '41', '20', '42', '56', '54', '20', '40', '18', '13', '32', '40', '44', '40', '37', '39', '8', '43', '33', '40', '20', '10', '10', '39', '46', '37', '9', '52', '45', '10', '37', '18', '56', '47', '46', '20', '30', '42', '49', '43', '22', '11', '23', '30', '30', '47', '31', '43', '32', '27', '20', '24', '25', '50', '54', '15', '42', '40', '24', '27', '10', '13', '39', '27', '34', '43', '11', '44', '41', '14', '38', '21', '45', '31', '17', '48', '18', '54', '21', '38', '30', '48', '35', '32', '38', '35', '35', '56', '24')
|
|
```
|
|
Примечание: если итератор не надо использовать в теле цикла, принято просто обозначать его _
|
|
```
|
|
>>> group = ["Timoshenko", "Hodyk", "Kovalenko", "Filippov", "Goloshchapov"]
|
|
>>> fl = open("okz.okz", "wb")
|
|
>>> pickle.dump(nums, fl)
|
|
>>> pickle.dump(group, fl)
|
|
>>> fl.close()
|
|
>>> fl = open("okz.okz", "rb")
|
|
>>> nums1 = pickle.load(fl)
|
|
>>> nums1
|
|
('7', '34', '42', '20', '50', '45', '9', '29', '17', '9', '51', '51', '39', '22', '49', '34', '45', '29', '49', '48', '56', '28', '48', '47', '41', '43', '33', '44', '49', '10', '30', '6', '49', '14', '41', '18', '7', '41', '20', '42', '56', '54', '20', '40', '18', '13', '32', '40', '44', '40', '37', '39', '8', '43', '33', '40', '20', '10', '10', '39', '46', '37', '9', '52', '45', '10', '37', '18', '56', '47', '46', '20', '30', '42', '49', '43', '22', '11', '23', '30', '30', '47', '31', '43', '32', '27', '20', '24', '25', '50', '54', '15', '42', '40', '24', '27', '10', '13', '39', '27', '34', '43', '11', '44', '41', '14', '38', '21', '45', '31', '17', '48', '18', '54', '21', '38', '30', '48', '35', '32', '38', '35', '35', '56', '24')
|
|
>>> group1 = pickle.load(fl)
|
|
>>> group1
|
|
['Timoshenko', 'Hodyk', 'Kovalenko', 'Filippov', 'Goloshchapov']
|
|
```
|
|
Примечание: при чтении с помощью pickle.load() тоже есть указатель, который останавливается
|
|
при достижении /n, так что можно просто вызвать ее два раза, чтобы записать эти два объекта.
|
|
Если вызвать ее третий раз, будет EOFError.
|
|
```
|
|
>>> print("Файлы nums совпадают") if nums == nums1 else print("Файлы nums не совпадают")
|
|
Файлы nums совпадают
|
|
>>> print("Файлы group совпадают") if group == group1 else print("Файлы group не совпадают")
|
|
Файлы group совпадают
|
|
|
|
>>> for i in range(125//5):
|
|
exec('list' + str(i) + '=' + str(list(nums1[i:i+5])))
|
|
```
|
|
Можно вызвать конкретные списки для проверки:
|
|
```
|
|
>>> list1
|
|
['34', '42', '20', '50', '45']
|
|
>>> list6
|
|
['9', '29', '17', '9', '51']
|
|
```
|
|
|