Hoy estando en sugus, Virako ha preguntado por algo para hacer test en linux, para el stand de mañana de la asociación, y ha encontrado algo para hacerlo. Pero entonces a mí se me ha ocurrido implementar un script sencillo que haría más o menos la misma función.
La idea es simple, parsear un fichero con las preguntas y las respuestas, y mostrar con zenity una lista para seleccionar. Por supuesto para hacerlo más divertido, el orden de las respuestas es aleatorio.
El fichero a parsear sería de la forma:
El resultado de multiplicar 25*25 # 2500 # @625 # 825
¿Cuál es la mejor tira cómica de todas? # @la de linuxhispano # la tira ecol # bit & byte
Donde por cada linea se introducirían la pregunta y el conjunto de respuestas, separando cada una por una #. La pregunta siempre será la primera cadena, las respuestas se ordenarán de manera aleatoría. La respuesta correcta está marcada por una arroba al principio, entre # pueden existir tantos espacios como se quieran, ya que hago un strip de la cadena.
Aquí está el código:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os, sys
import random
from datetime import datetime
acertadas = 0
comando = 'zenity --text "¿Cual es tu nombre?" --entry'
entrada, salida = os.popen2(comando)
nombre = salida.read()
nombre = nombre.strip()
n = 0
for line in open(sys.argv[1]):
n += 1
opts = line.split('#');
pregunta = opts[0]
opts = opts[1:]
opts = map(str.strip ,opts)
columnas = []
correcta = ''
while len(opts) > 0:
opt = random.choice(opts)
opts.remove(opt)
if opt[0] == '@':
correcta = opt[1:]
opt = opt[1:]
opt = 'FALSE "' + opt + '"'
columnas.append(opt)
comando = 'zenity --text "' + pregunta + '" --list --radiolist --width=500 --height=500 --column X --column "Respuestas" ' + ' '.join(columnas)
entrada, salida = os.popen2(comando)
respuesta = salida.read()
if respuesta.strip() == correcta:
acertadas += 1
comando = 'zenity --scale --value=%(acertadas)d --max-value=%(n)d --print-partial --text "tu puntación %(nombre)s %(acertadas)d/%(n)d"' % dict(acertadas=acertadas, n=n, nombre=nombre)
entrada, salida = os.popen2(comando)
salida.read()
print "%s | %s | %d" % (datetime.now().ctime(), nombre, acertadas)
Se ejecutaría el programa de la siguiente forma:
python test.py fichero_de_test1 >> estadisticas_de_test1
Al principio pedirá un nombre para las estadísticas, y al final mostrará una barra, indicando la puntuación que has sacado.
me gustaria consegir a un chico es guapo se llama dani y lo quiero mucho un monton pero una niña me lo quiere quitar y no me gustaria nada de nada te quiero dani eres el mejor