Смекни!
smekni.com

Генерация дидактических материалов по математике (стр. 2 из 2)

# файл_заданий

#

import re

import random

import math

import sys

import string

n=int(sys.argv[1]) # считываем количество вариантов

templet=sys.argv[2] # считываем имя файла шаблона

output=sys.argv[3] # считываем имя файла вывода заданий

problems=open(output+'.txt','w') # открываем файл заданий для

# записи

answers=open(output+'_answ.txt','w')

pattern=r"\{(.+?)\}" # создаемрегулярноевыражение

expression=re.compile(pattern)

for i in range(1,n+1): # цикл по количеству вариантов

task=open(templet,'r') # открываемшаблон

problems.write('Вариант '+str(i)+'\n')

answers.write('Вариант '+str(i)+'\n')

for line in task:

if line.find('code ')>-1: # инициализацияпеременныхв

шаблоне

line=line.replace('code ','')

exec line

else:

k=expression.findall(line) # заменавыраженияего

значением

for element in k:

line=line.replace(element,str(eval(element)))

line=line.replace('{','') # косметическое удаление

# фигурныхскобок

line=line.replace('}','')

if line.find('отв ')>-1:

line=line.replace('отв ','')

answers.write(line)

elif line.find('test ')>-1: # обработкавариантов

тестовогозадания

line=line.replace('test ','')

line=line.replace('\n','')

test=line.split("`")

random.shuffle(test)

for i in range(0,len(test)):

if test[i].find('!')>-1:

test[i]=test[i].replace('!','')

problems.write(str(i+1)+') '+test[i]+' ')

answers.write(str(i+1)+'\n')

else:

problems.write(str(i+1)+') '+test[i]+' ')

problems.write('\n')

elif line.find('choice ')>-1: # обработкавариантов

# выбора

line=line.replace('choice ','')

line=line.replace('\n','')

variant=line.split("`")

num=2*random.randrange(round(len(variant)/2))

problems.write(variant[num]+'\n')

answers.write(variant[num+1]+'\n')

else:

problems.write(line)

problems.write('\n\n')

answers.write('\n\n')

task.close

problems.close

answers.close