форкнуто от main/python-labs
Родитель
8842f56784
Сommit
6b7c3029d8
@ -0,0 +1,17 @@
|
||||
def write_to_file(data, filename, per_line):
|
||||
try:
|
||||
with open(filename, 'w') as f:
|
||||
for i in range(0, len(data), per_line):
|
||||
# Берем часть данных
|
||||
part = data[i:i + per_line]
|
||||
# Преобразуем в строку через запятую
|
||||
line = ','.join(str(x) for x in part)
|
||||
# Записываем строку
|
||||
f.write(line + '\n')
|
||||
|
||||
print(f"Данные записаны в файл '{filename}'")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"Ошибка: {e}")
|
||||
return False
|
||||
@ -0,0 +1,39 @@
|
||||
import random
|
||||
import math
|
||||
import Mod1_test
|
||||
|
||||
def generate_numbers():
|
||||
numbers = []
|
||||
mean = 23
|
||||
std = 12
|
||||
|
||||
for _ in range(50):
|
||||
r = sum(random.random() for _ in range(12)) - 6
|
||||
number = mean + std * r
|
||||
numbers.append(round(number, 4))
|
||||
|
||||
return tuple(numbers)
|
||||
|
||||
def main():
|
||||
print("=== Тест записи в файл ===")
|
||||
print("Генерирую 50 чисел...")
|
||||
data = generate_numbers()
|
||||
print(f"Первые 5 чисел: {data[:5]}")
|
||||
print(f"Всего чисел: {len(data)}")
|
||||
filename = "result.txt"
|
||||
per_line = 3
|
||||
success = Mod1_test.write_to_file(data, filename, per_line)
|
||||
|
||||
if success:
|
||||
print(f"\nФайл '{filename}' создан!")
|
||||
print("Содержимое файла:")
|
||||
print("-" * 30)
|
||||
|
||||
with open(filename, 'r') as f:
|
||||
for line in f:
|
||||
print(line.strip())
|
||||
|
||||
print("-" * 30)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@ -0,0 +1,17 @@
|
||||
20.7413,49.8095,17.1957
|
||||
9.0743,17.37,20.4473
|
||||
26.518,45.2142,28.8493
|
||||
5.6302,35.9775,4.7096
|
||||
25.659,28.9065,36.5441
|
||||
23.8253,23.031,23.5629
|
||||
37.4215,5.0137,12.6732
|
||||
14.3271,30.2452,11.6239
|
||||
21.9073,34.599,28.865
|
||||
16.5312,25.1718,11.6702
|
||||
25.8557,34.2817,16.7384
|
||||
10.3322,20.7349,6.2315
|
||||
47.4736,13.9535,12.2616
|
||||
6.5036,7.742,16.2279
|
||||
22.47,34.7622,34.7924
|
||||
21.9614,-3.9548,40.2638
|
||||
32.1589,29.3166
|
||||
@ -0,0 +1,97 @@
|
||||
# Индивидуальное контрольное задание по теме 8
|
||||
|
||||
## Задание:
|
||||
Разработайте функцию, на ее основе создайте модуль. Создайте второй модуль, в котором должны быть инструкции для ввода/создания исходных данных для проверки работы функции, вызов функции и отображение полученных результатов.
|
||||
Разработайте функцию c 3 аргументами, реализующую запись заданной последовательности – списка или кортежа (аргумент функции) в текстовый файл с заданным именем (аргумент функции) с заданным числом (аргумент функции) элементов на строке файла, разделенных запятыми. Проверьте её на записи в файл кортежа с 50 случайными, нормально распределенными числами с математическим ожиданием 23 и дисперсией 144 по 3 элемента в строке.
|
||||
|
||||
## Решение:
|
||||
- Модуль с функцией:
|
||||
```
|
||||
>>>def write_to_file(data, filename, per_line):
|
||||
try:
|
||||
with open(filename, 'w') as f:
|
||||
for i in range(0, len(data), per_line):
|
||||
# Берем часть данных
|
||||
part = data[i:i + per_line]
|
||||
# Преобразуем в строку через запятую
|
||||
line = ','.join(str(x) for x in part)
|
||||
# Записываем строку
|
||||
f.write(line + '\n')
|
||||
|
||||
print(f"Данные записаны в файл '{filename}'")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"Ошибка: {e}")
|
||||
return False
|
||||
```
|
||||
|
||||
- Модуль с проверкой работы функции:
|
||||
```
|
||||
>>>import random
|
||||
>>>import math
|
||||
>>>import Mod1_test
|
||||
|
||||
>>>def generate_numbers():
|
||||
numbers = []
|
||||
mean = 23
|
||||
std = 12
|
||||
|
||||
for _ in range(50):
|
||||
r = sum(random.random() for _ in range(12)) - 6
|
||||
number = mean + std * r
|
||||
numbers.append(round(number, 4))
|
||||
|
||||
return tuple(numbers)
|
||||
|
||||
>>>def main():
|
||||
print("=== Тест записи в файл ===")
|
||||
print("Генерирую 50 чисел...")
|
||||
data = generate_numbers()
|
||||
print(f"Первые 5 чисел: {data[:5]}")
|
||||
print(f"Всего чисел: {len(data)}")
|
||||
filename = "result.txt"
|
||||
per_line = 3
|
||||
success = Mod1_test.write_to_file(data, filename, per_line)
|
||||
|
||||
if success:
|
||||
print(f"\nФайл '{filename}' создан!")
|
||||
print("Содержимое файла:")
|
||||
print("-" * 30)
|
||||
|
||||
with open(filename, 'r') as f:
|
||||
for line in f:
|
||||
print(line.strip())
|
||||
|
||||
print("-" * 30)
|
||||
|
||||
>>>if __name__ == "__main__":
|
||||
main()
|
||||
=== Тест записи в файл ===
|
||||
Генерирую 50 чисел...
|
||||
Первые 5 чисел: (20.7413, 49.8095, 17.1957, 9.0743, 17.37)
|
||||
Всего чисел: 50
|
||||
Данные записаны в файл 'result.txt'
|
||||
|
||||
Файл 'result.txt' создан!
|
||||
Содержимое файла:
|
||||
------------------------------
|
||||
20.7413,49.8095,17.1957
|
||||
9.0743,17.37,20.4473
|
||||
26.518,45.2142,28.8493
|
||||
5.6302,35.9775,4.7096
|
||||
25.659,28.9065,36.5441
|
||||
23.8253,23.031,23.5629
|
||||
37.4215,5.0137,12.6732
|
||||
14.3271,30.2452,11.6239
|
||||
21.9073,34.599,28.865
|
||||
16.5312,25.1718,11.6702
|
||||
25.8557,34.2817,16.7384
|
||||
10.3322,20.7349,6.2315
|
||||
47.4736,13.9535,12.2616
|
||||
6.5036,7.742,16.2279
|
||||
22.47,34.7622,34.7924
|
||||
21.9614,-3.9548,40.2638
|
||||
32.1589,29.3166
|
||||
------------------------------
|
||||
```
|
||||
Загрузка…
Ссылка в новой задаче