본문 바로가기

프로젝트/개인 프로젝트

[간단 코드] 좌석 예약(4)

반응형

심심해서 만들어 본 좌석 예약 코드

 좌석 예약 코드를 작성하고 난 뒤, 좌석의 예약을 취소하는 동작도 구현해보고 싶어졌다.

함수 s_d 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def s_d() : # 좌석 예약 취소
    row = int(input("좌석의 행 번호를 입력하세요(종료는 -1): "))
    if (row == -1) : my_exit()
    else :
        col = int(input("좌석의 열 번호를 입력하세요(종료는 -1): "))
        if (col == -1) : my_exit()
 
    if (T_Table[row-1][col-1== 1) :
        print("정말 취소하시겠습니까? (Yes, No)")
        print("취소하시려면 Yes를 입력해주세요. ")
        temp_1 = input("입력: ")
        if (temp_1 == "Yes") :
            T_Table[row-1][col-1= 0
            f_T_Table()
            print("%d행, %d열 좌석 예약이 정상적으로 취소되었습니다." % (row, col))
        elif (temp_1 == "No") :
            print("처음 화면으로 돌아갑니다.")
            f_T_Table()
        else : print("ERROR_유효하지_않은_입력")
    elif (T_Table[row-1][col-1== 0) : print("예약되지 않은 자리입니다.")
    else : print("ERROR")
cs

 함수 s_d()는 좌석 예약을 취소하는 함수이다. 앞서 만든 함수 s_r()과 마찬가지로 좌석의 행 번호와 열 번호를 입력받아 예약을 취소한다. 예약 유무를 확인하며, 예약이 되어 있지 않은 좌석의 경우, 예약이 되어있지 않음을 알려준다. 예약 취소 이전 한번 더 확인하여 취소 유무를 최종 결정한다. -1 입력 시 프로그램을 종료한다.

코드 설명

1 ~ 21: 함수 s_d() 선언

2 ~ 6: 행 번호 및 열 번호 입력

3, 6: -1 입력 시 프로그램 종료

8, 20 ~ 21: 예약 유무 확인

9 ~ 12, 16, 19: 예약 취소 최종 확인

13 ~ 15: 예약 취소 진행

17 ~ 18: 예약 취소 진행 취소

19, 21: Error 확인 코드

실행부 작성

1
2
3
4
5
6
7
8
9
while True :
    print("예약: 0  취소: 1  종료: -1")
    sere = int(input("입력 위치: "))
    if (sere == -1) : my_exit()
    elif (sere == 0) :
        s_r()
    elif (sere == 1) :
        s_d()
    else : print("ERROR 잘못된 입력입니다.")
cs

 좌석 예약 동작 코드를 바탕으로 작성하였다. 좌석 예약과 마찬가지로 예약 취소 역시 프로그램이 종료되기 전까지 지속적으로 정보를 받거나 종료된 이후에도 계속 정보를 저장할 수 있어야 한다. 여기서는 프로그램이 종료되기 전까지만 정보를 저장하되, 계속 정보를 받을 수 있도록 동작하는 코드를 작성했다. 무한 루프를 이용해 재입력이 가능하도록 하였으며, 시작 화면을 두어 진행 여부를 결정할 수 있도록 작성하였다.

코드 설명

1 ~ 6, 9: 좌석 예약 코드 동작 실행부(<대충 이전 발행글>)

7 ~ 8: 예약 취소 동작 실행


더보기

현재 단계에서 작성한 코드 결과물

# 선언부
import sys
T_Table = [i*0 for i in range (10)]
temp_s = f'{"":-<38}'

def my_exit() :
    print("프로그램을 종료합니다", end = '')
    sys.exit(0)

def f_T_Table() : # 좌석 출력
    print(temp_s)
    print("\t", end = '')
    for i in range (10) :
        print(i+1, end = '  ')
    print("\n", end = "%s\n" %temp_s)

    for r in range (10) :
        print("[%02d]" % (r+1), end = '\t')
        for c in range (10) :
            print(T_Table[r][c], end = '  ')
        print("")

def s_r() : # 좌석 예약
    row = int(input("좌석의 행 번호를 입력하세요(종료는 -1): "))
    if (row == -1) : my_exit()
    else :
        col = int(input("좌석의 열 번호를 입력하세요(종료는 -1): "))
        if (col == -1) : my_exit()

    if (T_Table[row-1][col-1] == 0) :
        T_Table[row-1][col-1] = 1
        f_T_Table()
        print("%d행, %d열 좌석이 예약되었습니다." % (row, col))
    elif (T_Table[row-1][col-1] == 1) : print("이미 예약된 자리입니다.")
    else : print("ERROR")

def s_d() : # 좌석 예약 취소
    row = int(input("좌석의 행 번호를 입력하세요(종료는 -1): "))
    if (row == -1) : my_exit()
    else :
        col = int(input("좌석의 열 번호를 입력하세요(종료는 -1): "))
        if (col == -1) : my_exit()

    if (T_Table[row-1][col-1] == 1) :
        print("정말 취소하시겠습니까? (Yes, No)")
        print("취소하시려면 Yes를 입력해주세요. ")
        temp_1 = input("입력: ")
        if (temp_1 == "Yes") :
            T_Table[row-1][col-1] = 0
            f_T_Table()
            print("%d행, %d열 좌석 예약이 정상적으로 취소되었습니다." % (row, col))
        elif (temp_1 == "No") :
            print("처음 화면으로 돌아갑니다.")
            f_T_Table()
        else : print("ERROR_유효하지_않은_입력")
    elif (T_Table[row-1][col-1] == 0) : print("예약되지 않은 자리입니다.")
    else : print("ERROR")

# 리스트 초기화
for i in range (10) :
    T_Table[i] = [i*0 for i in range (10)]

"""
# 저장 값 확인
print(T_Table)
"""

# 초기값 출력
f_T_Table()

while True :
    print("예약: 0  취소: 1  종료: -1")
    sere = int(input("입력 위치: "))
    if (sere == -1) : my_exit()
    elif (sere == 0) :
        s_r()
    elif (sere == 1) :
        s_d()
    else : print("ERROR 잘못된 입력입니다.")

더보기

실행 및 결과

실행 및 결과 - 1
실행 시 출력되는 기본화면 종료 3행 4열 예약 예약되지 않은 자리
예약 취소
(잘못된 예약 취소)
잘못된 입력 예약
실행 및 결과 - 2
중복 예약 예약 취소 예약 취소 재확인 예약 취소 재확인
(Yes 입력)
예약 취소 재확인
(No 입력)

실행 및 결과 - window

실행 및 결과 (window) - 1
실행 시 출력되는 기본 화면 예약
잘못된 입력 예약되지 않은 자리
예약 취소
(잘못된 예약 취소) 
실행 및 결과 (window) - 2
3행 7열 예약 중복 예약 예약 취소 예약 취소 재확인
(Yes 입력)
예약 취소 재확인
(No 입력) 

반응형