신림선(샛강 ~ 관악산역) 출발역 부터 도착역 까지 소요시간 계산 프로그램을 만들어 봤다.
역 간 운행시간은 2분으로 가정하여 만들어보았다.
station = {'샛강' : 1, '대방' : 2, '서울지방병무청' : 3, '보라매역' : 4,
'보라매공원' : 5, '보라매병원' : 6, '당곡' : 7, '신림' : 8, '서원' : 9,
'서울대벤쳐타운' : 10, '관악산' : 11}
station 이라는 딕셔너리를 만들었다.
각각의 역에 숫자를 부여하여 소요시간을 계산하려고 설계하였다
예를들어 샛강에서 보라매역까지 가게된다면 1번에서 4번역까지 총 3정거장을 가야만 한다.
따라서, 3정거장 * 2 라는 연산을 통해 총 6분이라는 소요시간이 걸리는것을 알 수 있다.
start = input("출발역을 입력하시오.: ")
finish = input("도착역을 입력하시오.: ")
timestat = 0
사용자로 하여금 출발역과 도착역을 입력받게 설계하였고
항상 모든 계산식 앞에는 리셋을 위하여 0을 붙여주도록 한다.
걸리는 시간을 timestat 이라고 설정하였다.
if start in station.keys():
timestat = station[start] - station[finish]
print("%d분 소요 예상됩니다." % (abs(timestat)*2))
station안에 있는 keys 값들이 start 안에 있으면 timestat 값을 계산하게 되는데
출발역에서 도착역의 번호 숫자를 마이너스 연산을 하도록 했다.
그 후 formating을 이용하여 총 걸리는 시간을 표현 했는데
혹여 각 역에 부여했던 번호들의 연산이 - 마이너스 값이 나올수 있는 에러가 있을 수 있어
연산값을 절대값 처리를 하기 위해 abs 함수를 사용하였다.
만약 알맞지 않은 값을 넣었을 때 오류메시지를 띄우는 것을 구현하고 싶어서
코드를 보완하였다.
station = {'샛강' : 1, '대방' : 2, '서울지방병무청' : 3, '보라매역' : 4, '보라매공원' : 5, '보라매병원' : 6, '당곡' : 7, '신림' : 8, '서원' : 9, '서울대벤쳐타운' : 10, '관악산' : 11}
start = ""
finish = ""
while not((start in station.keys()) and (finish in station.keys())): # 예외 처리
start = input("출발역을 입력하시오.: ")
finish = input("도착역을 입력하시오.: ")
if not((start in station.keys()) and (finish in station.keys())):
print("역 이름을 잘못 입력하셨습니다.")
else: # 출력
timestat = station[start] - station[finish]
print("%d분 소요 예상됩니다." % (abs(timestat)*2))
보완한 코드이다.
station 안에 있는 key 값들이 사용자가 입력한 start 안에 있어야하고 and 로 묶어 사용자가 입력한 도착지 finish 값안에도 key 값들이 알맞게 있어야만 (and) 출력하게끔 설계하였다.
만약 사용자들이 입력한 값들이 station 안 key 값으로 없으면 (start and finish 출발점 도착점 모두)
역 이름을 잘못 입력했다고 프린트 하게 만들었다.
else로 이 모든 조건들이 만족된다면 설계한 연산식에(abs(timestat)*2)) 맞추어 연산이 되고 (abs 절대값 처리도 들어감)
연산된 값은 formating 과정을 거쳐 프린트 되게 된다.!
또한 while 을 이용했기 때문에 만약 값이 잘못됐다면
반복해서 알맞은 값을 넣어 연산해서 값이 도출되기 전까지
계속해서 반복되어 출발역을 물어보게 된다.
'Python(with Anaconda)' 카테고리의 다른 글
[Python] 파이썬으로 택시 미터기 요금 계산 프로그램 만들어보기(주행 거리에 따른) (2) | 2022.10.26 |
---|---|
[Python] Lambda (람다함수), Module에 대하여 (0) | 2022.10.26 |
[Python] Function (0) | 2022.10.25 |
[Python] For Loop 반복문 (2) | 2022.10.24 |
[Python] If 조건문 (If 조건문을 기반으로 // 키오스크 로직 만들어보기) (0) | 2022.10.24 |
댓글