/
urfu_itis_tasks
/
debug_101-Patsyuk
Обзор
Документация
Войти
/
urfu_itis_tasks
/
debug_101-Patsyuk
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
scripts/generate_tasks.py
110 строк
4 KB
dayekb
update scripts/generate_tasks.py
28 окт 2025, 08:02
28 окт 2025, 08:02
39b3842
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Улучшенный скрипт генерации заданий НЕ перезаписывает уже созданные файлы """ import os import sys import pandas as pd def file_exists_and_has_content(filename): """Проверяет что файл существует и не пустой""" if not os.path.exists(filename): return False try: with open(filename, 'r', encoding='utf-8') as f: content = f.read() # Проверяем что это не шаблон, а реальное задание # (содержит секцию ИСПРАВЬТЕ КОД или КОД С ОШИБКАМИ) has_task = 'ИСПРАВЬТЕ КОД' in content or 'КОД С ОШИБКАМИ' in content # Проверяем что файл не пустой has_content = len(content.strip()) > 50 return has_task and has_content except: return False def create_task_file(task, level): """Создает файл задания с новым форматом""" filename = f"python_{level}.py" # ✅ ПРОВЕРКА: не перезаписываем существующие файлы if file_exists_and_has_content(filename): print(f"⏭️ {filename} уже существует, пропускаем") return False with open(filename, 'w', encoding='utf-8') as f: # Docstring f.write('"""\'n') f.write(f"Задание #{task['id']}: {task['description']}\n") f.write(f"Уровень: {task['level']}\n") f.write(f"Тема: {task['topic']}\n\n") f.write("ИНСТРУКЦИЯ:\n") f.write("0. Ознакомьтесь с содержанием репозитория и не делайте действия которые делать не надо\n") f.write("1. Прочитайте код с ошибками ниже\n") f.write("2. Найдите и исправьте ошибки\n") f.write("3. Вставьте исправленный код в ту же секцию\n") f.write("4. Оставьте в файле только код \n\n") f.write("5. Убедитесь что код работает\n\n") f.write("5. Проверьте что в CI/CD всё отрабатывает как надо и нет неадекватного поведения \n\n") f.write('"""\'n\n') # Заголовок кода f.write('# ' + '='*60 + '\n') f.write('# ИСПРАВЬТЕ КОД НИЖЕ\n') f.write('# ' + '='*60 + '\n\n') # КОД ДЛЯ ИСПРАВЛЕНИЯ f.write(task['buggy_code']) f.write('\n\n') # Комментарий f.write('# КОНЕЦ КОДА ДЛЯ ИСПРАВЛЕНИЯ\n\n') return True # Основная логика if __name__ == "__main__": if len(sys.argv) != 4: print("Usage: python generate_tasks.py <easy> <medium> <hard>") sys.exit(1) easy_num = int(sys.argv[1]) medium_num = int(sys.argv[2]) hard_num = int(sys.argv[3]) try: df = pd.read_csv('scripts/100_vibe_coding_tasks.csv') except FileNotFoundError: print("ERROR: 100_vibe_coding_tasks.csv not found") sys.exit(1) tasks = [ ('easy', easy_num), ('medium', medium_num), ('hard', hard_num) ] created_count = 0 skipped_count = 0 for level, task_id in tasks: task_row = df[df['id'] == task_id] if len(task_row) == 0: print(f"WARNING: Task #{task_id} not found") continue task = task_row.iloc[0] if create_task_file(task, level): print(f"✅ Created: python_{level}.py (Task #{task_id})") created_count += 1 else: skipped_count += 1 print(f"\nРезультат: создано {created_count}, пропущено {skipped_count}") print("\n💡 Совет: если нужно переобновить задания, удалите файлы вручную")