diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..9829b87 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Текущий файл", + "type": "python", + "request": "launch", + "program": "${file}", + "console": "integratedTerminal" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..62e1333 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "H:\\Python\\Python64_365\\python.exe" +} \ No newline at end of file diff --git a/digits_spelling.txt b/digits_spelling.txt new file mode 100644 index 0000000..aca55a2 --- /dev/null +++ b/digits_spelling.txt @@ -0,0 +1,4 @@ +One — 1 +Two — 2 +Three — 3 +Four — 4 \ No newline at end of file diff --git a/employers_data.txt b/employers_data.txt new file mode 100644 index 0000000..bd0fad8 --- /dev/null +++ b/employers_data.txt @@ -0,0 +1,6 @@ +Петров 50000 +Сидоров 40000 +Зверева 15000 +Пупкин 12000 +Калошина 10000 +Шизова 120000 \ No newline at end of file diff --git a/firm_data_in b/firm_data_in new file mode 100644 index 0000000..d0e73f2 --- /dev/null +++ b/firm_data_in @@ -0,0 +1,12 @@ +firm_1 ООО 10000 2000 +firm_2 ООО 20000 5000 +firm_3 АОЗТ 10000 5000 +firm_4 ООО 10000 5000 +firm_5 ОАО 30000 5000 +firm_6 ООО 10000 5000 +firm_7 ИП 4000 5000 +firm_8 ООО 10000 5000 +firm_9 ИП 3000 5000 +firm_10 ООО 10000 5000 +firm_11 АОЗТ 5000 15000 +firm_12 ООО 10000 5000 diff --git a/firm_data_out b/firm_data_out new file mode 100644 index 0000000..100263a --- /dev/null +++ b/firm_data_out @@ -0,0 +1 @@ +[{"firm_1": 8000, "firm_2": 15000, "firm_3": 5000, "firm_4": 5000, "firm_5": 25000, "firm_6": 5000, "firm_8": 5000, "firm_10": 5000, "firm_12": 5000}, {"average profit": 8666.67}] \ No newline at end of file diff --git a/generated b/generated new file mode 100644 index 0000000..7c965b3 --- /dev/null +++ b/generated @@ -0,0 +1 @@ +6 12 7 20 2 14 6 20 12 19 \ No newline at end of file diff --git a/learn_plan b/learn_plan new file mode 100644 index 0000000..c57171d --- /dev/null +++ b/learn_plan @@ -0,0 +1,4 @@ +Информатика: 100(л) 50(пр) 20(лаб) +Физика: 30(л) — 10(лаб) +Физкультура: — 30(пр) — +Python практика: - 120(пр) 20(лаб) \ No newline at end of file diff --git a/less_5_task1.py b/less_5_task1.py new file mode 100644 index 0000000..07e9c95 --- /dev/null +++ b/less_5_task1.py @@ -0,0 +1,23 @@ +''' +Создать программно файл в текстовом формате, записать в него построчно данные, вводимые пользователем. Об окончании ввода данных свидетельствует пустая строка.''' + +text = [] + +def usr_input(): + while True: + string = input('>') + if string == '': + break + text.append(f'{string}\n') + +usr_input() +print(text) + +f = open("my_file", 'w') +f.writelines(text) +f.close() + + +with open("my_file", 'r') as f_obj: + for line in f_obj: + print(line) diff --git a/less_5_task2.py b/less_5_task2.py new file mode 100644 index 0000000..34ddea0 --- /dev/null +++ b/less_5_task2.py @@ -0,0 +1,12 @@ +''' +2. Создать текстовый файл (не программно), сохранить в нем несколько строк, выполнить подсчет количества строк, количества слов в каждой строке.''' + +with open("task2_file", 'r') as f_obj: + input_list = [] + line_num = 0 + for line in f_obj: + line_num += 1 + print(f' in line {line_num}: {len(line.split())} words') + input_list.append(line.replace('\n', '')) + f_obj.close() + print(f'{len(input_list)} lines in file\n') diff --git a/less_5_task3.py b/less_5_task3.py new file mode 100644 index 0000000..6a6868d --- /dev/null +++ b/less_5_task3.py @@ -0,0 +1,19 @@ +''' +Создать текстовый файл (не программно), построчно записать фамилии сотрудников и величину их окладов. Определить, кто из сотрудников имеет оклад менее 20 тыс., вывести фамилии этих сотрудников. Выполнить подсчет средней величины дохода сотрудников. +''' +import os + +file_name = 'employers_data.txt' +file_path = os.path.join(os.path.dirname(__file__), file_name) + +with open(file_path, 'r',encoding='UTF=8') as file: + file_data = file.read().split() + +work_dict = {item : int(file_data[index + 1]) for index, item in enumerate(file_data) if index % 2 == 0} + +# Фамилии сотрудников с окладом менее 20000 +print([key for key, value in work_dict.items() if any(value < 20000 for element in work_dict.values())]) + +# Средняя ЗП +value_list = [value for key, value in work_dict.items()] +print(sum(value_list) // len(value_list)) diff --git a/less_5_task4.py b/less_5_task4.py new file mode 100644 index 0000000..8e1bdde --- /dev/null +++ b/less_5_task4.py @@ -0,0 +1,36 @@ +'''4. Создать (не программно) текстовый файл со следующим содержимым: +One — 1 +Two — 2 +Three — 3 +Four — 4 +Необходимо написать программу, открывающую файл на чтение и считывающую построчно данные. При этом английские числительные должны заменяться на русские. Новый блок строк должен записываться в новый текстовый файл.''' + +import os + +file_full_path = os.path.join(os.path.dirname(__file__), 'digits_spelling.txt') +mfile_full_path = os.path.join(os.path.dirname(__file__), 'modyfied_spelling.txt') + +replace_cheme = { + 'One' : 'Один', + 'Two' : 'Два', + 'Three' : 'Три', + 'Four' : 'Четыре' +} + +write_line = '' +with open(mfile_full_path, 'w', encoding='UTF-8') as file_out: + print('Clear out File') + file_out.close() + +with open(file_full_path, 'r', encoding='UTF-8') as file_in: + for line in file_in: + in_line = line.replace('\n', '').split(' — ') + for element in in_line: + try: + if element != any(replace_cheme.keys()): + write_line += replace_cheme[element] + ' — ' + except KeyError: + write_line += element + '\n' + with open(mfile_full_path, 'a', encoding='UTF-8') as file_out: + file_out.writelines(write_line) + write_line = '' diff --git a/less_5_task5.py b/less_5_task5.py new file mode 100644 index 0000000..c738bb4 --- /dev/null +++ b/less_5_task5.py @@ -0,0 +1,20 @@ +'''5. Создать (программно) текстовый файл, записать в него программно набор чисел, разделенных пробелами. Программа должна подсчитывать сумму чисел в файле и выводить ее на экран. +''' + +from random import randint +from os import path + +file_path = path.join(path.dirname(__file__), 'generated') + +number_list = [randint(1, 20) for i in range(randint(5,10))] +nums_string = ' '.join(str(el) for el in number_list) + +with open(file_path, 'w', encoding='UTF-8') as file: + file.writelines(nums_string) + +summ = 0 +with open(file_path, 'r') as file: + for line in file: + for x in line.split(' '): + summ += int(x) +print(summ) diff --git a/less_5_task6.py b/less_5_task6.py new file mode 100644 index 0000000..c85df17 --- /dev/null +++ b/less_5_task6.py @@ -0,0 +1,30 @@ +'''6. Необходимо создать (не программно) текстовый файл, где каждая строка описывает учебный предмет и наличие лекционных, практических и лабораторных занятий по этому предмету и их количество. Важно, чтобы для каждого предмета не обязательно были все типы занятий. Сформировать словарь, содержащий название предмета и общее количество занятий по нему. Вывести словарь на экран. +Примеры строк файла: + +Информатика: 100(л) 50(пр) 20(лаб). +Физика: 30(л) — 10(лаб) +Физкультура: — 30(пр) — +Пример словаря: + +{“Информатика”: 170, “Физика”: 40, “Физкультура”: 30}''' + +from random import randint +from os import path + +file_content = {} +with open(path.join(path.dirname(__file__), 'learn_plan'), 'r', encoding='UTF-8') as file: + for line in file: + line_content = line.split(':') + file_content[line_content[0]] = line_content[1].split() + +output_dict = {} +for key,value in file_content.items(): + output_dict[key] = 0 + for item in value: + try: + output_dict[key] += int(item.split('(')[0]) + except ValueError: + continue + +print(output_dict) + \ No newline at end of file diff --git a/less_5_task7.py b/less_5_task7.py new file mode 100644 index 0000000..03dd057 --- /dev/null +++ b/less_5_task7.py @@ -0,0 +1,40 @@ +'''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 os + +''' + +import os +import json + +file_data_in = os.path.join(os.path.dirname(__file__), 'firm_data_in') +file_data_out = os.path.join(os.path.dirname(__file__), 'firm_data_out') +firm_data_all = {} +firm_data_positive = {} +sum_profit = 0 + +with open(file_data_in, 'r', encoding='UTF-8') as file_in: + for line in file_in: + line_parse = line.replace('\n','').split() + profit = int(line_parse[2]) - int(line_parse[3]) + firm_data_all[line_parse[0]] = profit + if profit > 0: + firm_data_positive[line_parse[0]] = profit + sum_profit += profit + +a_profit ={ + 'average profit': round(sum_profit / len(firm_data_positive), 2) + } +#print(f" average profit: {a_profit.get('average profit')}") +with open(file_data_out, 'w', encoding='utf-8') as file_out: + out_data = [firm_data_positive, a_profit] + json.dump(out_data, file_out) diff --git a/lesson_5.txt b/lesson_5.txt new file mode 100644 index 0000000..e69de29 diff --git a/modyfied_spelling.txt b/modyfied_spelling.txt new file mode 100644 index 0000000..44109a1 --- /dev/null +++ b/modyfied_spelling.txt @@ -0,0 +1,4 @@ +Один — 1 +Два — 2 +Три — 3 +Четыре — 4 diff --git a/my_file b/my_file new file mode 100644 index 0000000..af0ce2d --- /dev/null +++ b/my_file @@ -0,0 +1,5 @@ +lkjdslkj +sdfkl; +sdfk +dsf +sdf diff --git a/task2_file b/task2_file new file mode 100644 index 0000000..c3d3b27 --- /dev/null +++ b/task2_file @@ -0,0 +1,7 @@ +ghghjgghj + +jhkjkjh ghjkjhkjh + +lkjlkjlklkj lkjlkjlkj lkjlkjj + +kljlkjlkjlk \ No newline at end of file