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
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/pythoncourse.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions Lesson 5/Task_1.py
Original file line number Diff line number Diff line change
@@ -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)
13 changes: 13 additions & 0 deletions Lesson 5/Task_2.py
Original file line number Diff line number Diff line change
@@ -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} слов')


23 changes: 23 additions & 0 deletions Lesson 5/Task_3.py
Original file line number Diff line number Diff line change
@@ -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)



21 changes: 21 additions & 0 deletions Lesson 5/Task_4.py
Original file line number Diff line number Diff line change
@@ -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)
13 changes: 13 additions & 0 deletions Lesson 5/Task_5.py
Original file line number Diff line number Diff line change
@@ -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)}')
20 changes: 20 additions & 0 deletions Lesson 5/Task_6.py
Original file line number Diff line number Diff line change
@@ -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)
35 changes: 35 additions & 0 deletions Lesson 5/Task_7.py
Original file line number Diff line number Diff line change
@@ -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)
6 changes: 6 additions & 0 deletions Lesson 5/Task_7.txt
Original file line number Diff line number Diff line change
@@ -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
9 changes: 9 additions & 0 deletions Lesson 5/task_2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
При этом выражением может быть как одна
так и несколько инструкций. Условием может быть
любое истинное
или ненулевое значение.
Выражение будет повторяться,
пока условие будет истинным.
Когда условие становится ложным
интерпретатор переводит выполнение программы
на строку, следующую за
10 changes: 10 additions & 0 deletions Lesson 5/task_3.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Иванов 10000
Петров 20000
Сидоров 15000
Чижов 5000
Синицын 7000
Журавлев 25000
Аистов 27000
Воробьев 28000
Снегирев 4000
Уткин 9500
4 changes: 4 additions & 0 deletions Lesson 5/task_4.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
One — 1
Two — 2
Three — 3
Four — 4
4 changes: 4 additions & 0 deletions Lesson 5/task_4_rus.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Один - 1
Два - 2
Три - 3
Четыре - 4
1 change: 1 addition & 0 deletions Lesson 5/task_5.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
27 58 65 49 11 35 56 46 92 44
6 changes: 6 additions & 0 deletions Lesson 5/task_6.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Информатика: 100(л) 50(пр) 20(лаб)
Физика: 30(л) — 10(лаб)
Физкультура: — 30(пр) —
Химия: 100(л) 50(пр) 20(лаб)
Системотехника: 100(л) — 20(лаб)
Электротехника: 60(л) 25(пр) —
1 change: 1 addition & 0 deletions Lesson 5/task_7.json
Original file line number Diff line number Diff line change
@@ -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}]