/
evdinga
/
Student_checker
Обзор
Документация
Войти
/
evdinga
/
Student_checker
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
checker.py
101 строка
4 KB
evdinga
create: config.json, README.txt, sample_work.txt, .gitignore, checker.py
25 май 2026, 06:04
Верифицирован
25 май 2026, 06:04
8677a38
Код
Авторство
О чём код?
import sys import json import argparse import re from pathlib import Path def count_words(text): return len(re.findall(r'\b\w+\b', text)) def count_chars(text): return len(text) def check_sections(text, required_sections): text_lower = text.lower() missing = [] for section in required_sections: if section.lower() not in text_lower: missing.append(section) return missing def check_phrases(text, required_phrases): text_lower = text.lower() missing = [] for phrase in required_phrases: if phrase.lower() not in text_lower: missing.append(phrase) return missing def main(): parser = argparse.ArgumentParser(description='Проверка студенческой работы на формальные требования') parser.add_argument('work_file', help='Путь к файлу с работой (txt)') parser.add_argument('config_file', help='Путь к файлу конфигурации (json)') parser.add_argument('--verbose', '-v', action='store_true', help='Подробный вывод') args = parser.parse_args() try: with open(args.work_file, 'r', encoding='utf-8') as f: work_text = f.read() except Exception as e: print(f"Ошибка чтения файла работы: {e}") sys.exit(1) try: with open(args.config_file, 'r', encoding='utf-8') as f: config = json.load(f) except Exception as e: print(f"Ошибка чтения файла конфигурации: {e}") sys.exit(1) min_words = config.get('min_words', 0) min_chars = config.get('min_chars', 0) required_sections = config.get('required_sections', []) required_phrases = config.get('required_phrases', []) word_count = count_words(work_text) char_count = count_chars(work_text) print("=== РЕЗУЛЬТАТ ПРОВЕРКИ РАБОТЫ ===") print(f"Файл: {args.work_file}") print() # Проверка количества слов if word_count >= min_words: print(f"✓ Количество слов: {word_count} (требуется >= {min_words})") else: print(f"✗ Количество слов: {word_count} (требуется >= {min_words}) - НЕ ВЫПОЛНЕНО") # Проверка количества символов if char_count >= min_chars: print(f"✓ Количество символов: {char_count} (требуется >= {min_chars})") else: print(f"✗ Количество символов: {char_count} (требуется >= {min_chars}) - НЕ ВЫПОЛНЕНО") # Проверка наличия обязательных разделов if required_sections: missing_sections = check_sections(work_text, required_sections) if not missing_sections: print(f"✓ Обязательные разделы: все присутствуют") else: print(f"✗ Отсутствуют разделы: {', '.join(missing_sections)}") # Проверка обязательных фраз if required_phrases: missing_phrases = check_phrases(work_text, required_phrases) if not missing_phrases: print(f"✓ Обязательные фразы: все присутствуют") else: print(f"✗ Отсутствуют фразы: {', '.join(missing_phrases)}") print() if (word_count >= min_words and char_count >= min_chars and (not required_sections or not check_sections(work_text, required_sections)) and (not required_phrases or not check_phrases(work_text, required_phrases))): print("ИТОГ: РАБОТА ПРОШЛА ФОРМАЛЬНУЮ ПРОВЕРКУ") return 0 else: print("ИТОГ: РАБОТА НЕ ПРОШЛА ФОРМАЛЬНУЮ ПРОВЕРКУ") return 1 if __name__ == '__main__': sys.exit(main())