728x90
01. 데이터 파일을 읽어 성적처리하는 클래스를 작성하세요.
- split(): 하나의 문자열을 주어진 문자열(regex)을 기준으로 분할하여 문자열 배열을 리턴합니다.
예) array_values = line.split(",");
- 문자열을 정수로 변환: price = int("2500");
- 파일 입출력 모드
r: 읽기 모드 (디폴트)
r+: 읽기 + 쓰기 모드
w: 쓰기 모드
a: 쓰기 + 이어쓰기 모드
t: 텍스트 모드 (디폴트)
b: 바이너리 모드
1. 데이터 파일
[실행 화면]
왕눈이 직원의 성적을 처리했습니다.
아로미 직원의 성적을 처리했습니다.
홍길동 직원의 성적을 처리했습니다.
가길순 직원의 성적을 처리했습니다.
나길순 직원의 성적을 처리했습니다.
▷ C:/홈 폴더/io/sungjuk.txt(CSV: Comma Separated Value 파일)
- split() 메소드 이용
-----------------------------------------------------------------------------------
왕눈이,80,90,100
아로미,75,89,88
홍길동,60,85,77
가길순,100,90,83
나길순,91,92,97
-----------------------------------------------------------------------------------
2. 데이터 파일 처리 결과 파일, 자동 생성됨.
▷ C:/홈 폴더/io/sungjuk_proc.txt
-----------------------------------------------------------------------------------
성명: 왕눈이
JAVA: 80
HTML5: 90
CSS3: 100
총점: 270
평균: 90.0
-------------------------
성명: 아로미
JAVA: 75
HTML5: 89
CSS3: 88
총점: 252
평균: 84.0
-------------------------
.....
-----------------------------------------------------------------------------------
3. 성적 처리
▷ ioexam.Sungjuk.py
-----------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import os
os.chdir('C:/201705_python/io') # 현재 기준 폴더 변경
f = open('sungjuk.txt', 'r')
fw = open('sungjuk_proc.txt', 'w')
while True:
line = f.readline()
if not line:
break # while문 종료
values = line.split(',')
name = values[0]
java = int(values[1])
html5 = int(values[2])
css3 = int(values[3])
tot = java + html5 + css3
avg = tot / 3
fw.write("성명: " + name + '\n')
fw.write("JAVA: " + str(java) + '\n')
fw.write("HTML5: " + str(html5) + '\n')
fw.write("CSS3: " + str(css3) + '\n')
fw.write("총점: " + str(tot) + '\n')
fw.write("평균: " + str(avg) + '\n')
fw.write("-------------------------" +'\n')
print(name + ' 직원의 성적을 처리했습니다.')
f.close()
fw.close()
-----------------------------------------------------------------------------------
[과제 1] 데이터 파일을 읽어 년봉을 출력하는 클래스를 작성하세요.
- int(' 2500 '): 함수는 숫자와 공백이 혼합된 경우 숫자만 산출함.
- 천단위 구분기호 출력
print(format(2520000, ','))
print(format(2520000, ','))
print(format(2520000.567, ",.2f")): 소수 둘째자리까지 반올림하여 출력
1. 데이터 파일
[실행 화면]
왕눈이 직원의 급여를 처리했습니다.
아로미 직원의 급여를 처리했습니다.
홍길동 직원의 급여를 처리했습니다.
가길순 직원의 급여를 처리했습니다.
나길순 직원의 급여를 처리했습니다.
▷ C:/작업 기준폴더/io/pay.txt(CSV 파일)
- 데이터 구조: 성명, 월 급여, 경력 년수
-----------------------------------------------------------------------------------
왕눈이,1800000 ,1
아로미,2000000,2
홍길동,2500000,3
가길순,3000000,5
나길순,3800000,9
-----------------------------------------------------------------------------------
2. 데이터 파일 처리 결과 파일, 자동 생성(DataProc.java를 복사하여 사용합니다.)
- 년봉 = 급여 * 13
▷ C:/작업 기준 폴더/io/pay_proc.txt
-----------------------------------------------------------------------------------
성명: 왕눈이
기본급: 1,800,000
경력: 1
연봉: 23,400,000
-------------------------
성명: 아로미
기본급: 2,000,000
경력: 2
연봉: 26,000,000
-------------------------
성명: 홍길동
기본급: 2,500,000
경력: 3
연봉: 32,500,000
-------------------------
.....
-----------------------------------------------------------------------------------
3. 처리 클래스
▷ ioexam.Pay.py
-----------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import os
os.chdir('C:/201705_python/io') # 현재 기준 폴더 변경
f = open('pay.txt', 'r')
fw = open('pay_proc.txt', 'w')
while True:
line = f.readline()
if not line:
break # while문 종료
values = line.split(',')
name = values[0]
basic = int(values[1]) # 기본급
year = int(values[2]) # 경력
total = basic * 13 # 기본급 * 13
fw.write("성명: " + name + '\n')
fw.write("기본급: " + format(basic, ',') + '\n')
fw.write("경력: " + str(year) + '\n')
fw.write("연봉: " + format(total, ',') + '\n')
fw.write("-------------------------" +'\n')
print(name + ' 직원의 급여를 처리했습니다.')
f.close()
fw.close()
-----------------------------------------------------------------------------------
[과제 2] 단풍 여행 처리 시스템
1. 데이터 파일
▷ C:/작업 기준폴더/io/maple.txt(CSV 파일)
- 데이터 구조: 목적지, 날짜, 회비, 인원수
-----------------------------------------------------------------------------------
내장산,2016-11-10,50000 ,4
설악산,2016-10-15,55000,2
덕유산,2016-10-20,60000,2
소백산,2016-11-10,40000,2
태백산,2016-11-25,35000,2
-----------------------------------------------------------------------------------
2. 데이터 파일 처리 결과 파일, 자동 생성
- 총금액 = 회비 * 인원수
▷ C:/작업 기준 폴더/io/maple_proc.txt
-----------------------------------------------------------------------------------
목적지: 내장산
날짜: 2016-11-10
금액: 50,000
인원수: 4
총금액: 200000
-------------------------
목적지: 설악산
날짜: 2016-10-15
금액: 55,000
인원수: 2
총금액: 110000
-------------------------
목적지: 덕유산
날짜: 2016-10-20
금액: 60,000
인원수: 2
총금액: 120000
-------------------------
.....
-----------------------------------------------------------------------------------
3. 처리
▷ ioexam.Maple.py
-----------------------------------------------------------------------------------
# -*- coding: utf-8 -*-
import os
os.chdir('C:/201705_python/io') # 현재 기준 폴더 변경
f = open('maple.txt', 'r')
fw = open('maple_proc.txt', 'w')
while True:
line = f.readline()
if not line:
break # while문 종료
values = line.split(',')
name = values[0]
travelDate = values[1] # 날짜
price = int(values[2]) # 금액
count = int(values[3]) # 인원수
total = price * count # 금액 * 인원수
fw.write("목적지: " + name + '\n')
fw.write("날짜: " + travelDate + '\n')
fw.write("금액: " + format(price, ',') + '\n')
fw.write("인원수: " + str(count) + '\n')
fw.write("총금액: " + format(total) + '\n')
fw.write("-------------------------" +'\n')
print(name + ' 접수를 처리했습니다.')
f.close()
fw.close()
-----------------------------------------------------------------------------------
728x90
댓글