Skip to content
10 changes: 10 additions & 0 deletions lesson_5/hw01_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Создать программно файл в текстовом формате, записать в него построчно данные, вводимые пользователем.
# Об окончании ввода данных свидетельствует пустая строка.

import os

with open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_file.txt', 'w', encoding='utf-8') as file:
line = None
while line != '':
line = input('Введите строку, которую хотите записать в файл. Если не хотите, нажмите Enter\n')
file.write(f'{line}\n')
14 changes: 14 additions & 0 deletions lesson_5/hw02_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Создать текстовый файл (не программно), сохранить в нем несколько строк, выполнить подсчет количества строк,
# количества слов в каждой строке.


import os

with open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_file.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
for num, line in enumerate(lines):
if line.isspace():
continue
else:
words = line.strip().split(' ')
print(f'Строка {num}: количество слов -- {len(words)}')
25 changes: 25 additions & 0 deletions lesson_5/hw03_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Создать текстовый файл (не программно), построчно записать фамилии сотрудников и величину их окладов.
# Определить, кто из сотрудников имеет оклад менее 20 тыс., вывести фамилии этих сотрудников.
# Выполнить подсчет средней величины дохода сотрудников.


import os

with open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_file.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
av_sum = 0
for num, line in enumerate(lines):
if line.isspace():
continue
else:
line = line.strip()
words = line.split(' ')
try:
salary = int(words[1])
av_sum += salary
if salary <= 20000:
print(f'Сотрудник {words[0]} имеет низкую зарплату ({words[1]})')
except ValueError:
print(f'Проверьте данные в файле на строке {num}')

print(f'\nСредняя зарплата при этом составляет: {av_sum / len(lines)}')
24 changes: 24 additions & 0 deletions lesson_5/hw04_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Создать (не программно) текстовый файл со следующим содержимым:
# One — 1
# Two — 2
# Three — 3
# Four — 4
# Необходимо написать программу, открывающую файл на чтение и считывающую построчно данные.
# При этом английские числительные должны заменяться на русские. Новый блок строк должен записываться
# в новый текстовый файл.


import os

translator = {'One': 'Один', 'Two': 'Два', 'Three': 'Три', 'Four': 'Четыре'}
try:
with open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_file.txt', 'x', encoding='utf-8') as file,\
open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_new_file.txt', 'a+', encoding='utf-8') as sec_file:
lines = file.readlines()
for line in lines:
words = line.split(' ')
if words[0] in translator.keys():
words[0] = translator[words[0]]
sec_file.write(' '.join(words))
except FileNotFoundError:
print('Один из файлов отсутствует!')
23 changes: 23 additions & 0 deletions lesson_5/hw05_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Создать (программно) текстовый файл, записать в него программно набор чисел, разделенных пробелами.
# Программа должна подсчитывать сумму чисел в файле и выводить ее на экран.


import os
import random

# сперва создадим текстовый файл и набьем в него чисел
with open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_file.txt', 'w+', encoding='utf-8') as file:
number_list = []
for i in range(10):
number_list.append(str(random.randint(0, 40)))
file.write(' '.join(number_list))

with open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_file.txt', 'r', encoding='utf-8') as file:
number_list_2 = file.readline().split(' ')
print(f'Прочитанный из файла список -- {number_list_2}')
for num, item in enumerate(number_list_2[:]):
try:
number_list_2[num] = int(item)
except ValueError:
print('Ошибка при переводе числа из списка в числовой формат для сложения, проверьте')
print(f'Сумма чисел, записанных в файл -- {sum(number_list_2)}')
28 changes: 28 additions & 0 deletions lesson_5/hw06_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Необходимо создать (не программно) текстовый файл, где каждая строка описывает учебный предмет и наличие лекционных,
# практических и лабораторных занятий по этому предмету и их количество. Важно, чтобы для каждого предмета
# не обязательно были все типы занятий. Сформировать словарь, содержащий название предмета
# и общее количество занятий по нему.
# Вывести словарь на экран.

# формат файла:
# Философия. Лекционное занятие: 10, Практическое занятие: 13


import os


with open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_file.txt', 'r', encoding='utf-8') as file:
lines_list = file.readlines()
lessons_dict = {}
for line in lines_list:
record = line.split('. ')
lesson_key = record[0]
lesson_val = 0
for work in record[1].split(', '):
work_detailed = work.split(': ')
lesson_val += int(work_detailed[1])
lessons_dict.update({lesson_key: lesson_val})

for key, value in lessons_dict.items():
print(f"{key}: {value}")

37 changes: 37 additions & 0 deletions lesson_5/hw07_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Создать (не программно) текстовый файл, в котором каждая строка должна содержать данные о фирме:
# название, форма собственности, выручка, издержки. Необходимо вычислить прибыль каждой компании и среднюю прибыль.
# Реализовать список, содержащий словарь (название фирмы и прибыль) и словарь с одним элементом (средняя прибыль).
# Добавить в первый словарь еще один элемент, содержащий результат вычисления отношения прибыли к убыткам.
# Итоговый список сохранить в файл.
# Подсказка: использовать менеджеры контекста.

# формат записи:
# Рога и Копыта, ООО, 100000, 4788

import os

with open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_file.txt', 'r', encoding='utf-8') as file,\
open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_new_file.txt', 'a+', encoding='utf-8') as new_file:
data_list = file.readlines()
# print(data_list)
whole_list = []
av_income = 0
for item in data_list:
local_data_list = item.split(', ')
income = 0
try:
income = int(local_data_list[2]) - int(local_data_list[3])
except ValueError:
print('Проверьте финансовые показатели организации!')
whole_list.append({'Название': f'{local_data_list[1]} {local_data_list[0]}', 'Прибыль': income})
av_income += income
av_income = av_income / len(data_list)
whole_list.append({'Средняя прибыль': av_income})
# print(whole_list)

for item in whole_list:
for key, value in item.items():
line = f'{key}: {value}'
# print(line)
new_file.write(f'{line}\n')
new_file.write('\n')
17 changes: 17 additions & 0 deletions lesson_5/hw08_5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Написать лямбда функцию на вход принимающую строку из латинских символов на выходе возврадает символ
# в нижнем регистре который чаще всего встречается в строке,
# учитывать что символ верхнего регистра и символ нижнего регистра равны.
# Наша задача определить именно букву которая чаще всего встречается в строке


from collections import Counter


often_letter_2 = lambda line: max(zip(
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

перемудрли, есть функция filter она вам могла бы помочь

(lambda local_line: {key: value for key, value in Counter(line.lower()).items()
if not key.isdigit() and not key.isspace()})(line).values(),
(lambda local_line: {key: value for key, value in Counter(line.lower()).items()
if not key.isdigit() and not key.isspace()})(line).keys()
))[1]

print(often_letter_2('Раз два три четыре пять'))