프로젝트/개인 프로젝트

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

프리_ 2024. 1. 17. 20:00
반응형

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

 본격적으로 좌석을 예약하는 코드를 작성해 동작까지 진행해보자.

함수 s_r() 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
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")
cs

 함수 s_r()에서는 좌석의 행 번호와 열 번호를 입력받아 좌석의 예약 정보를 확인 후, 좌석을 예약한다. 이때, 해당 좌석이 기존에 예약되어 있으면 예약이 되어있음을 알려주고 예약을 진행하지 않는다. 또한, -1 입력 시 프로그램을 종료한다.

코드 설명

1 ~ 13: 함수 s_r() 선언

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

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

8, 12 ~ 13: 예약 유무 확인

9 ~ 11: 예약 진행

13: Error 확인 코드

함수 my_exit() 작성

1
2
3
4
5
import sys
 
def my_exit() :
    print("프로그램을 종료합니다", end = '')
    sys.exit(0)
cs

 함수 my_exit()은 프로그램 종료를 알려준 뒤, 프로그램을 종료한다. 이 동작을 종종 사용할 예정이기에 함수로 작성하였다.

코드 설명

1: 함수 exit()을 사용하기 위해 sys 불러오기

3 ~ 5: 함수 my_exit() 선언

4: 종료 문구 출력

5: 프로그램 종료

실행부 작성

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

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

코드 설명

1 ~ 7: while문 무한 루프

2 ~ 3: 시작 화면. 예약 유무 입력

4 ~ 7: 입력 값에 따른 프로그램 동작

7: Error 확인 코드

더보기

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

# 선언부
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")

# 리스트 초기화
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")
    sere = int(input("입력 위치: "))
    if (sere == -1) : my_exit()
    elif (sere == 0) :
        s_r()
    else : print("ERROR 잘못된 입력입니다.")

실행 및 결과

실행 및 결과
실행 시 출력되는 기본 화면 0 입력 3행 4열 예약 3행 4열 중복 예약
잘못된 입력 -1 입력

실행 및 결과 - window 화면

실행 및 결과
실행 시 출력되는 기본 화면 0 입력 3행 4열 예약
잘못된 입력 3행 4열 중복 예약

반응형