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 05_Files/Task_01.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'''
Создать программно файл в текстовом формате, записать в него построчно данные, вводимые пользователем.
Об окончании ввода данных свидетельствует пустая строка.
'''


with open('test_task_01.txt', 'w') as obj:
while True:
line = input('Введите текст: ')
if line == '':
break
else:
obj.write(line + '/n')
13 changes: 13 additions & 0 deletions 05_Files/Task_02.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'''
Создать текстовый файл (не программно), сохранить в нем несколько строк,
выполнить подсчет количества строк, количества слов в каждой строке.
'''


with open('test_task_02.txt', 'r') as obj:

data = obj.readlines()
print(f'В файле {obj.name} содержится {len(data)} строк')

for itm in enumerate(data):
print(f'Строка №{itm[0]+1} содержит {len(itm[1].split(" "))} слова')
29 changes: 29 additions & 0 deletions 05_Files/Task_03.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
'''
Создать текстовый файл (не программно), построчно записать фамилии сотрудников и величину их окладов.
Определить, кто из сотрудников имеет оклад менее 20 тыс., вывести фамилии этих сотрудников.
Выполнить подсчет средней величины дохода сотрудников.

У меня на вход поступает файл txt с содержимым:
Tom 19000
Jack 19000
Max 21000
Dan 22000
'''

with open('test_task_03.txt', 'r') as obj:

data = obj.readlines()

employee_20 = '' # строка сотрудников с ЗП менее 20 т/р/
sum_salary = 0 # переменная для подсчета средней ЗП

print('Оклады сотрудников: ')
for el in data:
print(el.removesuffix('\n') + ' рублей') # вывод имен сотрудников и значения их оклада
sum_salary += int(el.split(' ')[1])
if int(el.split(' ')[1]) < 20000:
employee_20 += (el.split(' ')[0]) + '\n' # вывод имен сотрудников с зп менее 20 т.р

print('\nСотрудники, оклады которых меньше 20000 рублей:\n' + employee_20)
print(f'Средняя заработная плата составляет {sum_salary/len(data)} рублей') # вывод средней зп

25 changes: 25 additions & 0 deletions 05_Files/Task_04.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
'''
Создать (не программно) текстовый файл со следующим содержимым:

One — 1
Two — 2
Three — 3
Four — 4

Необходимо написать программу, открывающую файл на чтение и считывающую построчно данные.
При этом английские числительные должны заменяться на русские.
Новый блок строк должен записываться в новый текстовый файл.
'''


num_dict = {'One': 'Oдин', 'Two': 'Два', 'Three': 'Три', 'Four': 'Четыре'}

with open('test_task_04.txt', 'r') as obj_from, open('new_task_04.txt', 'w') as obj_to:

for line in obj_from: # прохожу по каждой строке файла
a = line.split(' — ') # разделяю строку на два элемента
if a[0] in num_dict: # делаю замену английского слова на русское, если оно есть в словаре
a[0] = num_dict[a[0]]
obj_to.write(' — '.join(a)) # записываю новую строку в выходной файл
else:
continue
30 changes: 30 additions & 0 deletions 05_Files/Task_05.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
'''
Создать (программно) текстовый файл, записать в него программно набор чисел, разделенных пробелами.
Программа должна подсчитывать сумму чисел в файле и выводить ее на экран.
'''

import random

# запись в файл случйных чисел
with open('test_task_05.txt', 'w') as my_file:

# ввод информации и генерации случайных чисел для записи
n = int(input('Введите кол-во цифр, которые необходимо сгененрировать: '))
min = int(input('Укажите нижний предел случайных чисел: '))
max = int(input('Укажите верхний предел случайных чисел: '))

# генерация случайных чисел и запись в файл
random_num = [str(random.randint(min, max)) + ' ' for i in range(n)]
random_num = ''.join(random_num).removesuffix(' ')
print(f'Сгенерированы числа: {random_num}, числа записаны в файл {my_file.name}')
my_file.write(random_num)


# суммирование чисел, записанных в файле, и вывод значения на экран
with open('test_task_05.txt', 'r') as my_file:
num = my_file.read().split(' ')
num = list(map(int, num))
print(f'Сумма чисел равна {sum(num)}')



27 changes: 27 additions & 0 deletions 05_Files/Task_06.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'''
Необходимо создать (не программно) текстовый файл, где каждая строка описывает учебный предмет и наличие лекционных,
практических и лабораторных занятий по этому предмету и их количество. Важно, чтобы для каждого предмета не обязательно
были все типы занятий. Сформировать словарь, содержащий название предмета и общее количество занятий по нему.
Вывести словарь на экран.

Примеры строк файла:
Информатика: 100(л) 50(пр) 20(лаб)
Физика: 30(л) 10(лаб)
Физкультура: 30(пр)

Пример словаря:
{“Информатика”: 170, “Физика”: 40, “Физкультура”: 30}
'''

import re # для применения регулярных выражений

with open('test_task_06.txt', 'r') as info:
info_dict = {}
for line in info:
el_line = re.sub('\(л\)|\(пр\)|\(лаб\)|:|\n', '', line).split(' ') # удаляю из строки лишние символы и превращаю в список
info_dict[el_line[0]] = sum(list(map(int, el_line[1:]))) # присваиваю словарю ключ - название предмета, значение - сумма часов
# print(el_line)


print('Информация по предматам и затраиваемым часам:')
print(info_dict)
43 changes: 43 additions & 0 deletions 05_Files/Task_07.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
'''
Создать (не программно) текстовый файл, в котором каждая строка должна содержать данные о фирме:
название, форма собственности, выручка, издержки.
Пример строки файла: 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

with open('test_task_07.txt', 'r') as data:
sum_profit = 0 # для подсчета суммы положительной прибыли
n = 0 # для подсчета фирм, у которых прибыль положительна
info = [{}] # шаблон для итогового списка
for line in data: # цикл для чтения каждой строки файла
el_line = line.split(' ')
profit = int(el_line[2]) - int(el_line[3].removesuffix('\n')) # расчет прибыли
info[0][el_line[0]] = profit # запись в словать названия фирмы и её прибыли
if profit > 0:
sum_profit += profit # подсчет суммы положительной прибыли по фирмам
n += 1 # подсчет фирм с положительной прбылью
print(el_line)
average_profit = sum_profit / n # расчет средней прибыли по фирмам
info.append( {'Средняя прибыль': average_profit} )

print(average_profit)
print(info)

# запись данных в формат json
with open('test_task_07.json', 'w') as data_j:
json.dump(info, data_j)