You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中测量按键输入时长(秒级)并实现反应时间评级?

如何在Python中测量按键输入时长并实现反应速度测试

完全可以在Python中实现这个需求,我们可以借助time模块记录时间戳,计算用户按下Enter键的反应时长,再结合你给出的评级规则完成测试。以下是完善后的完整代码:

import random
import time

print("Welcome to Response Time Tester!")
print("You will be asked to press Enter after random amounts of time.")
print("How close can you get? ")
print()

# 获取有效测试轮次
while True:
    try:
        rounds = int(input("Enter desired number of rounds: "))
        if rounds <= 0:
            print("Number of rounds must be greater than zero. Try again.")
        else:
            break
    except ValueError:
        print("Invalid input. Enter a number.")

# 存储每轮的反应时长和评级
results = []

for i in range(rounds):
    # 每轮生成随机等待时长(2-8秒)
    target_wait = random.randint(2, 8)
    print(f"\nRound {i+1} of {rounds}")
    print(f"Press Enter after {target_wait} seconds...")
    
    # 记录开始时间
    start_time = time.time()
    # 等待用户按下Enter
    input()
    # 记录结束时间并计算反应时长
    end_time = time.time()
    reaction_time = end_time - start_time
    # 计算与目标时长的差值
    time_diff = abs(reaction_time - target_wait)
    
    # 根据差值确定评级
    if time_diff <= 0.25:
        rating = "Excellent!"
    elif time_diff <= 0.5:
        rating = "Great!"
    elif time_diff <= 1:
        rating = "Good!"
    elif time_diff <= 2:
        rating = "OK!"
    else:
        rating = "Miss"
    
    # 保存当前轮次结果
    results.append((reaction_time, time_diff, rating))
    # 输出当前轮次结果
    print(f"Your reaction time: {reaction_time:.2f}s")
    print(f"Time difference from target: {time_diff:.2f}s | Rating: {rating}")

# 汇总所有结果
print("\n--- Test Summary ---")
total_reaction = sum(r[0] for r in results)
avg_reaction = total_reaction / rounds
total_diff = sum(r[1] for r in results)
avg_diff = total_diff / rounds

print(f"Total rounds completed: {rounds}")
print(f"Average reaction time: {avg_reaction:.2f}s")
print(f"Average time difference: {avg_diff:.2f}s")

# 确定整体评级
if avg_diff <= 0.25:
    overall_rating = "Excellent!"
elif avg_diff <= 0.5:
    overall_rating = "Great!"
elif avg_diff <= 1:
    overall_rating = "Good!"
elif avg_diff <= 2:
    overall_rating = "OK!"
else:
    overall_rating = "Miss"

print(f"Overall performance rating: {overall_rating}")

关键实现说明

  • 时间测量:用time.time()获取当前时间戳,用户按下Enter后再次获取时间戳,两者差值就是按键输入的时长(反应时间)。
  • 随机时长:每轮循环内重新生成target_wait,确保每轮等待时长不同。
  • 结果存储:用列表results保存每轮的反应时间、与目标时长的差值和评级,方便后续汇总。
  • 评级逻辑:严格按照你给出的差值区间判定每轮评级,最后通过平均差值计算整体表现评级。

内容的提问来源于stack exchange,提问作者user21330504

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 23:27:04