Created
March 9, 2017 17:43
-
-
Save hiddenist/60e3f175a5515be5ae97929096eacd54 to your computer and use it in GitHub Desktop.
Measure WPM on free-form text
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import time | |
def main(): | |
print "Starting test now: begin typing free-form text." | |
print "Press enter to send. Send an empty message to exit." | |
avg = 0 | |
tests = 0 | |
try: | |
avg = wpm_test() | |
tests = 1 | |
while True: | |
wpm = wpm_test(); | |
tests += 1 | |
avg = (avg + wpm) / 2 | |
except (KeyboardInterrupt, EmptyWPMTest): | |
pass | |
finally: | |
print "\nAverage of %d WPM over %d messages" % (avg, tests) | |
class EmptyWPMTest(Exception): | |
pass | |
def wpm_test(): | |
start = time.time() | |
text = raw_input('\n> ') | |
end = time.time() | |
if text == '': | |
raise EmptyWPMTest | |
elapsed = end - start | |
wpm = calculate_wpm(text, elapsed) | |
return wpm | |
def calculate_wpm(text, seconds): | |
length = len(text) | |
print "Took", int(round(seconds)), "seconds to type", length, "characters" | |
words = float(length) / 5 | |
minutes = seconds / 60 | |
wpm = words / minutes | |
print "WPM:", int(round(wpm)) | |
return wpm | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment