160808: 102회차
Programming
2016. 8. 8. 18:18
종료하기 전 티스토리 네이버 로그아웃 할 것
1. 툴
동일
추가시:
2. 폴더
동일
추가시:
3. 사용할 사이트
동일
추가시:
4. 공부하는 것
schedule _ 경로 설정 & html 충돌로 페이지 안 떴었음.
테이블 수정해서 권한 넣을 것
[11] 구구단 출력하기, 문자열 가지고 놀기
[01] 구구단 출력하기
1. 1단 출력하기
2. 원하는 단 출력하기
3. 구구단 전체 출려하기
[02] 문자열 가지고 놀기
1. 문자열 대소문자 변경하기
2. 문자열 순서 바꾸기
# -*- coding:utf-8 -*-
1. 1단 출력하기
# -*- coding:utf-8 -*-
# 구구단 1단 출력 ##############
for n in range(1, 10): # 1~9까지 숫자 추출을 위한 반복문
print 1, 'x', n, '=', 1*n # 1 x 1 = 1 포맷의 출력
2. 원하는 단 출력하기
# -*- coding:utf-8 -*-
# 입력 받은 숫자에 해당하는 구구단 출력 ##############
m = int(input('구구단 몇 단을 출력 할까요? 숫자를 입력하세요: '))
while m < 1 or m > 9:
m = int(input('구구단은 1단부터 9단까지 출력 가능합니다. 맞는 숫자를 다시 입력하세요: '))
for n in range(1, 10):
print m, 'x', n, '=', m*n
3. 구구단 전체 출려하기
# -*- coding:utf-8 -*-
# 구구단 전체 출력 ##############
for m in range(1, 10):
print('='*10)
for n in range(1, 10):
print m, 'x', n, '=', m*n
[02] 문자열 가지고 놀기
1. 문자열 대소문자 변경하기
# -*- coding:utf-8 -*-
s = raw_input('영어 대소문자로 이루어진 문장을 입력하세요.\n') # 문자열 입력
print('모두 대문자로 출력\n' + s.upper()) # 대문자로 모두 변환
print('모두 소문자로 출력\n' + s.lower()) # 소문자로 모두 변환
new_s = str() # 신규 문자열 형 변수 선언
for c in s: # 입력 받은 문자를 하나씩 꺼내서 c에 대입
if c.islower(): # 해당 문자가 소문자이면
new_s += c.upper() # 대문자로 변경하여 new_s에 붙이기
else: # 해당 문자가 대문자이면
new_s += c.lower() # 소문자로 변경하여 new_s에 붙이
print('대소문자 바꿔서 출력\n' + new_s) # 최종 변환 결과 출력
print('대소문자 바꿔서 출력\n' + s.swapcase()) # 대소문자 모두 변환
2. 문자열 순서 바꾸기
# -*- coding:utf-8 -*-
s = raw_input('영어 문장을 입력하세요.\n') # 문자열 입력
new_s = str() # 신규 문자열형 변수 선언
for x in range(len(s)-1, -1, -1): # range()를 활용한 역순 인덱스 추출
new_s += s[x] # 문자열을 끝에서부터 앞으로 신규 변수에 붙이기
print(new_s) # 위 결과 출력
print(s[::-1]) # 인덱스 사용법으로 역순 출력 = -1부터 반대로 가라 :-)
[12] 파일 입출력
[01]파일 입출력
1. 파일 처리 모드
- open(filename, mode) 내장 함수로 filename 이름을 지닌 file 객체를 얻는다.
- 얻어진 파일 객체에서 자료를 읽거나, 쓰거나, 덧붙이는 작업 수행
- 모든 작업이 끝나면 close()를 호출하여 작업 프로세스의 자원 점유 해제
- 두번째 인자 mode 생략시에는 읽기 전용(r) 모드로 설정
a는 append 같은 것
mode 부분에 저걸 적으면 됨
- filename → 첫 번째 인자에 문자열 형태로 기입
- mode → 두 번째 인자로 읽을 것인지, 쓸 것인지, 덧붙일 것인지 결정 ?
- open 함수를 쓰면 항상 close 함수 같이 씀 ?
- 읽기모드는 파일이 존재해야 함 ?
- 파일포인터 → 현재 읽는 위치 ?
- read라는 메소드를 사용 시 파일포인터 있는 위치를 읽음
- 'a'는 affend의 약자 → 이미 존재하는 내용 뒤에 쓰기
2. 파일 쓰기
- 현재 작업디렉토리 알기
# -*- coding:utf-8 -*-
import os
print os.getcwd()
____________________ cwd는 리눅스에서 현재 위치를 알려주는 것
s = """안녕하세요. 파이썬 프로그래밍의 파일처리부분을 수업합니다.
우선 파일에 글일 저장하는 파일쓰기글 먼저 수행합니다.
open함수를 이용하여 파일객체를 쓰기모드로 생성 합니다.
또한 파일에서 읽어오는 방법에 대해서도 알아봅니다.
"""
f = open('t.txt', 'w')
f.write(s) # 문자열을 파일에 기록 f.close()
- 이중따옴표 3개 → 여러 개의 문장 입력 가능
- mode가 w → 파일이 쓰기 전용으로 열림
- open 내장함수가 반환하고 있는 객체가 file 객체
- write 메소드 → 문자열을 파일에 기록
- eclipse의 프로젝트 폴더에서 새로고침 하면 t.txt 파일이 보임
3. 파일 읽기
# -*- coding:utf-8 -*-
f = open('t.txt', 'r') # f = file('t.txt')와 동일
s = f.read()
print s
- 모드가 쓰이지 않음 → 읽기 모드
- s = f.read( ) → f라는 변수 내에 파일 내용 전체를 가져와 문자열 할당
- f.close( ) → 파일이 자원을 점유하고 있던 것을 해제
- close()을 마지막에 호출하지 않으면 해당 file 객체가 다른 값으로 치환되거나
프로그램이 종료될 때 자동으로 close()가 불리워진다.
4. 라인 단위로 파일 읽기(총 4개)
1) 파일 객체의 반복자 이용하기
- 파일 객체의 반복자는 각 라인별로 내용을 읽어오도록 설정되어 있음
- 파일을 라인별로 읽는 방법 중 가장 효과적임
- line 변수에는 첫 번째 라인 내용이 들어옴
f = open('t.txt')
i = 1
for line in f:
print i, ":", line,
i += 1
f.close()
2) readline(): 한번에 한줄씩 읽는다.
- readline( ) → 현재의 파일포인터에서 개행 문자까지 읽음 = 한 라인
f = open('t.txt')
line = f.readline()
i = 1
while line:
print i, ":", line,
line = f.readline()
i += 1
f.close()
3) readlines(): 파일 전체를 라인 단위로 끊어서 리스트에 저장한다.
- 각 라인을 모두 읽어서 메모리에 리스트로 저장
- readlines( ) → 리스트를 반환 ?
- seek(0) → 파일포인터를 처음으로 돌려줌
- f.readlines( ) 호출하면 파일포인터가 젤 마지막에 위치하게 됨
# -*- coding:utf-8 -*-
f = open('t.txt')
print f.readlines()
print
f.seek(0)
i = 1
for line in f.readlines():
print i, ":", line,
i += 1
f.close()
4) xreadlines():
- readlines()과 유사하지만 파일 전체를 한꺼번에 읽지 않고,
상황별로 필요한 라인만 읽는다.
- 대용량의 파일을 for 문 등으로 라인 단위로 읽을 때 효율적이다.
- xreadlines( ) → 리스트가 반환되지 않고 파일 객체 내용이 찍힘
- xreadlines( ) → 전체가 아닌 라인별로 읽어옴 → 효과적인 메모리 사용
f = open('t.txt')
print f.xreadlines()
f.seek(0)
i = 1
for line in f.xreadlines():
print i, ":", line,
i += 1
f.close()
5. 라인 단위로 파일 쓰기
1) writelines(): 리스트 안에 있는 각 문자열을 연속해서 파일로 출력한다
- writelines(lines) → 각각의 문자열을 라인 단위로 출력 ?
- read( ) → 전체 내용을 모두 읽음 ?
- 각각의 라인을 입력할 때 '\n'은 필히 사용
- '\n'을 넣지 않으면 개행이 되지 않음
# -*- coding:utf-8 -*-
lines = ['first line\n', 'second line\n', 'third line\n'] - 리스트하고 사전 타입 빼고는 다 변경 불가능
f = open('t1.txt', 'w')
f.writelines(lines)
f.close()
f = open('t1.txt')
f.seek(0)
print f.read()
f.close()
2) write() 이용하여 여러 문자열을 각 라인별로 파일로 출력하는 방법
- '\n'.join(lines) → 라인에 존재하는 원소를 '\n'로 이어줌
lines = ['first line', 'second line', 'third line']
f = open('t1.txt', 'w')
f.write('\n'.join(lines))
f.close()
f = open('t1.txt')
f.seek(0)
print f.read()
f.close()
6) 텍스트 파일 t.txt의 단어(공백으로 분리된 문자열) 수를 출력하는 방법
- split( ) → 공백문자를 기준으로 문자를 잘라 list 화 ?
- len(s.split( )) → 리스트 안에 존재하는 원소의 개수
f = open('t.txt')
s = f.read()
n = len(s.split())
print n
f.close()
7) 기존 파일에 내용 추가
- 새로운 파일 추가 시 ‘a’ 모드 사용
- 현재 존재하는 파일내용의 맨 뒤에 내용 삽입됨
f = open('retest.txt', 'w') # 파일의 생성
f.write('first line\n')
f.write('second line\n')
f.close()
f = open('retest.txt', 'a') # 파일 추가 모드로 오픈
f.write('third line\n')
f.close()
f = open('retest.txt') # 파일 읽기
print f.read()
5. 표준 출력을 파일로 저장하기
- 표준 출력(print)을 파일 객체로 전환
- >> : 리다이랙트 기호
f = open('t3.txt', 'w')
print >> f, 'spam string'
f.close()
f = open('t3.txt')
print f.read()
f.close()
값 타입이 없고 모두 참조타입이다 (함수명도 식별자를 가짐)
5. 수업
진도:
hw:
6. 할것
'Programming' 카테고리의 다른 글
160816: 104회차 (0) | 2016.08.16 |
---|---|
160809: 103회차 (0) | 2016.08.09 |
160805: 101회차 (0) | 2016.08.05 |
160804: 100회차 (0) | 2016.08.04 |
160803: 99회차 (0) | 2016.08.03 |