# 문제 : 이름, 국어점수, 영어점수, 수하가점수를 입력받아서 총점, 평균, 학점을 반환받는 코드를 만들어보자!
#해답
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}' 파일에 저장되었습니다.")
'AI딥러닝 > Python' 카테고리의 다른 글
| 아나콘다로 시작하는 데이터 분석 - Jupyter (0) | 2026.01.22 |
|---|---|
| Import를 이용한 Main파일 실행 (0) | 2026.01.20 |
| Python DB. sqlite3 설치 실행 (0) | 2026.01.20 |
| 명령어 1탄. 파이썬 실무에서 사용하는 (0) | 2026.01.20 |
| Python과 Python DB 설치하기 (0) | 2026.01.20 |