Скрипт для замера времени реакции. Баг заключается в том, что в случае если клавиша будет нажата прежде чем вылетит смайл, то всё равно посчитает, а значит результат будет неверным.
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('Введёные данные неверны')