# 6. Необходимо создать (не программно) текстовый файл, где каждая строка описывает учебный предмет и наличие лекционных, 
# практических и лабораторных занятий по этому предмету и их количество. Важно, чтобы для каждого предмета не обязательно 
# были все типы занятий. Сформировать словарь, содержащий название предмета и общее количество занятий по нему. 
# Вывести словарь на экран.
# Примеры строк файла:
# Информатика: 100(л) 50(пр) 20(лаб).
# Физика: 30(л) — 10(лаб)
# Физкультура: — 30(пр) —

# Пример словаря:
# {“Информатика”: 170, “Физика”: 40, “Физкультура”: 30}



# number_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
number_list = "0123456789"

try:
	with open("file_for_task6.txt", "r", encoding="utf-8") as f:
		my_dict = {}
		for line in f:
			line_list = line.split(":")
			sub_name = line_list[0]

			# Пока записываем пустое значение
			my_dict[sub_name] = ""

			# Создали списки ключей и значений, которые построчно будем заполнять и затем по предметно записывать в словарь.
			list_keys = []
			list_values = []

			# Проходим по строке в поисках нужных ключей и значений. line_list[1] - это правая часть строки без наименования предмета.
			for el in (line_list[1].replace("\n", "")).replace(".", "").split(" "):
				# Получаем части строк, типа: 100(л)
				
				counter = -1
				
				for char in el.replace(" ", ""):
					if char in number_list:
						counter += 1
					elif counter == -1:
						# Если значение каунтера не поменялось, значит строка не начиналась с числа, значит они отсутствуют.
						break
					else:
						list_keys.append(el[counter + 1:])
						list_values.append(el[0:counter + 1])

						counter = -1
			# Заполнили красивый словарь по каждому предмету.
			my_dict[sub_name] = dict(zip(list_keys, list_values))


		new_dict = {}
		# Теперь посчитаем попредметно общее количество занятий
		for key, value in my_dict.items():
			summ = 0
			for v in value.values():
				summ += int(v)
			new_dict[key] = summ

		print(f"Красивый полный словарь:\n{my_dict}")
		print(f"Требуемый в задании словарь:\n{new_dict}")
except IOError as e:
	print("Ошибка ввода/вывода")
except ValueError:
	print("Ошибка при конвертации значений.")