Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions task_1_lesson5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Задание №1
# Создать программный файл в текстовом формате, записать в него построчно данные,
# вводимые пользователем. Об окончании ввода данных будет свидетельствовать пустая
# строка.

with open("task_1_lesson5.txt", "at", encoding="utf-8") as f:
while True:
data = input('Введите данные: ')
if data == '':
print('Ваши данные сохранены в файл task_1_lesson5.txt')
break
else:
f.write(data + '\n')
15 changes: 15 additions & 0 deletions task_2_lesson5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Задание №2
# Создать текстовый файл (не программно), сохранить в нём несколько строк, выполнить
# подсчёт строк и слов в каждой строке.

with open("task_2_lesson5.txt") as f:
i = 0
summa = 0
for line in f:
i += 1
print(f'В строке {i} - {len(line.split())} слов')
summa += len(line.split())
print(f'Всего в файле {i} строк и {summa} слов')

''' Не смог понять, почему в четвертой строке файла программа считает 13 слов, а не 12 как есть.
Проверил все пробеллы. Может Вы сможете объяснить?'''
6 changes: 6 additions & 0 deletions task_2_lesson5.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Таблица десериализации неабсолютная инверсия таблицы сериализации. Это означает, что при
преобразовании объекта в JSON-формат и последующем декодировании получить полностью
идентичный объект не получится.
Рассмотрим пример десериализации. Представим, что у нас есть данные на диске, которыми
необходимо управлять. Как и в предыдущем примере, воспользуемся контекстными менеджером, но
откроем JSON-файл в режиме чтения.
22 changes: 22 additions & 0 deletions task_3_lesson5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Задание №3
# Создать текстовый файл (не программно). Построчно записать фамилии сотрудников и
# величину их окладов (не менее 10 строк). Определить, кто из сотрудников имеет оклад менее
# 20 тысяч, вывести фамилии этих сотрудников. Выполнить подсчёт средней величины дохода
# сотрудников.
# Пример файла:
# Иванов 23543.12
# Петров 13749.32

with open("task_3_lesson5.txt", encoding="utf-8") as f:
summa = 0
i = 0
print('Следующие сотрудники имеют оклад менее 20 тысяч рублей:')
for line in f:
salary = line.split()
if float(salary[1]) < 20000:
print(salary[0])
else:
pass
i += 1
summa = summa + float(salary[1])
print(f'Средний оклад сотрудников: {round((summa/i), 2)} руб.')
11 changes: 11 additions & 0 deletions task_3_lesson5.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Иванов 23543.12
Петров 13749.32
Сидоров 18745.65
Смирнов 45129.64
Шувалов 12569.78
Ушаков 78951.45
Воронов 36457.49
Соколов 24587.13
Максимов 39421.14
Жуков 16897.45
Семенов 17456.36
20 changes: 20 additions & 0 deletions task_4_lesson5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Задание №4
# Создать (не программно) текстовый файл со следующим содержимым:
# One — 1
# Two — 2
# Three — 3
# Four — 4
# Напишите программу, открывающую файл на чтение и считывающую построчно данные. При
# этом английские числительные должны заменяться на русские. Новый блок строк должен
# записываться в новый текстовый файл.

dict_number = {'One':'Один', 'Two':'Два', 'Three':'Три', 'Four':'Четыре'}
new_ls = []
out_file = open("task_4_lesson5_2.txt", "at", encoding="utf-8")
with open("task_4_lesson5_1.txt", encoding="utf-8") as in_file:
for line in in_file:
temp = line.split()
len_key = len(temp[0])
key = temp[0]
out_file.write(dict_number[key]+line[len_key:])
out_file.close()
4 changes: 4 additions & 0 deletions task_4_lesson5_1.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
One — 1
Two — 2
Three — 3
Four — 4
26 changes: 26 additions & 0 deletions task_5_lesson5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Задание №5
# Создать (программно) текстовый файл, записать в него программно набор чисел, разделённых
# пробелами. Программа должна подсчитывать сумму чисел в файле и выводить её на экран.

'''Создается текстовый файл со строками чисел'''
with open("task_5_lesson5.txt", "at", encoding="utf-8") as f:
while True:
str_numbers = input('Введите строку чисел, разделенных пробелами: ')
f.write(f'{str_numbers}\n')
exit_question = input('Введите "exit", если больше не нужно вводить строку чисел: ')
if exit_question == 'exit':
break

