서비스 기획자의 성장기록

[Python 실습] 타자 프로그램 만들기: time 모듈 활용 본문

Python/Python 실습

[Python 실습] 타자 프로그램 만들기: time 모듈 활용

Jenny Noh 2023. 10. 25. 10:31

[문제]

애국가 1절을 각 소절마다 타이핑하여 정확도와 타자 속도를 출력한다.

 

 


[풀이]

import time

text = ['동해물과 백두산이 마르고 닳도록', '하느님이 보우하사 우리나라 만세', '무궁화 삼천리 화려강산', '대한사람 대한으로 길이 보전하세']

speed_sum = 0
accuracy_sum = 0

for i in range(len(text)):
    print(f'({i+1}/4)')
    print(text[i])
    
    start = time.time()
    input_text = input()
    end = time.time()

    correct = 0
    for k, item in enumerate(input_text):
        if text[i][k] == item:
            correct += 1

    speed_in_min = len(text[i])/(end-start)*60
    accuracy = correct / len(text[i]) * 100

    speed_sum += speed_in_min
    accuracy_sum += accuracy
        
    print(f'타자속도: {speed_in_min:.0f}타/분, 정확도: {accuracy:.2f}%')

# 전체 평균

print('='*10, '타자 결과', '='*10)
total_speed = speed_sum / 4
total_accuracy = accuracy_sum / 4
print(f'평균 타자속도: {total_speed:.0f}타/분')
print(f'평균 정확도: {total_accuracy:.2f}%')

 

 

[교수님 풀이]

import time

sentence = ['동해물과 백두산이 마르고 닳도록', 
            '하느님이 보우하사 우리나라 만세', 
            '무궁화 삼천리 화려강산', 
            '대한사람 대한으로 길이 보전하세']

sumOfTypeSpeed = 0
sumOfAccuracy = 0

for i, s in enumerate(sentence, start=1):     # enumerate() -> (index, value)을 반환
    print(f'{i}/{len(sentence)}')
    print(s)
    start = time.time()
    input_text = input()
    end = time.time()

    # 정확도: 상응하는 위치의 문자열을 비교
    hitCount = 0
    for original_char, input_char in zip(s, input_text):
        if original_char == input_char: hitCount += 1

    typeSpeed = (len(input_text)*60) / (end-start)    # 입력 글자수 * 60초 / 입력 소요시간 (초)
    accuracy = hitCount / len(s) * 100    # 원문과 일치한 글자 수 / 원문 글자 수 * 100
    print(f'타자속도: {typeSpeed:.0f}타/분, 정확도: {accuracy:.0f}%')
    print()
    sumOfTypeSpeed += typeSpeed
    sumOfAccuracy += accuracy

print('='*30)
print('            타자결과')
print('='*30)
print(f'평균 타자속도: {sumOfTypeSpeed/len(sentence):.0f}타/분, 평균 정확도: {sumOfAccuracy/len(sentence):.0f}')

 


[결과]

'Python > Python 실습' 카테고리의 다른 글

[Python 실습] 야구게임 만들기  (0) 2023.10.30
[Python 실습] 성적처리 프로그램  (0) 2023.10.25
[Python 실습] 윤년계산  (0) 2023.10.19
[Python 실습] 구구단 출력하기  (0) 2023.10.19