Скрипт для замера времени реакции. Баг заключается в том, что в случае если клавиша будет нажата прежде чем вылетит смайл, то всё равно посчитает, а значит результат будет неверным.
from random import random
from time import sleep
from random import randrange
import os
if os.name == 'nt':
    from time import clock as tf
else:
    from time import time as tf
last = 0
def random_sleep(z = 3, x = 15):
    """Ставит на паузу выполнение скрипта на произвольное время, по умолчанию 3 - 15 секунд."""
    sleep(randrange(z, x) * random())
def reaction():
    """Часть функции reaction_measurement()"""
    start = tf()
    while True:
        keypress = input(':)')
        if keypress == "":
            global last
            last = tf() - start
            break
        else:
            print("Не попадаешь по клавишам?\n")
def reaction_measurement():
    """Замер времени реакции, необходим для команды 'run'."""
    print("Нажмите 'Enter' как только увидите этот ==> :) смайл")
    random_sleep()
    reaction()
    print(last)
while True:
    cmd = input("Пожалуйста, введите команду. Список доступных команд: run, last, show, clear, avg, hist, quit, help:\n")
    if cmd == 'quit' or cmd == 'q' or cmd == 'exit':
        print('Bye')
        break
    elif cmd == 'help':
        print("""
run     - запуск режима измерения времени реакции;
last    - показать последний результат;
show    - показать последние запомненные результаты;
clear   - очистить память результатов;
avg     - вывести среднее значение от запомненных результатов;
hist    - вывести гистограмму распределения значений реакции;
quit    - выход из интерпретатора.
              """)
    elif cmd == 'run':
        reaction_measurement()
    elif cmd == 'last':
        print(last)
    elif cmd == 'show':
        print('Ещё не реализовано')
    elif cmd == 'clear':
        print('Ещё не реализовано')
    elif cmd == 'avg':
        print('Ещё не реализовано')
    elif cmd == 'hist':
        print('Ещё не реализовано')
    elif cmd == 'debug':
        while True:
            debugcmd = input('Введите функцию для проверки работоспособности, stop для выхода из режима отладки:\n')
            if debugcmd == 'random_sleep':
                print(random_sleep.__doc__)
                print('Sleep')
                random_sleep(20)
                print('Wake')
                break
            elif debugcmd == 'reaction_measurement':
                print(reaction_measurement.__doc__)
                reaction_measurement()
                print = (last)
                break
            elif debugcmd == 'stop':
                break
            else:
                print('Имя функции введено неверно или функция не подлежит отладке')
    else:
        print('Введёные данные неверны')

