From 063b2ca000a7f6277b7211d826f76d8bd8262295 Mon Sep 17 00:00:00 2001 From: alardis Date: Mon, 21 Oct 2019 23:56:48 +0300 Subject: [PATCH 01/10] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D1=8B=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20py=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=8F=D1=82=D0=BE=D0=B9=20=D0=B4=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D1=88=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw01_5.py | 4 ++++ lesson_5/hw02_5.py | 4 ++++ lesson_5/hw03_5.py | 5 +++++ lesson_5/hw04_5.py | 10 ++++++++++ lesson_5/hw05_5.py | 4 ++++ lesson_5/hw06_5.py | 6 ++++++ lesson_5/hw07_5.py | 9 +++++++++ 7 files changed, 42 insertions(+) create mode 100644 lesson_5/hw01_5.py create mode 100644 lesson_5/hw02_5.py create mode 100644 lesson_5/hw03_5.py create mode 100644 lesson_5/hw04_5.py create mode 100644 lesson_5/hw05_5.py create mode 100644 lesson_5/hw06_5.py create mode 100644 lesson_5/hw07_5.py diff --git a/lesson_5/hw01_5.py b/lesson_5/hw01_5.py new file mode 100644 index 0000000..8b63506 --- /dev/null +++ b/lesson_5/hw01_5.py @@ -0,0 +1,4 @@ +# Создать программно файл в текстовом формате, записать в него построчно данные, вводимые пользователем. +# Об окончании ввода данных свидетельствует пустая строка. + + diff --git a/lesson_5/hw02_5.py b/lesson_5/hw02_5.py new file mode 100644 index 0000000..91e684a --- /dev/null +++ b/lesson_5/hw02_5.py @@ -0,0 +1,4 @@ +# Создать текстовый файл (не программно), сохранить в нем несколько строк, выполнить подсчет количества строк, +# количества слов в каждой строке. + + diff --git a/lesson_5/hw03_5.py b/lesson_5/hw03_5.py new file mode 100644 index 0000000..397774d --- /dev/null +++ b/lesson_5/hw03_5.py @@ -0,0 +1,5 @@ +# Создать текстовый файл (не программно), построчно записать фамилии сотрудников и величину их окладов. +# Определить, кто из сотрудников имеет оклад менее 20 тыс., вывести фамилии этих сотрудников. +# Выполнить подсчет средней величины дохода сотрудников. + + diff --git a/lesson_5/hw04_5.py b/lesson_5/hw04_5.py new file mode 100644 index 0000000..90ef4b5 --- /dev/null +++ b/lesson_5/hw04_5.py @@ -0,0 +1,10 @@ +# Создать (не программно) текстовый файл со следующим содержимым: +# One — 1 +# Two — 2 +# Three — 3 +# Four — 4 +# Необходимо написать программу, открывающую файл на чтение и считывающую построчно данные. +# При этом английские числительные должны заменяться на русские. Новый блок строк должен записываться +# в новый текстовый файл. + + diff --git a/lesson_5/hw05_5.py b/lesson_5/hw05_5.py new file mode 100644 index 0000000..c8a679c --- /dev/null +++ b/lesson_5/hw05_5.py @@ -0,0 +1,4 @@ +# Создать (программно) текстовый файл, записать в него программно набор чисел, разделенных пробелами. +# Программа должна подсчитывать сумму чисел в файле и выводить ее на экран. + + diff --git a/lesson_5/hw06_5.py b/lesson_5/hw06_5.py new file mode 100644 index 0000000..8756c0f --- /dev/null +++ b/lesson_5/hw06_5.py @@ -0,0 +1,6 @@ +# Необходимо создать (не программно) текстовый файл, где каждая строка описывает учебный предмет и наличие лекционных, +# практических и лабораторных занятий по этому предмету и их количество. Важно, чтобы для каждого предмета не обязательно +# были все типы занятий. Сформировать словарь, содержащий название предмета и общее количество занятий по нему. +# Вывести словарь на экран. + + diff --git a/lesson_5/hw07_5.py b/lesson_5/hw07_5.py new file mode 100644 index 0000000..ff34869 --- /dev/null +++ b/lesson_5/hw07_5.py @@ -0,0 +1,9 @@ +# Создать (не программно) текстовый файл, в котором каждая строка должна содержать данные о фирме: +# название, форма собственности, выручка, издержки. Необходимо вычислить прибыль каждой компании и среднюю прибыль. +# Реализовать список, содержащий словарь (название фирмы и прибыль) и словарь с одним элементом (средняя прибыль). +# Добавить в первый словарь еще один элемент, содержащий результат вычисления отношения прибыли к убыткам. +# Итоговый список сохранить в файл. +# Подсказка: использовать менеджеры контекста. + + + From 7ae897a71ea541c01a2d90599b3b214b1a6bfa32 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 22 Oct 2019 10:54:51 +0300 Subject: [PATCH 02/10] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=D1=81=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw01_5.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lesson_5/hw01_5.py b/lesson_5/hw01_5.py index 8b63506..f252620 100644 --- a/lesson_5/hw01_5.py +++ b/lesson_5/hw01_5.py @@ -1,4 +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') From 717a632c8549c9a9cb54d7ead997a4359b2dda4e Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 22 Oct 2019 11:24:11 +0300 Subject: [PATCH 03/10] =?UTF-8?q?=D0=92=D1=82=D0=BE=D1=80=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=D1=81=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw02_5.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lesson_5/hw02_5.py b/lesson_5/hw02_5.py index 91e684a..6bb10bb 100644 --- a/lesson_5/hw02_5.py +++ b/lesson_5/hw02_5.py @@ -2,3 +2,13 @@ # количества слов в каждой строке. +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)}') From 7cc9d4b92ef0c304025c8654aa1094acf0932771 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 22 Oct 2019 11:51:35 +0300 Subject: [PATCH 04/10] =?UTF-8?q?=D0=A2=D1=80=D0=B5=D1=82=D1=8C=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=D1=81=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw03_5.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lesson_5/hw03_5.py b/lesson_5/hw03_5.py index 397774d..fb88662 100644 --- a/lesson_5/hw03_5.py +++ b/lesson_5/hw03_5.py @@ -3,3 +3,23 @@ # Выполнить подсчет средней величины дохода сотрудников. +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)}') From 378853b5a133cf4e68912934c2152ece77631ced Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Tue, 22 Oct 2019 18:29:12 +0300 Subject: [PATCH 05/10] =?UTF-8?q?=D0=A7=D0=B5=D1=82=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=82=D0=B0=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20?= =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw04_5.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lesson_5/hw04_5.py b/lesson_5/hw04_5.py index 90ef4b5..f6c50fa 100644 --- a/lesson_5/hw04_5.py +++ b/lesson_5/hw04_5.py @@ -8,3 +8,17 @@ # в новый текстовый файл. +import os + +translator = {'One': 'Один', 'Two': 'Два', 'Three': 'Три', 'Four': 'Четыре'} +try: + 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 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('Один из файлов отсутствует!') From b15423c9e67693c66094a32c8c35a960a2778133 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Wed, 23 Oct 2019 11:02:33 +0300 Subject: [PATCH 06/10] =?UTF-8?q?=D0=9F=D1=8F=D1=82=D0=B0=D1=8F=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=BD=D0=B0.=20=D0=A7=D0=B5=D1=82=D0=B2=D0=B5=D1=80=D1=82?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=B7=D0=BD=D0=B0=D1=87=D0=B8=D1=82=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw04_5.py | 2 +- lesson_5/hw05_5.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lesson_5/hw04_5.py b/lesson_5/hw04_5.py index f6c50fa..f77092b 100644 --- a/lesson_5/hw04_5.py +++ b/lesson_5/hw04_5.py @@ -12,7 +12,7 @@ translator = {'One': 'Один', 'Two': 'Два', 'Three': 'Три', 'Four': 'Четыре'} try: - with open(f'{os.path.abspath("Python_level_1/lesson_5")}/new_file.txt', 'r', encoding='utf-8') as file,\ + 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: diff --git a/lesson_5/hw05_5.py b/lesson_5/hw05_5.py index c8a679c..fb21457 100644 --- a/lesson_5/hw05_5.py +++ b/lesson_5/hw05_5.py @@ -2,3 +2,22 @@ # Программа должна подсчитывать сумму чисел в файле и выводить ее на экран. +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)}') From eb14a76546ec81a6aa484d36b7bee12bac72e217 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Wed, 23 Oct 2019 11:37:57 +0300 Subject: [PATCH 07/10] =?UTF-8?q?=D0=A8=D0=B5=D1=81=D1=82=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=D1=81=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw06_5.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/lesson_5/hw06_5.py b/lesson_5/hw06_5.py index 8756c0f..9b8279e 100644 --- a/lesson_5/hw06_5.py +++ b/lesson_5/hw06_5.py @@ -1,6 +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}") From 7d8ecacd10658dbb7e6248a21361417fde6af953 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Wed, 23 Oct 2019 17:39:40 +0300 Subject: [PATCH 08/10] =?UTF-8?q?=D0=A1=D0=B5=D0=B4=D1=8C=D0=BC=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=D1=81=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw07_5.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lesson_5/hw07_5.py b/lesson_5/hw07_5.py index ff34869..e6165a8 100644 --- a/lesson_5/hw07_5.py +++ b/lesson_5/hw07_5.py @@ -5,5 +5,33 @@ # Итоговый список сохранить в файл. # Подсказка: использовать менеджеры контекста. +# формат записи: +# Рога и Копыта, ООО, 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') \ No newline at end of file From 6d12a49174c2fd433e740ea3dcd8de60a113628b Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Wed, 23 Oct 2019 17:55:46 +0300 Subject: [PATCH 09/10] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B2=D0=BE=D1=81=D1=8C=D0=BC=D0=BE=D0=B9=20=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw08_5.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 lesson_5/hw08_5.py diff --git a/lesson_5/hw08_5.py b/lesson_5/hw08_5.py new file mode 100644 index 0000000..49ee523 --- /dev/null +++ b/lesson_5/hw08_5.py @@ -0,0 +1,6 @@ +# Написать лямбда функцию на вход принимающую строку из латинских символов на выходе возврадает символ +# в нижнем регистре который чаще всего встречается в строке, +# учитывать что символ верхнего регистра и символ нижнего регистра равны. +# Наша задача определить именно букву которая чаще всего встречается в строке + + From 8c865996ab06fa57f9f7b2c45ad718c93d051544 Mon Sep 17 00:00:00 2001 From: "VIZEX\\ashumov" Date: Thu, 24 Oct 2019 16:07:10 +0300 Subject: [PATCH 10/10] =?UTF-8?q?=D0=92=D0=BE=D1=81=D1=8C=D0=BC=D0=B0?= =?UTF-8?q?=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=D1=81=D0=B4?= =?UTF-8?q?=D0=B5=D0=BB=D0=B0=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson_5/hw08_5.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lesson_5/hw08_5.py b/lesson_5/hw08_5.py index 49ee523..19df771 100644 --- a/lesson_5/hw08_5.py +++ b/lesson_5/hw08_5.py @@ -4,3 +4,14 @@ # Наша задача определить именно букву которая чаще всего встречается в строке +from collections import Counter + + +often_letter_2 = lambda line: max(zip( + (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('Раз два три четыре пять'))