'''Подсчет суммы чисел в файле'''
with open("task_5_lesson5.txt", encoding="utf-8") as f:
i = 1
sum_file = 0
for line in f:
ls_number_line = line.split()
sum_line = 0
for el in ls_number_line:
sum_line = sum_line + float(el)
print(f'Сумма чисел в строке {i} равна {round(sum_line, 2)}')
sum_file = sum_file + sum_line
i += 1
print(f'Сумма всех чисел в файле task_5_lesson5.txt равна: {round(sum_file, 2)}')
29 changes: 29 additions & 0 deletions task_6_lesson5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Задание №6
# Сформировать (не программно) текстовый файл. В нём каждая строка должна описывать
# учебный предмет и наличие лекционных, практических и лабораторных занятий по предмету.
# Сюда должно входить и количество занятий. Необязательно, чтобы для каждого предмета
# были все типы занятий.
# Сформировать словарь, содержащий название предмета и общее количество занятий по
# нему. Вывести его на экран.
# Примеры строк файла: Информатика: 100(л) 50(пр) 20(лаб).
# Физика: 30(л) — 10(лаб)
# Физкультура: — 30(пр) —
# Пример словаря: {“Информатика”: 170, “Физика”: 40, “Физкультура”: 30}

dict_lessons = {}
with open("task_6_lesson5.txt", encoding="utf-8") as f:
for line in f:
ls_line = line.split()
key = ls_line[0]
sum_key = 0
i = 1
while i < 4:
temp_str = ''
for el in ls_line[i]:
if el.isdigit() == True:
temp_str = temp_str + el
if temp_str != '':
sum_key = sum_key + int(temp_str)
i += 1
dict_lessons[key[:-1]] = sum_key
print(dict_lessons)
6 changes: 6 additions & 0 deletions task_6_lesson5.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Информатика: 100(л) 50(пр) 20(лаб)
Физика: 30(л) — 10(лаб)
Физкультура: — 30(пр) —
Математика: 80(л) — 25(лаб)
Астрономия: — — —
Литература: 75(л) — —
44 changes: 44 additions & 0 deletions task_7_lesson5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Задание №7
# Создать вручную и заполнить несколькими строками текстовый файл, в котором каждая
# строка будет содержать данные о фирме: название, форма собственности, выручка, издержки.
# Пример строки файла: firm_1 ООО 10000 5000.
# Необходимо построчно прочитать файл, вычислить прибыль каждой компании, а также
# среднюю прибыль. Если фирма получила убытки, в расчёт средней прибыли её не включать.
# Далее реализовать список. Он должен содержать словарь с фирмами и их прибылями, а
# также словарь со средней прибылью. Если фирма получила убытки, также добавить её в
# словарь (со значением убытков).
# Пример списка: [{“firm_1”: 5000, “firm_2”: 3000, “firm_3”: 1000}, {“average_profit”: 2000}].
# Итоговый список сохранить в виде json-объекта в соответствующий файл.
# Пример json-объекта:
# [{"firm_1": 5000, "firm_2": 3000, "firm_3": 1000}, {"average_profit": 2000}]
# Подсказка: использовать менеджер контекста.

import json

dict_firms = {}
dict_ave_prof = {}
with open("task_7_lesson5.txt", encoding="utf-8") as f:
sum_profit = 0
i = 0
for line in f:
ls_line = line.split()
profit = round((float(ls_line[2]) - float(ls_line[3])), 2)
dict_firms[ls_line[0]] = profit
if profit >= 0:# Нулевая прибыль не является убытком
sum_profit = sum_profit + profit
i += 1
dict_ave_prof['average_profit'] = round((sum_profit / i), 2)
result_list = [dict_firms, dict_ave_prof]
print(result_list)

'''Сериализация'''
json_result_list = json.dumps(result_list)
print(json_result_list)

with open("task_7_lesson5.json", "w") as write_f:
json.dump(result_list, write_f)

'''Десериализация'''
with open("task_7_lesson5.json") as read_f:
load_list = json.load(read_f)
print(load_list)
6 changes: 6 additions & 0 deletions task_7_lesson5.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Промпоставка ООО 10000 5000
Дэмка ОАО 150000 61000
ГАЗ ОАО 15000000 15000000
Пятерочка ООО 1560000 1700000
МАГНИТ ОАО 8560000 7500000
МАГНАТ ООО 1200000 1350000