본문 바로가기
프로그램

[파이썬] 문제 : 엘리베이터 층 이동 만들기

by 오디세이99 2022. 11. 20.
728x90
반응형

문제

1. 건물 엘리베이터의 운행 화면(Display) 프로그램을 개발하고자 한 다. 
이 프로그램은 건물의 지상(1,2,3,…) 및 지하(-1,-2,-3,…) 층수에 상관없이 모든 건물에 적용되어 사용될 수 있으며, 
단 모든 건물에 로비층(0층)이 존재한다고 가정한다.
2. 사용자가 가고싶은 층(targetFloor)을 입력하면, 
현재 층 (currentFloor)보다 높은 경우 goUpfloor함수를 호출하고, 
낮은 경우 goDownfloor함수를 호출하며, 
현재 층과 같은 층일 경우 다 른 층을 입력하도록 요구한다. 
(다음 페이지에 주어진 코드를 이용할 것)
3. 엘리베이터가 이동하면서 매 층마다 몇 층인지를 화면에 연속적으 로 표시하고, 
가고자하는 층에 다다른 경우 도착하였음을 알려준다.

 

def goDownfloor(current, target):
    for floor in range(current, target, -1):     # current에서 target으로 내겨감. step을 -1로 함
        current -= 1                             # current에서 1층씩 뺌
        if floor != target+1:                    # target 층이 아니면 현재층 출력
            print(f"{current}층")
        else:
            print(f"{target}층에 도착했습니다.")  # target층이면 도착 출력
    return current                               # 도착층을 리턴함

def goUpfloor(current, target):
    for floor in range(current, target):         # current에서 target으로 올라감.
        current += 1                             # current에서 1층씩 더함
        if floor != target-1:                    # target층이 아니면 현재층 출력
            print(f"{current}층")
        else:
            print(f"{target}층에 도착했습니다.")  # target층이면 도착 출력
    return current                               # 도착층을 리턴함

currentFloor = 1 
while(True): 
    targetFloor = int(input('가고자하는 층을 입력하세요(운행 정지는 -100을 입력): ')) 
    if targetFloor == -100: 
        break 
    else:
        if targetFloor > currentFloor:                            # targt층이 크면 올라감
            currentFloor = goUpfloor(currentFloor, targetFloor)
        elif targetFloor < currentFloor:                          # target층이 작으면 내려감
            currentFloor = goDownfloor(currentFloor, targetFloor)
        elif targetFloor == currentFloor:
            print('다른 층을 다시 입력하세요.')

결과

가고자하는 층을 입력하세요(운행 정지는 -100을 입력): 5
2층
3층
4층
5층에 도착했습니다.
가고자하는 층을 입력하세요(운행 정지는 -100을 입력): 3
4층
3층에 도착했습니다.
가고자하는 층을 입력하세요(운행 정지는 -100을 입력): 7
4층
5층
6층
7층에 도착했습니다.
가고자하는 층을 입력하세요(운행 정지는 -100을 입력): 2
6층
5층
4층
3층
2층에 도착했습니다.
가고자하는 층을 입력하세요(운행 정지는 -100을 입력): 2
다른 층을 다시 입력하세요.
728x90
반응형

댓글