generate-question.py
1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python3
'''
Example of a question generator.
Arguments are read from stdin.
'''
from random import randint
import sys
a, b = (int(n) for n in sys.argv[1:])
x = randint(a, b)
y = randint(a, b)
r = x + y
print(f"""---
type: text
title: Geradores de perguntas
text: |
Existe a possibilidade da pergunta ser gerada por um programa externo. Este
programa deve escrever no `stdout` uma pergunta em formato `yaml` como nos
exemplos anteriores. Pode também receber argumentos para parametrizar a
geração da pergunta. Aqui está um exemplo de uma pergunta gerada por um
script python:
```python
#!/usr/bin/env python3
from random import randint
import sys
a, b = (int(n) for n in sys.argv[1:]) # argumentos da linha de comando
x = randint(a, b)
y = randint(a, b)
r = x + y
print(f'''---
type: text
title: Contas de somar
text: |
bla bla bla
correct: '{{r}}'
solution: |
A solução é {{r}}.''')
```
Este script deve ter permissões para poder ser executado no terminal. Dá
jeito usar o comando `gen-somar.py 1 100 | yamllint -` para validar o `yaml`
gerado.
Para indicar que uma pergunta é gerada externamente, esta é declarada com
```yaml
- type: generator
ref: gen-somar
script: gen-somar.py
# opcional
args: [1, 100]
```
Os argumentos `args` são opcionais e são passados para o programa como
argumentos da linha de comando.
---
Calcule o resultado de ${x} + {y}$.
Os números foram gerados aleatoriamente no intervalo de {a} a {b}.
correct: '{r}'
solution: |
A solução é {r}.""")