


Программирование, помощь с заданием по написанию кода на языке python
Привет, у меня есть задания и я написала для них коды, но ответы моей программы не сходятся с ответами в примере. Подскажите, пожалуйста, где я допустила ошибку и как ее пофиксить?
-----------------------------------------------------------------------------------------------------------------------------------
Задание 1. Дан список целых чисел. Этот список должен содержать последовательные числа от 1 до n. Но из-за ошибки одно число в списке повторяется и заменяет собой следующее в последовательности число. Напишите функцию, которая принимает список с ошибкой и выдает список, который будет содержать повторяющее число и то число, которое отсутствует в списке из-за ошибки. При решении использовать множество.
Например:
список с ошибкой: [1, 2, 3, 3, 5]. Вывод функции: [3, 4]
список с ошибкой: [1, 2, 2]. Вывод функции: [2, 3]
список с ошибкой: [1, 2, 3]. Вывод функции: []
Код 1.
def find_error(lst):
n = len(lst)
expected_set = set(range(1, n + 1))
given_set = set(lst)
repeated_number = None
for num in lst:
if num in given_set:
given_set.remove(num)
else:
repeated_number = num
break
missing_number = expected_set.difference(given_set).pop()
return [repeated_number, missing_number]
user_input = input("Введите список целых чисел через пробел: ")
input_list = list(map(int, user_input.split()))
result = find_error(input_list)
print(f"{result[0]}, {result[1]}")
------------------------------------------------------------------------------------------------------------------------------------
Задание 2. Напишите функцию, которая проверяет, что строка состоит из всех букв алфавита. Если это так, то посчитайте сколько там было лишних букв, которые использовались больше одного раза.
Например:
Строка: Съешь же ещё этих мягких французских булок да выпей чаю. Вывод функции: Да, 13
Строка: Привет мир. Вывод функции: Нет
Код 2.
def check_pangram(input_string):
alphabet = set("абвгдеёжзийклмнопрстуфхцчшщъыьэюя")
input_string = input_string.lower()
input_set = set(input_string)
if alphabet.issubset(input_set):
extra_letters = sum(1 for char in input_set if input_string.count(char) > 1)
return f"Да, {extra_letters}"
else:
return "Нет"
user_input = input("Введите предложение: ")
result = check_pangram(user_input)
print(result)
Тут такие трехэтажные обои на два десятка строк не нужны... Ну вот первое. Множество зачем-то требуют использовать... Совсем совесть потеряли...
def f(x):
n = []
for i in range(len(x) - 1):
if x[i] == x[i + 1]:
n += [x[i], x[i] + 1]
return n
print(f([1, 2, 3, 3, 5]))
print(f([1, 2, 2]))
print(f([1, 2, 3]))
[3, 4]
[2, 3]
[]
from collections import Counter
def check_pangram(input_string):
# Русский алфавит с буквой Ё
alphabet = set("абвгдеёжзийклмнопрстуфхцчшщъыьэюя")
s = input_string.lower()
# Оставляем только русские буквы
letters = [ch for ch in s if ch in alphabet]
freq = Counter(letters)
# Проверяем, есть ли все буквы
if alphabet.issubset(freq.keys()):
# Суммируем все "лишние" вхождения
extra = sum(freq[ch] - 1 for ch in alphabet)
return f"Да, {extra}"
else:
return "Нет"
# Примеры
print(check_pangram("Съешь же ещё этих мягких французских булок да выпей чаю")) # "Да, 13"
print(check_pangram("Привет мир")) # "Нет"