파이썬/개인 작업

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

thpop 2025. 5. 11. 16:16
반응형

파이썬을 이용한 프로그래밍에 흥미가 생겨, AI를 활용해 개인적으로 구현해보고 싶다고 생각이 드는 프로그램을 직접 만들어보고자 한다.

그 첫 프로그램은 과거에 학교에서 선생님들이 학생들 자리를 바꾸는데 사용하시던 프로그램이 생각나, 이를 파이썬을 이용해 구현해보고자 한다.

 

우선 첫 단계로, 프로그램의 작동 방식을 정해볼 것이다.

 

내가 생각한 프로그램의 작동 방식은 지정된 이름의 txt 파일에 학생들 이름을 기록해 놓으면, 프로그램이 그 txt 파일로부터 이름을 읽어들이고, 무작위로 자리를 배정하도록 할 것이다.

 

위에서 정한 프로그램의 작동 방식을 바탕으로, 프로그램의 기초 작동 로직을 만들어보자.

 

대략적으로 만들어 본 자리배치 프로그램의 기초 작동 로직은 아래와 같다.

import random

def load_students(filename="students.txt"):
    students = []
    try:
        with open(filename, 'r', encoding='utf-8') as file:
            for line in file:
                students.append(line.strip())
        if not students:
            print(f"경고: '{filename}' 파일이 비어있거나 학생 이름이 없습니다.")
        return students
    except FileNotFoundError:
        print(f"오류: '{filename}' 파일을 찾을 수 없습니다. 파일 이름과 경로를 확인해주세요.")
        return None

def assign_seats(students):
    if not students:
        return []
    
    random.shuffle(students) 
    return students

def print_seating_chart(seated_students):
    print("\n 무작위 자리 배치 결과 ")
    print("--------------------------")
    for i, student in enumerate(seated_students):
        print(f"자리 {i+1}: {student}")
    print("--------------------------")

 

첫 번째 함수는 파일을 읽어들이는 함수이다. 

def load_students(filename="students.txt"):
    students = []
    try:
        with open(filename, 'r', encoding='utf-8') as file:
            for line in file:
                students.append(line.strip())
        if not students:
            print(f"경고: '{filename}' 파일이 비어있거나 학생 이름이 없습니다.")
        return students
    except FileNotFoundError:
        print(f"오류: '{filename}' 파일을 찾을 수 없습니다. 파일 이름과 경로를 확인해주세요.")
        return None

 

파이썬 실행 프로그램과 같은 폴더에 students.txt라는 이름의 텍스트 파일에 한 줄에 한 명씩 이름을 기입하여 저장해놓으면, 이 함수가 한 줄씩 읽어들이고 리스트에 저장해주는 것이다. 

 

두 번째 함수는 위의 함수에서 저장된 리스트 내부 요소들의 순서를 무작위로 뒤섞는 함수이다.

def assign_seats(students):
    if not students:
        return []
    
    random.shuffle(students) 
    return students

 

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

def print_seating_chart(seated_students):
    print("\n 무작위 자리 배치 결과 ")
    print("--------------------------")
    for i, student in enumerate(seated_students):
        print(f"자리 {i+1}: {student}")
    print("--------------------------")

 

반응형