IT/프로그래밍

[파이썬] 파이썬 심화 문자열 다루기 연습문제 [패스트 캠퍼스 챌린지 27일]

뜻밖의 행복 2022. 2. 19. 21:33
반응형

안녕하세요? 뜻밖의 행운입니다.

 

27일차 입니다. 

조금 있으면 한달이네요 ㅎ

주말에도 쉬지 않고 계속 이어가고 있습니다.

오늘은 거의 쉬어가기 코너 였습니다. 

 

연습문제 풀이 인데요 실제로 계속 반복해서 말씀드리지만

코딩 공부에 가장 도움이 되는 것은 결국 문제를 반복해서 풀어 보는 것입니다.

사실 코딩에만 적용되는 것이 아니라 다른 여러분야도 비슷하지 않을까 싶네요

 

 

 

그렇다면 지금 까지 또 배운것을 응용하여 문제를 풀어 보도록 하겠습니다.

 

문) 지도 어플리케이션에서 소요시간을 크롤링 하였더니 문자열 데이터 였다. 소요시간을 비교하기 위해 시간을 모두 분으로 바꾸려고 한다. 다음과 같이 시간이 입력되면 분으로 바꾸어 주는 프로그램을 작성해보자.

 

우선 풀이는 아래 입니다. 

늘 말씀 드리지만 다양하게 풀이 가능하고 

이것은 한가지 방법에 지나지 않습니다. 

 

# 시간을 분으로 고치는 프로그램

time = input("시간을 입력하세요>>>")
# 1. 분만 있는 경우 ex) 30분
# 2. 시간만 있는 경우 ex) 2시간
# 3. 시간과 분이 있는 경우 ex) 1시간 30분

if time.find('시간') == -1:
    # 분만 있는 경우
    result = int(time.split('분')[0])
else:
    if time.find('분') == -1:
        # 시간만 있는 경우
        result = int(time.split('시간')[0]) * 60
    else:
        # 시간과 분이 있는 경우
        sub = time.split('시간')
        result = int(sub[0]) * 60 + int(sub[1].split('분')[0])

print(result)

문제 있는 내용을 요구사항이라고 하지요 

개발을 할 때 바로 코딩부터 싹 하는게 아니라 

필요한 요건에 맞는 기능은 무엇이고 누락 없이 하기 위해서는 어떻게 해야 할지

글로 써보고 하는 것이 좋습니다. 

 

지금의 경우는에는 총 3가지 경우의 수가 있을 것입니다.

 

1. 분만 있는 경우 ex) 30분

2. 시간만 있는 경우 ex) 2시간

3. 시간과 분이 있는 경우 ex) 1시간 30분

 

그러면 조건문으로 3가지를 구현하면 되겠습니다. 

사실 사용자가 오타를 쳐서 잘 못 입력하는 것도 고려하여 예외처리도 만들어 주면 좋지만

우선은 사용자가 에러를 발생시키지 않는다고 가정하고 구현하겠습니다.

 

첫 번째 케이스

if time.find('시간') == -1:
    # 분만 있는 경우
    result = int(time.split('분')[0])

-1 은 find 매서드가 '시간' 을 찾지 못했을 경우 수행 하는 것입니다.

그렇다면 위에서는 분만 있는 경우 입니다. 

그러면 split 매서드를 이용해서 30분에서 분을 빼버리면 숫자 30만 남으니 

30만 가져오면 되어서 리스트 첫번째 값인 인덱스 0을 주고 숫자만 가져 오는 것입니다.

 

else:
    if time.find('분') == -1:
        # 시간만 있는 경우
        result = int(time.split('시간')[0]) * 60

시간만 있는 경우도 분만 있는 경우랑 똑같은데 find 매서드랑, split 매서드에서 이름만 바꿔 주면 됩니다.

물론 시간이 단위이니 분으로 수정하기 위해서 뒤에 * 60 만 해주면 끝

    else:
        # 시간과 분이 있는 경우
        sub = time.split('시간')
        result = int(sub[0]) * 60 + int(sub[1].split('분')[0])

마지막 시간도 있고 분도 있는 케이스 입니다. 

우선 시간 / 분을 나눠줘야 하니 

위에 시간 구하는 기능처럼 구현을 하고 뒤에 한번 더 '분' 으로 split을 해주면서 처리하는 모습입니다.

 

그러면 잘 동작하는지 마지막으로 체크 해볼까요?

 

 

네 아주 작동이 잘 되고 있습니다. 뿌듯하네요!

주말 잘 보내세요!

 

 

 

반응형