[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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바