빅데이터 프로그래밍/Python

[Python] 14. [IO] 데이터 파일을 읽어 성적, 연봉, 단풍 여행 처리 시스템을 작성하세요.

밍글링글링 2017. 8. 2.
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.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

댓글