Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Нужна помощь по Python "Нужна помощь"

Бильбо никогда не забыть, как они скользили и скатывались в сумерках по крутой извилистой тропе вниз, в укромную долину Ривенделл. Делалось все теплее, сосновый дух подействовал на Бильбо усыпляюще, он поминутно клевал носом, чуть не падая с пони. Сосны сменились буками и дубами, потемки убаюкивали. Когда они выехали на прогалину совсем близко к потоку, стало темно, все краски померкли.

И тут среди деревьев неожиданно, как взрыв смеха, зазвучала песня. Конечно, то были эльфы.

Напишите программу, которая найдет дорогу к эльфам. Для этого нужно сосчитать строки, в которых есть эльф в любой форме или слово, которое будет введено во второй строке, после числа. Если таких строк хотя бы на 3 больше, чем тех, где их нет, то вывести ПРАВИЛЬНАЯ ДОРОГА, иначе НЕ ТУДА.

Формат ввода
Вводится число – сколько будет строк для проверки.

Затем вводится проверочная строка.

Затем все остальные строки.

Формат вывода
Сначала вывести ПРАВИЛЬНАЯ ДОРОГА или НЕ ТУДА.

Затем вывести отношение не подходящих строк ко всем введенным в процентах. Округлять не нужно.

Пример №1

Ввод
5
тепл
Хм-м, пахнет эльфами!
Когда они выехали на прогалину, стало темно и тепло.
Он немножко побаивался эльфов.
В то же время они ему нравились.
Торин и его друзья считают эльфов глупыми.

Вывод
ПРАВИЛЬНАЯ ДОРОГА
20.0

Пример №2

Ввод
4
ноч
День клонится к ночи.
Останься, кто хочет.
И песенке этой
Внимай до рассвета.

Вывод
НЕ ТУДА
75.0

По дате
По рейтингу
Аватар пользователя
Просветленный
123456789101112131415161718192021222324252627
 # Считываем количество строк для проверки 
n = int(input()) 
 
# Считываем проверочную строку 
check_string = input().strip().lower() 
 
# Считываем остальные строки 
strings = [input().strip().lower() for _ in range(n)] 
 
# Проверяем строки 
count_with_check = 0 
for s in strings: 
    if 'эльф' in s or check_string in s: 
        count_with_check += 1 
 
# Определяем количество строк, которые не содержат искомых слов 
count_without_check = n - count_with_check 
 
# Выводим правильный путь в зависимости от условия 
if count_with_check >= count_without_check + 3: 
    print("ПРАВИЛЬНАЯ ДОРОГА") 
else: 
    print("НЕ ТУДА") 
 
# Вычисляем и выводим процент неподходящих строк ко всем введенным 
percentage_not_suitable = (count_without_check / n) * 100 
print(f"{percentage_not_suitable:.1f}")  

Теперь проверим два примера, чтобы убедиться, что программа работает корректно:

Пример №1:

12345678910111213
 Ввод: 
5 
тепл 
Хм-м, пахнет эльфами! 
Когда они выехали на прогалину, стало темно и тепло. 
Он немножко побаивался эльфов. 
В то же время они ему нравились. 
Торин и его друзья считают эльфов глупыми. 
 
Вывод: 
ПРАВИЛЬНАЯ ДОРОГА 
20.0 
 

Пример №2:

123456789101112
 Ввод: 
4 
ноч 
День клонится к ночи. 
Останься, кто хочет. 
И песенке этой 
Внимай до рассвета. 
 
Вывод: 
НЕ ТУДА 
75.0 
 
Аватар пользователя
Просветленный
12345678910111213141516171819202122232425262728293031323334353637383940414243
 def main(): 
    import re 
 
    # Чтение количества строк 
    n = int(input().strip()) 
     
    # Чтение проверочного слова 
    check_word = input().strip().lower() 
     
    # Инициализация счетчиков 
    contains_check_word = 0 
    total_strings = 0 
 
    # Регулярное выражение для поиска слова "эльф" в любой форме 
    elf_pattern = re.compile(r'эльф', re.IGNORECASE) 
 
    # Чтение и обработка строк 
    for _ in range(n): 
        line = input().strip() 
        total_strings += 1 
         
        # Проверка наличия слова "эльф" или проверочного слова в строке 
        if elf_pattern.search(line) or check_word in line.lower(): 
            contains_check_word += 1 
     
    # Определение результата 
    not_contains_check_word = total_strings - contains_check_word 
    if contains_check_word >= not_contains_check_word + 3: 
        result = "ПРАВИЛЬНАЯ ДОРОГА" 
    else: 
        result = "НЕ ТУДА" 
     
    # Вычисление процента неподходящих строк 
    percentage_not_matching = (not_contains_check_word / total_strings) * 100 
 
    # Вывод результата 
    print(result) 
    print(percentage_not_matching) 
 
# Запуск основной функции 
if __name__ == "__main__": 
    main()