파이썬/개인 작업

파이썬 프로그래밍 - 랜덤 자리 배치 프로그램 만들기 (2)

thpop 2025. 5. 11. 20:54
반응형

(앞선 내용 / https://thpop.tistory.com/119)

 

앞서 프로그램의 기본 작동 로직을 구성해보았고, 이번에는 해당 프로그램을 직접 실행해보며 내가 원하는 방식으로 작동하는지 확인하며 수정해나갈 것이다.

 

프로그램의 실행부분을 짜 보면 다음과 같다.

if __name__ == "__main__":
    student_list = load_students("students.txt")

if student_list:
        randomly_assigned_students = assign_seats(student_list)
        print_seating_chart(randomly_assigned_students)

 

윗부분은 "이 스크립트 파일이 프로그램의 시작점으로서 직접 실행될 때만 다음 코드들을 실행하라"는 의미이다. 만약 다른 모듈에서 이 파일을 불러와 사용할 때는 이 블록 안의 코드가 자동으로 실행되지 않도록 하는 역할을 수행하는 것이다.

 

아래는  무작위로 배치된 학생 명단을 받아서 i번째 자리에 어떤 학생이 배치되었는지를 쭉 출력하는 것이다.

 

Visual Studio Code를 이용해서 출력해본 결과는 아래와 같다.

 

다만 내가 희망하는 방식은, 사용자로부터 교실 내 좌석의 배치 형태를 입력받으면 그 형태에 맞춰 출력되는 방식이다.

 

해당 작동 방식대로 작동하도록 구성해보면 아래와 같다.

num_rows = int(input("행의 수를 입력하세요. : "))
num_cols = int(input("열의 수를 입력하세요. : "))
print("\n 교실 배치도 ")
seat_index = 0
for r in range(num_rows):
    row_display = []
    for c in range(num_cols):
        if seat_index < len(randomly_assigned_students):
            row_display.append(f"[{randomly_assigned_students[seat_index]}]")
            seat_index += 1
        else:
            row_display.append("[빈자리]")
    print(" ".join(row_display))

 

무작위로 섞인 리스트를 사용자로부터 입력받은 행의 수와 열의 수에 따른 좌석에 배치하고, 만약 좌석 수가 사람 수보다 많다면 남은 자리에는 [빈자리]를 출력하도록 하였다.

 

시험 출력 결과는 아래와 같다.

 

내가 원하는 방식대로 출력되긴 했지만, 가시성이 떨어지는 문제가 있음을 확인하였다.

이 부분은 GUI를 추가적으로 구현하여 내가 별도로 개선해야 하는 부분으로 생각되어, AI의 도움을 받아 추가적으로 개선해볼 것이다.

반응형