Загрузка данных
Задача 1
n = int(input("Введите количество слов N: "))
dictionary = {}
for _ in range(n):
line = input().strip()
# Разделяем по дефису с учетом возможного наличия пробелов
en, ru = line.split('-')
dictionary[en.strip()] = ru.strip()
target = input("Введите искомое слово: ").strip()
print(dictionary.get(target, "Не найдено"))
Задача 2
grades = list(map(int, input("Введите оценки через пробел: ").split()))
counts = {}
for grade in grades:
counts[grade] = counts.get(grade, 0) + 1
for grade in sorted(counts.keys()):
print(f"{grade}: {counts[grade]}")
Задача 3
line1 = input("Введите товары со склада 1: ").split()
line2 = input("Введите товары со склада 2: ").split()
inventory = {}
for pair in line1 + line2:
if ':' in pair:
item, qty = pair.split(':')
inventory[item] = inventory.get(item, 0) + int(qty)
for item, qty in inventory.items():
print(f"{item}: {qty}")
Задача 4
results = {}
with open('results.txt', 'r', encoding='utf-8') as f:
for line in f:
if line.strip():
surname, score = line.strip().split()
results[surname] = int(score)
best_student = max(results, key=results.get)
print(f"{best_student} {results[best_student]}")
Задача 5
pairs = input("Введите пары ключ=значение через пробел: ").split()
inverted = {}
for pair in pairs:
key, value = pair.split('=')
inverted[value] = key
for new_key in sorted(inverted.keys()):
print(f"{new_key}: {inverted[new_key]}")
Задача 6
text = input("Введите строку текста: ").lower()
freq = {}
for char in text:
if char.isalpha():
freq[char] = freq.get(char, 0) + 1
if freq:
# Сортировка по частоте (убывание), затем по алфавиту (возрастание)
best_char = min(freq.keys(), key=lambda c: (-freq[c], c))
print(f"Буква '{best_char}' встречается {freq[best_char]} раз(а)")
Задача 7
import re
text = input("Введите строку текста: ")
# Извлекаем слова, убирая знаки препинания
words = re.findall(r'\b\w+\b', text)
len_dict = {}
for word in words:
length = len(word)
if length not in len_dict:
len_dict[length] = []
if word not in len_dict[length]:
len_dict[length].append(word)
for length in sorted(len_dict.keys()):
print(f"{length}: {len_dict[length]}")
Задача 8
logs = {}
with open('logs.txt', 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if line:
parts = line.split(maxsplit=1)
user_id = parts[0]
event = parts[1]
# Последовательное перезаписывание сохраняет последнее по времени событие
logs[user_id] = event
for user_id, event in logs.items():
print(f"{user_id}: {event}")
Задача 9
words = input("Введите список слов через пробел: ").split()
anagrams = {}
for word in words:
key = tuple(sorted(word.lower()))
anagrams.setdefault(key, []).append(word)
# Вывод отсортированного множества/списка групп анаграмм
for key in sorted(anagrams.keys()):
print(f"{key}: {anagrams[key]}")
Задача 10
text = input("Введите строку текста: ")
# Первый проход: формирование частотного словаря
freq = {}
for char in text:
freq[char] = freq.get(char, 0) + 1
# Второй проход: поиск первого символа с частотой 1
found = False
for idx, char in enumerate(text):
if freq[char] == 1:
print(f"Символ: '{char}', Индекс: {idx}")
found = True
break
if not found:
print("Нет уникальных")
Задача 11*
arr = list(map(int, input("Введите числа массива через пробел: ").split()))
k = int(input("Введите число K: "))
prefix_counts = {0: 1}
current_sum = 0
count = 0
for num in arr:
current_sum += num
count += prefix_counts.get(current_sum - k, 0)
prefix_counts[current_sum] = prefix_counts.get(current_sum, 0) + 1
print(count)
Задача 12*
pairs_str = input("Введите пары чисел вида a-b через пробел: ").split()
unmatched = set()
for pair in pairs_str:
a, b = pair.split('-')
current = (a, b)
mirror = (b, a)
if mirror in unmatched:
unmatched.remove(mirror)
else:
unmatched.add(current)
result = [f"{a}-{b}" for a, b in unmatched]
print(result)
Задача 13*
n = int(input())
reversed_graph = {}
input_lines = [input().strip() for _ in range(n)]
# Инициализация словаря для всех вершин
for line in input_lines:
v = line.split('-')[0].strip()
if v not in reversed_graph:
reversed_graph[v] = []
# Разворот рёбер
for line in input_lines:
parts = line.split('-')
u = parts[0].strip()
neighbors = parts[1].split() if len(parts) > 1 and parts[1].strip() else []
for v in neighbors:
if v not in reversed_graph:
reversed_graph[v] = []
reversed_graph[v].append(u)
for v in sorted(reversed_graph.keys()):
print(f"{v}: {' '.join(sorted(reversed_graph[v]))}")
Задача 14*
tickets = input("Введите билеты Откуда-Куда через пробел: ").split()
routes = {}
departures = set()
arrivals = set()
for ticket in tickets:
src, dst = ticket.split('-')
routes[src] = dst
departures.add(src)
arrivals.add(dst)
# Старт — город, из которого есть выезд, но нет въезда
start_city = (departures - arrivals).pop()
path = [start_city]
current = start_city
while current in routes:
current = routes[current]
path.append(current)
print(" - ".join(path))