diff --git a/.idea/misc.xml b/.idea/misc.xml index 0749876..2849f27 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/.idea/pythoncourse.iml b/.idea/pythoncourse.iml index 8437fe6..f63fa7b 100644 --- a/.idea/pythoncourse.iml +++ b/.idea/pythoncourse.iml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/Lesson 5/Task_1.py b/Lesson 5/Task_1.py new file mode 100644 index 0000000..f789448 --- /dev/null +++ b/Lesson 5/Task_1.py @@ -0,0 +1,13 @@ +# 1. Создать программный файл в текстовом формате, записать в него построчно данные, +# вводимые пользователем. Об окончании ввода данных будет свидетельствовать пустая +# строка. + + +from itertools import count + +with open('task_1.txt', 'w') as task1_file: + for i in count(0): + user_string = input(f'Введите строку №{i + 1}: ') + if str == '': + break + print(user_string, file=task1_file) diff --git a/Lesson 5/Task_2.py b/Lesson 5/Task_2.py new file mode 100644 index 0000000..6fdec60 --- /dev/null +++ b/Lesson 5/Task_2.py @@ -0,0 +1,13 @@ +# 2. Создать текстовый файл (не программно), сохранить в нём несколько строк, выполнить +# подсчёт строк и слов в каждой строке. + +string_count = 0 +words_count = 0 + +with open('task_2.txt', 'r', encoding="utf-8") as task2_file: + for file_string in task2_file: + string_count += 1 + words_count = len(file_string.split(' ')) + print(f'В строке №{string_count} - {words_count} слов') + + diff --git a/Lesson 5/Task_3.py b/Lesson 5/Task_3.py new file mode 100644 index 0000000..5c20f73 --- /dev/null +++ b/Lesson 5/Task_3.py @@ -0,0 +1,23 @@ +# 3. Создать текстовый файл (не программно). Построчно записать фамилии сотрудников и +# величину их окладов (не менее 10 строк). Определить, кто из сотрудников имеет оклад менее +# 20 тысяч, вывести фамилии этих сотрудников. Выполнить подсчёт средней величины дохода +# сотрудников. +# Пример файла: +# Иванов 23543.12 +# Петров 13749.32 + +average_sum = 0 +staff_count = 0 + +with open('task_3.txt', 'r', encoding='utf-8') as task3_file: + print(f'Сотрудники с зарплатой менее 20000:') + for person_data in task3_file.read().split('\n'): + person_data_list = person_data.split(' ') + if int(person_data_list[1]) < 20000: + print(f'{person_data_list}') + staff_count += 1 + average_sum += int(person_data_list[1]) + print('Средняя зарплата сотрудников: ', average_sum/staff_count) + + + diff --git a/Lesson 5/Task_4.py b/Lesson 5/Task_4.py new file mode 100644 index 0000000..80960f8 --- /dev/null +++ b/Lesson 5/Task_4.py @@ -0,0 +1,21 @@ +# 4. Создать (не программно) текстовый файл со следующим содержимым: +# One — 1 +# Two — 2 +# Three — 3 +# Four — 4 +# Напишите программу, открывающую файл на чтение и считывающую построчно данные. При +# этом английские числительные должны заменяться на русские. Новый блок строк должен +# записываться в новый текстовый файл. + +digits = { + '1':'Один', + '2':'Два', + '3':'Три', + '4':'Четыре' +} + +with open('task_4.txt', 'r', encoding='utf-8') as task4_file: + with open('task_4_rus.txt', 'w', encoding='utf-8') as task4rus_file: + for file_string in task4_file.read().split('\n'): + print(f'{digits[file_string.split(" — ")[1]]} - {file_string.split(" — ")[1]}') + print(f'{digits[file_string.split(" — ")[1]]} - {file_string.split(" — ")[1]}', file=task4rus_file) diff --git a/Lesson 5/Task_5.py b/Lesson 5/Task_5.py new file mode 100644 index 0000000..30a3ea1 --- /dev/null +++ b/Lesson 5/Task_5.py @@ -0,0 +1,13 @@ +# 5. Создать (программно) текстовый файл, записать в него программно набор чисел, разделённых +# пробелами. Программа должна подсчитывать сумму чисел в файле и выводить её на экран. +from random import randint +from math import fsum + +digit_list = [str(randint(1, 100)) for el in range(10)] + +with open('task_5.txt', 'w', encoding='utf-8') as task5_file: + print(' '.join(digit_list), file=task5_file) + +with open('task_5.txt', 'r', encoding='utf-8') as task5_file: + digit_list = [int(el) for el in task5_file.read().split(' ')] + print(f'Сумма чисел: {digit_list} = {sum(digit_list)}') diff --git a/Lesson 5/Task_6.py b/Lesson 5/Task_6.py new file mode 100644 index 0000000..b20cf64 --- /dev/null +++ b/Lesson 5/Task_6.py @@ -0,0 +1,20 @@ +# 6. Сформировать (не программно) текстовый файл. В нём каждая строка должна описывать +# учебный предмет и наличие лекционных, практических и лабораторных занятий по предмету. +# Сюда должно входить и количество занятий. Необязательно, чтобы для каждого предмета +# были все типы занятий. +# Сформировать словарь, содержащий название предмета и общее количество занятий по +# нему. Вывести его на экран. +# Примеры строк файла: Информатика: 100(л) 50(пр) 20(лаб). +# Физика: 30(л) — 10(лаб) +# Физкультура: — 30(пр) — +# Пример словаря: {“Информатика”: 170, “Физика”: 40, “Физкультура”: 30} + +our_dict = {} +with open('task_6.txt', 'r', encoding='utf-8') as task6_file: + for file_string in task6_file.read().split('\n'): + our_list = file_string.split(': ') + print(our_list[1].split(' ')) + hours = sum([int(el.split('(')[0]) if el.split('(')[0].isdigit() else 0 for el in our_list[1].split(' ')]) + our_dict[our_list[0]] = hours + +print(our_dict) diff --git a/Lesson 5/Task_7.py b/Lesson 5/Task_7.py new file mode 100644 index 0000000..60b3c6c --- /dev/null +++ b/Lesson 5/Task_7.py @@ -0,0 +1,35 @@ +# 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 + +firm_list = [] +firm_dict = {} +firm_profit_list = [] + +with open('task_7.txt', 'r', encoding='utf-8') as task7_file: + strings_list = task7_file.read().split('\n') + for string in strings_list: + firm_data = string.split(' ') + firm_profit = int(firm_data[2]) - int(firm_data[3]) + firm_dict[firm_data[0]] = firm_profit + if firm_profit > 0: + firm_profit_list.append(firm_profit) + +firm_list.append(firm_dict) +firm_list.append({'average_profit': round(sum(firm_profit_list) / len(firm_profit_list), 2)}) + +print(firm_list) + +with open('task_7.json', 'w', encoding='utf-8') as task7_json_file: + json.dump(firm_list, task7_json_file) diff --git a/Lesson 5/Task_7.txt b/Lesson 5/Task_7.txt new file mode 100644 index 0000000..8b5bd7f --- /dev/null +++ b/Lesson 5/Task_7.txt @@ -0,0 +1,6 @@ +firm_1 ООО 10000 5000 +firm_2 О2О 100000 50000 +firm_3 ОО1 1000 50000 +firm_4 ОО3 8000 9000 +firm_5 2ОО 10000 1000 +firm_6 О3О 6000 7000 \ No newline at end of file diff --git a/Lesson 5/task_2.txt b/Lesson 5/task_2.txt new file mode 100644 index 0000000..a794ecf --- /dev/null +++ b/Lesson 5/task_2.txt @@ -0,0 +1,9 @@ +При этом выражением может быть как одна +так и несколько инструкций. Условием может быть +любое истинное +или ненулевое значение. +Выражение будет повторяться, +пока условие будет истинным. +Когда условие становится ложным +интерпретатор переводит выполнение программы +на строку, следующую за \ No newline at end of file diff --git a/Lesson 5/task_3.txt b/Lesson 5/task_3.txt new file mode 100644 index 0000000..09341d4 --- /dev/null +++ b/Lesson 5/task_3.txt @@ -0,0 +1,10 @@ +Иванов 10000 +Петров 20000 +Сидоров 15000 +Чижов 5000 +Синицын 7000 +Журавлев 25000 +Аистов 27000 +Воробьев 28000 +Снегирев 4000 +Уткин 9500 \ No newline at end of file diff --git a/Lesson 5/task_4.txt b/Lesson 5/task_4.txt new file mode 100644 index 0000000..aca55a2 --- /dev/null +++ b/Lesson 5/task_4.txt @@ -0,0 +1,4 @@ +One — 1 +Two — 2 +Three — 3 +Four — 4 \ No newline at end of file diff --git a/Lesson 5/task_4_rus.txt b/Lesson 5/task_4_rus.txt new file mode 100644 index 0000000..ab95344 --- /dev/null +++ b/Lesson 5/task_4_rus.txt @@ -0,0 +1,4 @@ +Один - 1 +Два - 2 +Три - 3 +Четыре - 4 diff --git a/Lesson 5/task_5.txt b/Lesson 5/task_5.txt new file mode 100644 index 0000000..edcb616 --- /dev/null +++ b/Lesson 5/task_5.txt @@ -0,0 +1 @@ +27 58 65 49 11 35 56 46 92 44 diff --git a/Lesson 5/task_6.txt b/Lesson 5/task_6.txt new file mode 100644 index 0000000..8f9782c --- /dev/null +++ b/Lesson 5/task_6.txt @@ -0,0 +1,6 @@ +Информатика: 100(л) 50(пр) 20(лаб) +Физика: 30(л) — 10(лаб) +Физкультура: — 30(пр) — +Химия: 100(л) 50(пр) 20(лаб) +Системотехника: 100(л) — 20(лаб) +Электротехника: 60(л) 25(пр) — \ No newline at end of file diff --git a/Lesson 5/task_7.json b/Lesson 5/task_7.json new file mode 100644 index 0000000..db7b713 --- /dev/null +++ b/Lesson 5/task_7.json @@ -0,0 +1 @@ +[{"firm_1": 5000, "firm_2": 50000, "firm_3": -49000, "firm_4": -1000, "firm_5": 9000, "firm_6": -1000}, {"average_profit": 21333.33}] \ No newline at end of file