mirror of
https://github.com/denis-on/basicsPython.git
synced 2026-02-03 08:00:51 +03:00
dz les 5
This commit is contained in:
parent
2dc50c1f1f
commit
8188d0766d
30
less-05/task-01.py
Normal file
30
less-05/task-01.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Создать программный файл в текстовом формате,
|
||||||
|
# записать в него построчно данные, вводимые пользователем.
|
||||||
|
# Об окончании ввода данных будет свидетельствовать пустая строка.
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
n_str = 0
|
||||||
|
n_char = 0
|
||||||
|
file_name = 'task01.txt'
|
||||||
|
|
||||||
|
def get_string_user():
|
||||||
|
global n_str
|
||||||
|
global n_char
|
||||||
|
m_str = input(f"{n_str+1:03}->>>")
|
||||||
|
n_str += 1
|
||||||
|
# количество символов с учетом перевода строк под Win используеться CR LF
|
||||||
|
# а это 2 байта а вот под лин будет только что мы укажем "\n" - 1 байт (LF)
|
||||||
|
lb = 2 if os.name == "nt" else 1
|
||||||
|
n_char += len(m_str) + (lb if len(m_str) > 0 and n_str>1 else 0)
|
||||||
|
return m_str
|
||||||
|
|
||||||
|
print('введите строки для записи в файл, окончание ввода пустая строка')
|
||||||
|
with open(file_name, "w", encoding='utf-8') as f_obj:
|
||||||
|
user_str = get_string_user()
|
||||||
|
while user_str != "":
|
||||||
|
if n_str>1: f_obj.writelines("\n")
|
||||||
|
f_obj.writelines(user_str)
|
||||||
|
user_str = get_string_user()
|
||||||
|
f_size = os.path.getsize(file_name)
|
||||||
|
print('в фаил записано {} символов, {} строк, размер файла на диске {} байт'.format(n_char, n_str-1, f_size))
|
||||||
21
less-05/task-02.py
Normal file
21
less-05/task-02.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Создать текстовый файл (не программно), сохранить в нём несколько строк,
|
||||||
|
# выполнить подсчёт строк и слов в каждой строке.
|
||||||
|
|
||||||
|
|
||||||
|
file_name = 'examples5/text_7.txt'
|
||||||
|
lines = 0
|
||||||
|
words = 0
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(file_name, "r", encoding='utf-8') as file:
|
||||||
|
for line in file:
|
||||||
|
words_in_line = len(line.split())
|
||||||
|
lines += 1
|
||||||
|
words += words_in_line
|
||||||
|
print(f'строка {lines} содержит {words_in_line} слов')
|
||||||
|
except Exception:
|
||||||
|
print('Проблемы данными')
|
||||||
|
else:
|
||||||
|
print(f'Из файла прочитано {lines} строка и всего {words} слов')
|
||||||
|
|
||||||
|
|
||||||
21
less-05/task-03.py
Normal file
21
less-05/task-03.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Создать текстовый файл (не программно). Построчно записать фамилии сотрудников
|
||||||
|
# и величину их окладов (не менее 10 строк). Определить, кто из сотрудников имеет оклад
|
||||||
|
# менее 20 тысяч, вывести фамилии этих сотрудников. Выполнить подсчёт средней величины дохода сотрудников.
|
||||||
|
|
||||||
|
file_name = 'examples5/text_3.txt'
|
||||||
|
employ_dict = {}
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(file_name, "r", encoding='utf-8') as file:
|
||||||
|
for line in file:
|
||||||
|
line_sp = line.split()
|
||||||
|
employ_dict[line_sp[0]] = float(line_sp[1])
|
||||||
|
except Exception:
|
||||||
|
print('Проблемы данными')
|
||||||
|
else:
|
||||||
|
print(f'всего прочитано {len(employ_dict)} строк')
|
||||||
|
print('Сотрудники получающие менее 20 000')
|
||||||
|
for el in employ_dict.items():
|
||||||
|
if float(el[1]) < 20000.0:
|
||||||
|
print(' '*5, f'{el[0]}')
|
||||||
|
print(f'Средняя ЗП по полному списку: {sum(employ_dict.values())/len(employ_dict):.2f}')
|
||||||
22
less-05/task-04.py
Normal file
22
less-05/task-04.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Создать (не программно) текстовый файл со следующим содержимым:
|
||||||
|
#
|
||||||
|
#One — 1
|
||||||
|
#Two — 2
|
||||||
|
#Three — 3
|
||||||
|
#Four — 4
|
||||||
|
#
|
||||||
|
#Напишите программу, открывающую файл на чтение и считывающую построчно данные.
|
||||||
|
#При этом английские числительные должны заменяться на русские.
|
||||||
|
#Новый блок строк должен записываться в новый текстовый файл.
|
||||||
|
|
||||||
|
|
||||||
|
file_name = 'examples5/text_4.txt'
|
||||||
|
dig = {'One':'Один', 'Two':'Два', 'Three':'Три', 'Four':'Четыре', 'Five':'Пять',
|
||||||
|
'Six':'Шесть', 'Seven':'Семь', 'Eight':'Восемь', 'Nine':'Девять',}
|
||||||
|
|
||||||
|
with open(file_name, "r", encoding='utf-8') as fr, open("task04.txt", "w", encoding='utf-8') as fw:
|
||||||
|
for line in fr:
|
||||||
|
eng, sep, num = line.split()
|
||||||
|
# print(f'{dig[eng]} {sep} {num}')
|
||||||
|
print(f'{dig[eng]} {sep} {num}', file=fw)
|
||||||
|
|
||||||
12
less-05/task-05.py
Normal file
12
less-05/task-05.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Создать (программно) текстовый файл, записать в него программно набор чисел,
|
||||||
|
# разделённых пробелами. Программа должна подсчитывать сумму чисел в файле и выводить её на экран.
|
||||||
|
|
||||||
|
from random import randint
|
||||||
|
|
||||||
|
with open("task05.txt", "w+", encoding='utf-8') as f:
|
||||||
|
# запишем
|
||||||
|
f.write(f"{' '.join(map(str,[randint(1,99) for _ in range(100)]))}")
|
||||||
|
# вернемся в начало и прочтем файл
|
||||||
|
f.seek(0)
|
||||||
|
numbers = [int(i) for i in f.read().split()]
|
||||||
|
print(f'Сумма чисел из файла {sum(numbers)}')
|
||||||
24
less-05/task-06.py
Normal file
24
less-05/task-06.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Сформировать (не программно) текстовый файл. В нём каждая строка должна описывать учебный предмет
|
||||||
|
# и наличие лекционных, практических и лабораторных занятий по предмету. Сюда должно входить и количество
|
||||||
|
# занятий. Необязательно, чтобы для каждого предмета были все типы занятий.
|
||||||
|
# Сформировать словарь, содержащий название предмета и общее количество занятий по нему. Вывести его на экран.
|
||||||
|
#
|
||||||
|
# Примеры строк файла:
|
||||||
|
# Информатика: 100(л) 50(пр) 20(лаб).
|
||||||
|
# Физика: 30(л) — 10(лаб)
|
||||||
|
# Физкультура: — 30(пр) —
|
||||||
|
# Пример словаря: {“Информатика”: 170, “Физика”: 40, “Физкультура”: 30}
|
||||||
|
|
||||||
|
file_name = 'examples5/text_6.txt'
|
||||||
|
dig_les = {}
|
||||||
|
with open(file_name, "r", encoding='utf-8') as fr:
|
||||||
|
for line in fr:
|
||||||
|
num_les = 0
|
||||||
|
item, desc = line.split(':')
|
||||||
|
desc = desc.split()
|
||||||
|
for les in desc:
|
||||||
|
if '-' in les: continue
|
||||||
|
num, rest = les.split('(')
|
||||||
|
num_les += int(num)
|
||||||
|
dig_les[item] = num_les
|
||||||
|
print(dig_les)
|
||||||
36
less-05/task-07.py
Normal file
36
less-05/task-07.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# Создать вручную и заполнить несколькими строками текстовый файл, в котором каждая строка будет содержать
|
||||||
|
# данные о фирме: название, форма собственности, выручка, издержки.
|
||||||
|
#
|
||||||
|
# Пример строки файла: 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
|
||||||
|
|
||||||
|
|
||||||
|
file_name = "examples5/text_7.txt"
|
||||||
|
dig_firm = {}
|
||||||
|
num_firm = 0
|
||||||
|
aver_profit = 0
|
||||||
|
with open(file_name, "r", encoding='utf-8') as fr:
|
||||||
|
for line in fr:
|
||||||
|
name, type_own, rev, cost = line.split()
|
||||||
|
profit = int(rev)-int(cost)
|
||||||
|
if profit >= 0:
|
||||||
|
aver_profit += profit
|
||||||
|
num_firm += 1
|
||||||
|
dig_firm[name] = profit
|
||||||
|
aver_profit /= num_firm
|
||||||
|
|
||||||
|
with open('examples5/task07.json', "w", encoding='utf-8') as f:
|
||||||
|
json.dump([dig_firm, {"average_profit": aver_profit}], f, ensure_ascii=False)
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user