Python에서 카운트 다운 타이머 만들기

Rayven Esplanada 2021년7월11일
Python에서 카운트 다운 타이머 만들기

이 자습서에서는 Python에서 카운트 다운 타이머를 만드는 방법을 소개합니다.

이 코드는 카운트 다운 시간을 입력하고 입력이 입력 된 직후 카운트 다운을 시작합니다.

time모듈 및sleep()함수를 사용하여 Python에서 카운트 다운 타이머 만들기

time 모듈은 시간 관련 유틸리티 함수 및 변수를 포함하는 일반적인 Python 모듈입니다. 이 튜토리얼에서 사용되는 주요 함수는sleep()함수로,n초 동안 단일 스레드의 실행을 일시 중단하는 비동기 함수입니다.

프로그램이 단일 스레드 (이 자습서의 경우) 인 경우sleep()함수는 주어진 경과 시간에 도달 할 때까지 전체 프로그램 실행을 중지합니다. 이를 통해 검증 된 사용자 입력과 함께 Python에서 간단한 카운트 다운 타이머를 만들 수 있습니다.

가장 먼저 할 일은sleep()함수를 사용하기 위해time모듈을 가져 오는 것입니다.

import time

그런 다음 카운트 다운 타이머 역할을하는 함수를 선언합니다. 이 함수를countdown()이라고합시다. 이 함수는 타이머가 카운트 다운 할 초 수 (num_of_secs)라는 단일 매개 변수를받습니다.

num_of_secs변수는0에 도달 할 때까지 루프에서 계속 감소합니다 (이는False로 변환되고 추가 조건없이 루프를 종료 함).

루프 내에서 입력 변수num_of_secsMM:SS형식으로 포맷하고 감소 할 때마다 출력합니다. 이렇게하려면 내장 된 Python 함수 divmod()를 사용합니다.이 함수는 두 개의 숫자를 받아 각각 제품과 나머지 두 숫자를 반환합니다. 그런 다음 내장 문자열 함수format()을 사용하여divmod()의 튜플 결과를MM:SS형식으로 포맷합니다.

def countdown(num_of_secs):
    while num_of_secs:
        m, s = divmod(num_of_secs, 60)
        min_sec_format = "{:02d}:{:02d}".format(m, s)

{:02d}는 인수를 2 자리 정수로 형식화합니다 ( ‘02d’기호로 인해). 정수가 2 자리 미만이면 앞에 ‘0’이 추가됩니다.

다음으로 루프가 반복 될 때마다time.sleep(1)을 호출합니다. 이는 각 반복이 1 초 동안 지연되고 경과 후 계속됨을 의미합니다.

sleep()함수를 호출하기 전에 입력 변수num_of_secs의 현재 값의MM:SS형식과 유사한 형식화 된 문자열을 인쇄하십시오.

또한print()함수 내에end속성과/r값이있는 다른 인수를 추가합니다. 이는 실제 타이머의 동작을 모방하는 새 줄입니다. 이 인수는 루프가 실행될 때마다 이전print()출력을 덮어 쓰고, 캐리지 리턴이/r기호로 표시되기 전에 모든 것을 덮어 씁니다.

def countdown(num_of_secs):
    while num_of_secs:
        m, s = divmod(num_of_secs, 60)
        min_sec_format = "{:02d}:{:02d}".format(m, s)
        print(min_sec_format, end="/r")
        time.sleep(1)
        num_of_secs -= 1

    print("Countdown finished.")

그 후, 모든 이전 행이 실행 된 후 입력 변수min_sec_format을 1만큼 감소시킵니다.

마지막으로, 타이머 실행이 완료되었음을 나타내는 루프 외부에 결론을 출력합니다. countdown()메서드를 마치고 카운트 다운 타이머로 작동합니다.

다음으로 할 일은 사용자가 카운트 다운을 트리거 할 시간 (초)을 입력 할 수있는 방법을 제공하는 것입니다. 이를 위해 내장input()함수를 사용하여 사용자 입력을받을 수 있습니다.

입력 값을 변수로 잡아서 카운트 다운 함수에 대한 인수로 사용합니다. 유효성 검사를 위해 입력 변수를int로 캐스팅해야합니다.

inp = input("Input number of seconds to countdown: ")
countdown(int(inp))

전체 코드는 다음과 같아야합니다.

import time


def countdown(num_of_secs):
    while num_of_secs:
        m, s = divmod(num_of_secs, 60)
        min_sec_format = "{:02d}:{:02d}".format(m, s)
        print(min_sec_format, end="/r")
        time.sleep(1)
        num_of_secs -= 1

    print("Countdown finished.")


inp = input("Input number of seconds to countdown: ")
countdown(inp)

출력:

Countdown finished.

최종 출력은Countdown Finished를 표시하지만 타이머 작동 방식을 모방하고00:00에 도달 할 때까지 각print()행을 지 웁니다.

따라서5초를 입력하면 스택 추적은 다음과 같습니다.

00:05
00:04
00:03
00:02
00:01
Countdown finished.

거기에 있습니다. 이제 내장 함수와time모듈의sleep()함수를 사용하여 Python에서 간단한 카운트 다운 타이머를 성공적으로 만들었습니다.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

관련 문장 - Python Timer