needmoreeasy EN 한국어
배우기

70 — 게임: 반응 속도 측정

★★★★★ (5/5)게임/시간
선수 지식
68 — 예외, 10 — 랜덤
결과물
time.time()으로 반응 속도를 재고 여러 라운드의 최고 기록을 알려 주는 게임

반응 테스트는 GO가 나타난 때와 엔터를 누른 때를 알아야 합니다. time.time()이 초 단위 시계를 읽으므로, 두 번 읽어 빼면 그 사이 시간을 잽니다.

단계

  1. time.time()은 정해진 순간부터의 초를 돌려줍니다. input() 앞뒤로 읽고 빼 보세요:
    import time
    시작 = time.time()
    input()
    걸린시간 = time.time() - 시작
    f"걸린 시간: {걸린시간:.2f}초" 말해줘
    
    실행해 보기 →

    파이프로 넣은 엔터는 즉시라서 실행 결과는 약 0.00입니다.

  2. 대기가 고정되면 클릭 타이밍을 맞출 수 있습니다. 랜덤 도우미가 대기를 예측할 수 없게 합니다:
    랜덤 사용 최신
    import time
    잠깐은 1부터 3까지 랜덤정수
    time.sleep(잠깐)
    "GO!" 말해줘
    
    실행해 보기 →

    time.sleep(초)는 멈추고, 1부터 3까지 랜덤정수가 대기를 고릅니다.

  3. 전체 프로그램은 세 라운드를 돌려 가장 빠른 것을 남깁니다. 파이프 테스트가 빨리 끝나도록 대기는 0.1초로 줄였습니다. 진짜 게임은 1부터 3까지 랜덤정수를 쓰세요:
    # 반응.nme — 반응 속도를 재는 게임입니다.
    # 실행: nme 실행 반응
    # time.time()으로 순간을 재고, 가장 좋은 기록을 남깁니다.
    
    import time
    
    라운드 = 3
    최고 = None
    합계 = 0
    
    "반응 속도 테스트 — GO가 보이면 바로 엔터를 누르세요." 말해줘
    f"{라운드}라운드를 하고, 가장 빠른 것이 최고입니다." 말해줘
    "일찍 누르면 실격이에요 — GO를 기다리세요." 말해줘
    input()
    for 번호 in range(1, 라운드 + 1):
        f"{번호}번째 라운드: 준비..." 말해줘
        time.sleep(0.1)
        "GO!" 말해줘
        시작 = time.time()
        input()
        걸린시간 = time.time() - 시작
        합계 = 합계 + 걸린시간
        f"  {걸린시간:.2f}초 걸렸어요." 말해줘
        if 최고 is None or 걸린시간 < 최고:
            최고 = 걸린시간
            "  새 최고 기록!" 말해줘
        else:
            f"  최고는 여전히 {최고:.2f}초입니다." 말해줘
    
    "최종 결과:" 말해줘
    f"  최고 기록:   {최고:.2f}초" 말해줘
    평균 = 합계 / 라운드
    f"  평균:        {평균:.2f}초" 말해줘
    
    실행해 보기 →
  4. 라운드마다 빈 줄 하나씩(준비 엔터 하나 + 라운드마다 하나) 실행합니다:
    printf '\n\n\n\n' | nme 실행 반응
    
    반응 속도 테스트 — GO가 보이면 바로 엔터를 누르세요.
    3라운드를 하고, 가장 빠른 것이 최고입니다.
    일찍 누르면 실격이에요 — GO를 기다리세요.
    1번째 라운드: 준비...
    GO!
      0.00초 걸렸어요.
      새 최고 기록!
    2번째 라운드: 준비...
    GO!
      0.00초 걸렸어요.
      새 최고 기록!
    3번째 라운드: 준비...
    GO!
      0.00초 걸렸어요.
      최고는 여전히 0.00초입니다.
    최종 결과:
      최고 기록:   0.00초
      평균:        0.00초
    
  5. 최고 = None은 "아직 라운드 없음"을 뜻하고, if 최고 is None or 걸린시간 < 최고가 가장 작은 시간을 남깁니다.

직접 해보기

라운드를 5로 올리거나 평균을 출력해 보세요. 대기 줄을 time.sleep(1부터 3까지 랜덤정수)로 바꾸고 진짜 키보드로 실행해 보세요.

배운 것

  • time.time()은 초 단위 현재 시계를 돌려주고, 두 번 읽어 빼면 사이 시간을 잽니다.
  • time.sleep(초)는 프로그램을 멈춥니다.
  • 1부터 3까지 랜덤정수 / random_number(1, 3)이 대기를 예측할 수 없게 합니다.
  • 최고 = None 다음에 if 최고 is None or 걸린시간 < 최고가 라운드 사이 가장 작은 시간을 남깁니다.

GitHub에서 이 문서 보기