# файл_заданий
#
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