1. Главная
  2. Библиотека
  3. Программирование
  4. import sys re main(): #Определяем название входного фай...
Разбор задачи

import sys re main(): #Определяем название входного файла filename = 'resourse1.txt' Читаем содержимое файла : with open(input_filename, 'r', encoding='utf-8') as fin: text = fin.read() FileNotFoundError: print(f'Ошибка: файл {input_filename} не найден.')

  • Предмет: Программирование
  • Автор: Кэмп
  • #Основы алгоритмизации и программирования
  • #Языки программирования (C++, Java, Python и др.)
import sys re main(): #Определяем название входного файла filename = 'resourse1.txt' Читаем содержимое файла : with open(input_filename, 'r', encoding='utf-8') as fin: text = fin.read() FileNotFoundError: print(f'Ошибка: файл {input_filename} не найден.')

Условие:

import sys\nimport re
\ndef main(): #Определяем название входного файла
\ninput_filename = 'resourse_1.txt'

# Читаем содержимое файла\ntry:
with open(input_filename, 'r', encoding='utf-8') as fin:
text = fin.read()\nexcept FileNotFoundError:
print(f'Ошибка: файл {input_filename} не найден.')
sys.exit(1)

# Удаляем знаки препинания, заменяя их пробелами
# Регулярное выражение: \W+ соответствует любым символам, не являющимся буквенно-цифровым
# Но нам важно оставить символы языка, поэтому лучше использовать [^а-яА-Яa-zA-Z0-9]+\ntext = re.sub(r'[^а-яА-Яa-zA-Z0-9]+','',text)

#Приводим весь текст к нижнему регистру и разбиваем слова\nwords = text.lower().split()

#Считаем частоту встречаемости каждого слова с ипользованием словаря\nword_freq = {}\nfor word in words:
word_freq[word] = word_freq.get(word, 0) + 1

# Формируем список кортежей (частота, слово)
# Чтобы сортировка сначала шла по убыванию частоты, а затем по возрастанию слова,
# ключ сортировки: (-частота, слово)\nsorted_words = sorted(word_freq.items(), key=lambda item: (-item[1], item[0]))

# Формируем список строк для вывода: слово и его частота разделенные пробелом\noutput_lines = [f'{word} {freq}' for word, freq in sorted_words]

# Обработка аргументов командной строки. Если передан "-с", выводим результат в консоль\nif '-c' in sys.argv:
for line in output_lines:
print(line)\nelse:
output_filename = 'result.txt'
try:
with open(output_filename, 'w', encoding='utf-8') as fout:
fout.write('
'.join(output_lines))
except Exception as e:
print('Ошибка при записи в файл:', e)
sys.exit(1)\nif name =='main':main()

Решение:

  1. Анализ ошибки.
    В конце кода есть строка:
      if name =='main':main()
    Здесь ошибка заключается в том, что для проверки имени главного модуля используется неверное имя переменной. В Python для этой проверки нужно использовать переменную name (с двумя символами подчёркивания до и после) и сравнивать её со строкой "main".

  2. Объяснение.
    Конструкция if name == 'main': используется для того, чтобы проверить, запущен ли модуль как основная программа (а не импортирован как модуль). Если это так, выз...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какова основная цель использования конструкции `if __name__ == '__main__':` в Python?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет