AI딥러닝/Python

Python 엑셀로 저장하기

Ystory96 2026. 1. 20. 19:14

# 문제 : 이름, 국어점수, 영어점수, 수하가점수를 입력받아서 총점, 평균, 학점을 반환받는 코드를 만들어보자!

 

#해답

import os  # 폴더 생성 등을 위한 모듈
# --- 1. 함수 정의 (계산 로직) --- 

def calc_total(kor, eng, math):
    """국영수 점수를 받아 총점을 반환하는 함수"""
    return kor + eng + math

def calc_avg(total):
    """총점을 받아 평균을 반환하는 함수"""
    return total / 3

def calc_grade(avg):
    """평균을 받아 학점(A~F)을 반환하는 함수"""
    if avg >= 90:
        return "A"
    elif avg >= 80:
        return "B"
    elif avg >= 70:
        return "C"
    elif avg >= 60:
        return "D"
    else:
        return "F"

# --- 2. 메인 프로그램 시작 ---
# 저장할 경로와 파일명 설정
# r""을 붙이면 윈도우 경로의 역슬래시(\)를 안전하게 인식합니다.
save_path = r"C:\sundo\AIpython\day2\example"
file_name = "example.csv" # 엑셀에서 열기 위해 csv 확장자 사용
full_path = os.path.join(save_path, file_name)

# 만약 경로에 해당하는 폴더가 없으면 자동으로 생성 (에러 방지)
if not os.path.exists(save_path):
    os.makedirs(save_path)

print("=== 성적 입력 프로그램 ===")
name = input("이름을 입력하세요: ")
# 점수는 계산을 위해 정수(int)로 변환
kor = int(input("국어 점수: "))
eng = int(input("영어 점수: "))
math = int(input("수학 점수: "))

# --- 3. 함수를 이용해 계산 ---
total = calc_total(kor, eng, math)
average = calc_avg(total)
grade = calc_grade(average)

# --- 4. 화면 출력 ---
print("\n[성적 처리 결과]")
print(f"이름: {name}") #출력하는 출력물에 변수값 넣을때 f"" 쓰면됨
print(f"국어: {kor}, 영어: {eng}, 수학: {math}")
print(f"총점: {total}점")
print(f"평균: {average:.2f}점") # 소수점 둘째 자리까지 표시
print(f"학점: {grade}학점")

# --- 5. 엑셀(CSV) 파일로 저장 ---
# 'a' 모드: 이어쓰기 (기존 파일이 있으면 내용 추가)
# 'w' 모드: 덮어쓰기 (항상 새 파일로 만듦) -> 예제에서는 'a'로 설정하여 데이터 누적
# encoding='utf-8-sig': 엑셀에서 한글 깨짐 방지 필수 옵션
with open(full_path, "a", encoding="utf-8-sig") as file:
    # 파일이 비어있다면(처음 만든다면) 헤더(제목 줄) 작성
    if file.tell() == 0:
        file.write("이름,국어,영어,수학,총점,평균,학점\n")
    
    # 데이터 작성 (쉼표로 구분)
    data_line = f"{name},{kor},{eng},{math},{total},{average:.2f},{grade}\n"
    file.write(data_line)

print(f"\n 결과가 '{full_path}' 파일에 저장되었습니다.")