파일 입출력과 그리기
함수 def hello(): pass def 함수이름(): 코드 #↑ 들여쓰기 4칸 출력(함수 호출) 함수이름() define 빈 함수 만들기
def 함수이름(매개변수1, 매개변수2): 코드 함수이름(값1, 값2) 함수 호출(출력) def 함수이름(매개변수): 함수이름(값1, 값2) 함수 호출(출력) def 함수이름(매개변수): return 반환값 변수=함수이름(값,값) def 함수이름(매개변수): return 반환값1, 반환값2
def 함수이름(매개변수): “””독스트링””” 코드 def 함수이름(매개변수): """ 여러 줄로된 코드 참고: 함수 독스트링 사용하기 def 함수이름(매개변수): “””독스트링””” 코드 def 함수이름(매개변수): """ 여러 줄로된 독스트링 """ 코드 독스트링을 출력하려면 print(함수이름._ _doc_ _)와 같이 함수의 __doc__을 출력
여러가지 매개변수 2. 키워드 인수 사용하기 3.재귀 호출: 함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출 1. 매개변수의 개수를 지정하지 않고 전달: 매개 변수가 튜플형으로 전달 def 함수이름(*매개변수): 코드 2. 키워드 인수 사용하기 def 함수이름(**매개변수): 코드 3.재귀 호출: 함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출
7. from import로 모듈의 일부만 가져오기: 5.패캐지에서 모듈 가져오기: import 패키지.모듈 import 패키지.모듈1, 패키지.모듈2 import 모듈 as 새이름 6.import as로 모듈(패키지) 이름 지정하기: import 패키지.모듈 as 새이름 from 모듈 import 변수 from 모듈 import 함수 from 모듈 import 클래스 from 모듈 import 변수, 함수, 클래스 from 모듈 import * : 모두 다 가져옴 7. from import로 모듈의 일부만 가져오기:
8.패키지의 모듈에서 변수, 함수, 클래스를 가져오는 방법 from 패키지.모듈 import 변수 from 패키지.모듈 import 함수 from 패키지.모듈 import 클래스 from 패키지.모듈 import 변수, 함수, 클래스 from 패키지.모듈 import * 9.from import로 변수, 함수, 클래스를 가져온 뒤 새 이름을 지정 from 모듈 import 변수 as 새이름 from 모듈 import 함수 as 새이름 from 모듈 import 클래스 as 새이름
from import로 변수, 함수, 클래스를 가져온 뒤 새 이름을 지정 from 모듈 import 변수 as 새이름 from 모듈 import 함수 as 새이름 from 모듈 import 클래스 as 새이름 from math import sqrt as s # math 모듈에서 sqrt 함수를 가져오면서 s로 새 이름 지정 >>> s(4.0) # s로 sqrt 함수 사용 2.0 >>> s(2.0) # s로 sqrt 함수 사용 1.4142135623730951
파일 입출력 파일객체 = open(파일이름, 파일모드) 파일객체.write(문자열) 파일객체.close() 파일 입출력의 기본 과정 파일객체 = open(파일이름, 파일모드) 파일객체.write(문자열) 파일객체.close()
파일객체 = open(파일이름, 파일모드) 파일객체.write(문자열) 파일객체.close() file = open('hello.txt', 'w') # hello.txt 파일을 쓰기 모드(w)로 열기. 파일 객체 반환 file.write('Hello, world!') # 파일에 문자열 저장 file.close() # 파일 객체 닫기
파일 모드를 읽기 모드 'r'로 지정 file = open('hello.txt', 'r') # hello.txt 파일을 읽기 모드(r)로 열기. 파일 객체 반환 s = file.read() # 파일에서 문자열 읽기 print(s) # Hello, world! file.close() # 파일 객체 닫기
with as를 사용하면 파일을 사용한 뒤 자동으로 파일 객체를 닫아 줌: close 사용 안함 with open(파일이름, 파일모드) as 파일객체: 코드 with open('hello.txt', 'r') as file: # hello.txt 파일을 읽기 모드(r)로 열기 s = file.read() # 파일에서 문자열 읽기 print(s) # Hello, world!
문자열 여러 줄에 파일에 쓰기, 읽기 리스트에 들어있는 문자열을 파일에 저장: with open('hello.txt', 'w') as file: # hello.txt 파일을 쓰기 모드(w)로 열기 for i in range(3): file.write('Hello, world! {0}\n'.format(i)) 리스트에 들어있는 문자열을 파일에 저장: 파일객체.writelines(문자열리스트) lines = ['안녕하세요.\n', '파이썬\n', '코딩 도장입니다.\n'] with open('hello.txt', 'w') as file: # hello.txt 파일을 쓰기 모드(w)로 열기 file.writelines(lines)
파일의 내용을 한 줄씩 순차적으로 읽으려면 readline을 사용: with open('hello.txt', 'r') as file: # hello.txt 파일을 읽기 모드(r)로 열기 line = file.readline() print(line.strip('\n')) # 파일에서 읽어온 문자열에서 \n 삭제 while line != '': print(line.strip('\n')) # 파일에서 읽어온 문자열에서 \n 삭제
파일객체 = open(파일이름, ‘a’) 파일객체.write(문자열) 파일객체.close() # 입력파일과 출력파일이름을 받는다 outf=open("phone.txt", 'a') outf.write("\n최무선 010-3456-9807") outf.write("\n기선희 010-3789-1237") outf.close()
파일 열기 모드
터틀 그래픽스로 그림 그리기 터틀 그래픽스(Turtle graphics) 모듈을 사용해서 간단한 그림 그리기. 거북이가 기어가는 모양대로 그림을 그린다고 해서 터틀
사각형 그리기 import turtle as t >>> t.shape('turtle') >>> t.right(90) #오른쪽(right)으로 90도 회전 >>> t.forward(100) #100픽셀만큼 앞으로 >>> t.right(90) #오른쪽(right)으로 90도 회전 >>> t.forward(100) ) #100픽셀만큼 앞으로
다각형 그리기 import turtle as t t.shape('turtle') for i in range(4): # 사각형이므로 4번 반복 t.forward(100) t.right(90) import turtle as t t.shape('turtle') for i in range(5): # 오각형이므로 5번 반복 t.forward(100) t.right(360 / 5) # 360을 5로 나누어서 외각을 구함
import turtle as t n = 6 # 육각형 t.shape('turtle') t.color('red') # 펜의 색을 빨간색으로 설정 t.begin_fill() # 색칠할 영역 시작 for i in range(n): # n번 반복 t.forward(100) t.right(360 / n) # 360을 n으로 나누어서 외각을 구함 t.end_fill() # 색칠할 영역 끝
복잡한 도형 그리기 import turtle as t n = 60 # 원을 60번 그림 t.shape('turtle') t.speed('fastest') # 거북이 속도를 가장 빠르게 설정 for i in range(n): t.circle(120) # 반지름이 120인 원을 그림 t.right(360 / n) # 오른쪽으로 6도 회전 >>> import turtle as t >>> t.shape('turtle') >>> t.circle(120)
import turtle as t t.shape('turtle') t.speed('fastest') # 거북이 속도를 가장 빠르게 설정 for i in range(300): # 300번 반복 t.forward(i) # i만큼 앞으로 이동. 반복할 때마다 선이 길어짐 t.right(91) # 오른쪽으로 91도 회전
def screenLeftClick(x,y): global r,g,b myT.pencolor((r,g,b)) import turtle myT=None myT=turtle #함수 선언 def screenLeftClick(x,y): global r,g,b myT.pencolor((r,g,b)) myT.pendown() myT.goto(x,y) #변수 선언 pSize=10 r,g,b=0.0,0.0,0.0 #메인 선언 myT.shape('turtle') myT.title('거북이로 그림그리기') myT.pensize(pSize) myT.onscreenclick(screenLeftClick,1) myT.done()
import turtle #함수 선언 def screenLeftClick(x,y): global r,g,b turtle.pencolor((r,g,b)) turtle.pendown() turtle.goto(x,y) #변수 선언 #myT=None pSize=10 r,g,b=0.0,0.0,0.0 #메인 선언 #메인 선언 #myT=turtle turtle.shape('turtle') turtle.title('거북이로 그림그리기') turtle.pensize(pSize) #for i in range(0,4): #myT.forward(200) #myT.right(90) turtle.onscreenclick(screenLeftClick,1) turtle.done()
import turtle import random myT=None myT=turtle #함수 선언 def screenRightClick(x,y): global r,g,b myT.stamp() tSize=random.randrange(1,10) pSize=random.randrange(1,10) dSize=random.randrange(0,90) myT.shapesize(tSize) myT.pencolor((r,g,b)) myT.color((r,g,b)) myT.pensize(pSize) r=random.random() g=random.random() b=random.random() myT.right(dSize) myT.goto(x,y) #변수 선언 r,g,b=0.0,0.0,0.0 #메인 선언 myT.shape('turtle') myT.title('거북이로 그림그리기') myT.onscreenclick(screenRightClick,3) myT.done()
나무그리기 import turtle def tree(length): if length>5: t.forward(length) t.right(20) tree(length-15) t.left(40) t.backward(length) t=turtle.Turtle() t.left(90) t.color("green") t.speed(1) tree(90)