Найти - Пользователи
Полная версия: Программа для тестов (beta)
Начало » Python проекты » Программа для тестов (beta)
1
Fenec
Напиисал на питоне+qt программу для проведения тестов.
Пока только базовый функционал проверки ответов.
Интересно послушать критику - что можно было реализовать более грамотно.

#!/usr/bin/env python2.5
# -*- coding: utf-8 -*-

# TODO
# 1 обработка стран с пробелом из дата (другая reg)
# 2 сделать счетчик ответов

# TODO: add questions mode switch

from PyQt4 import QtCore
from PyQt4 import QtGui
import random
import re
import codecs

class Tester(QtGui.QWidget):

# object initialization
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)

self.initUI()

def initUI(self):

self.answers_num = 0
self.correct_answ = 0
self.percent = 0

self.label = QtGui.QLabel(self)
self.label.move(60, 40)

self.msg = QtGui.QLabel(self)
self.msg.move(60, 200)

self.counter = QtGui.QLabel(self)
self.counter.move(160, 200)

button = QtGui.QPushButton('Answer', self)
button.move(240, 100)

self.edit = QtGui.QLineEdit(self)
self.edit.move(60, 100)

self.connect(button, QtCore.SIGNAL('clicked()'),
self.checkAnswer)

# очищаем текстовое поле
self.connect(button, QtCore.SIGNAL('clicked()'),
self.edit.clear)

self.setWindowTitle('Prog')
self.setGeometry(250, 200, 350, 250)

self.showQuestion()

# устанавливаем режим тестирования
def setMode(self):
self.mode = 'answer'

# выбираем вопрос
def showQuestion(self):

# выбираем вопрос
file = codecs.open('data.txt', 'r', 'utf-8').readlines()
lines_num = len(file)-1
line = int(random.randint(0, lines_num))

# читаем строку и записываем вопрос и ответ в переменные
pattern_q = re.compile(u'(\w+)', re.UNICODE)
pattern_a= re.compile(u'(\w+)$', re.UNICODE)
question = pattern_q.match(file[line]).group()
self.answer = pattern_a.search(file[line]).group()

self.label.setText(self.answer)
self.label.adjustSize()

# обработка ответа
def checkAnswer(self):

# self.correct_answ = 0

# проверяем правильность ответа
if (self.answer.lower() == unicode(self.edit.text()).lower()):
self.msg.setText(u'правильно')
self.msg.adjustSize()
# self.correct_answ += 1
else:
self.msg.setText(u'неправильно')
self.msg.adjustSize()

# количество ответов
#self.answers_num += 1

# считаем количество правильных ответов и сдвигаемся к следующему вопросу
# self.countAnswers()
self.showQuestion()

def main():

app = QtGui.QApplication([])
exm = Tester()
exm.show()
app.exec_()


if __name__ == '__main__':
main()
пример содержания data.txt:
Таиланд Бангкок
Италия, Рим
coni-lole
Програмка ворует куки!
igor.kaist
coni-lole
Програмка ворует куки!
с вами все в порядке? Вы исходник читали? :)
Fenec
вот так открываются неизведанные ранее возможности программы
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB