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

2017. 8. 2. 17:19·빅데이터 프로그래밍/Python
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
반응형

'빅데이터 프로그래밍 > Python' 카테고리의 다른 글

[Python] 16. [Network] socketserver 네트워크 프레임워크, Echo Server 2, 파일 송수신  (0) 2017.08.02
[Python] 15. [Network] Network(네트워크), Socket, Echo Server 1  (0) 2017.08.02
[Python] 13. [IO] IO(입출력), File 클래스 다루기, 파일 이동, 디렉토리 조작, 파일 목록, 파일 복사  (0) 2017.08.02
[Python] 12. 예외처리(Excetption), try, except ~ else ~ finally 실습  (0) 2017.08.02
[Python] 11. 상속(ingeritance), 부모클래스의 생성자호출, 생성자/메소드 오버로딩, 다중 상속  (0) 2017.08.02
'빅데이터 프로그래밍/Python' 카테고리의 다른 글
  • [Python] 16. [Network] socketserver 네트워크 프레임워크, Echo Server 2, 파일 송수신
  • [Python] 15. [Network] Network(네트워크), Socket, Echo Server 1
  • [Python] 13. [IO] IO(입출력), File 클래스 다루기, 파일 이동, 디렉토리 조작, 파일 목록, 파일 복사
  • [Python] 12. 예외처리(Excetption), try, except ~ else ~ finally 실습
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (407) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (10) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    proxy pass
    docker
    티스토리 자동화
    VS Code 팁
    rust linux
    API 설계
    브라우저 자동화
    mysql db
    AI 코딩 에이전트
    vscode
    자바 객체 지향
    spring java
    nginx ssl 설정
    오류
    클론코딩
    Node
    Java Array
    SSL 인증서
    css block
    svelte
    nginx
    ubuntu
    에디터 팁
    러스트
    vue 설치
    java casting
    ssl 인증서 발급
    css tb
    프런트엔드
    lang rust
    css table
    servlet class
    React Compiler
    css float
    Rust lang
    자바 exception
    리눅스 설치
    자바 배열
    자바 for문
    자바 생성자
    자바 클래스
    jsp parameter
    vue cli
    jsp include
    gitlab 설치
    css perspective
    css list
    css transition
    nginx ssl 적용
    Extension Bisect
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[Python] 14. [IO] 데이터 파일을 읽어 성적, 연봉, 단풍 여행 처리 시스템을 작성하세요.
상단으로

티스토리툴바