두근두근 파이썬 수업 7장 코드를 함수로 모아봅시다..

Slides:



Advertisements
Similar presentations
Python Essential 세미나 1 CGI 프로그램 작성법 발표자 : 박승기 ( 수 )
Advertisements

변수와 조건문 빛나리 36 호 박승운. 파이썬 쉽게 사용하기 Python IDLE 사용 FILE - New File 로 파일 만들기 Run – Run Module 로 실행하기.
두근두근 파이썬 수업 7장 프로젝트 I.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
이 자료는 확인 할 수 있습니다. Python Turtle with 함수 휘문고등학교 컴퓨터부 민경현 이 자료는 확인 할 수 있습니다.
순차, 조건, 반복 이점숙 농대 뒷편 언덕을 넘어가며 같은 문제 다르게 해결 순차, 조건, 반복 이점숙
순차, 조건, 반복 이점숙 같은 문제 다르게 해결하기 순차, 조건, 반복 이점숙
두근두근 파이썬 수업 7장 프로젝트 I.
149개의 실습예제로 배우는 Flash 8.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
풀 다운 메뉴 File > New “intent” 이름을 넣고 OK 를 클릭한다.
두근두근 파이썬 수업 4장 자료의 종류에는 어떤 것들이 있나요?.
두근두근 파이썬 수업 9장 리스트와 딕셔너리.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
컴퓨터 프로그래밍 기초 [Final] 기말고사
개정판 누구나 즐기는 C언어 콘서트 제8장 함수 출처: pixabay.
7장 배열 ②.
10장 함수.
1. C++ 시작하기.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
두근두근 파이썬 수업 13장 객체란 무엇인가요?.
두근두근 파이썬 수업 13장 객체란 무엇인가요?.
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
두근두근 파이썬 수업 3장 계산해봅시다..
공학컴퓨터프로그래밍 Python 염익준 교수.
스크래치 언어 이해 스크래치 이용법 습득 고양이가 말을 하며 움직이는 예제 작성
10장 컴퓨터 기반 데이터 획득 응용 프로그램 LabVIEW 사용법
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
어서와 C언어는 처음이지 제14장.
인터넷응용프로그래밍 JavaScript(Intro).
두근두근 파이썬 수업 5장 조건을 따져봅시다..
27장. 모듈화 프로그래밍.
10장 tkinter로 GUI 만들기.
두근두근 파이썬 수업 1장 파이썬 소개.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
연산자 (Operator).
두근두근 파이썬 수업 2장 변수를 소개합니다..
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
Hello, Python! #2 <부제: 코딩은 혼자하는 것이다>
Python Turtle 민경현.
SEOUL NATIONAL UNIVERSITY OF SCIENCE & TECHNOLOGY
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
웹서버 기능으로 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
Fucntion 요약.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
수학10-나 1학년 2학기 Ⅱ.부등식의 영역 1. 부등식의 영역(2/5) 부등식 영역 수업계획 수업활동.
두근두근 파이썬 수업 2장 변수를 소개합니다..
제20강 유도전압과 인덕턴스 20.1 유도 기전력과 자기 선속 • 유도 기전력
파일 입출력과 그리기.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Flow Diagram IV While.
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
함수, 모듈.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
9 브라우저 객체 모델.
통계학 R을 이용한 분석 제 2 장 자료의 정리.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
프로그래밍 개론 Ⅰ-실습 2장 데이터와 식①.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
7 생성자 함수.
BoardGame 보드게임 따라가기.
Presentation transcript:

두근두근 파이썬 수업 7장 코드를 함수로 모아봅시다.

이번 장에서 만들 프로그램 (1) 터틀 그래픽에서 사각형을 그리는 함수를 정의하고 사용해본다. (2) 마우스로 클릭하는 곳에 사각형을 그리는 프로그램을 함수를 이용하여 작성해본다.

함수란? 함수는 코드의 묶음에 이름을 붙인 것 함수는 입력을 받아서 출력을 내보내는 박스로 생각할 수 있다.

함수 작성하고 호출하기 함수 정의 def print_address(): print("서울특별시 종로구 1번지") 함수 호출 print_address() 서울특별시 종로구 1번지 파이썬 빌딩 7층 홍길동

함수의 장점 한 번만 함수를 정의하면 언제든지 필요할 때면 함수를 불러서 일을 시킬 수 있다. print_address() 한 번만 함수를 정의하면 언제든지 필요할 때면 함수를 불러서 일을 시킬 수 있다. print_address() 서울특별시 종로구 1번지 파이썬 빌딩 7층 홍길동

함수에 입력 전달하기 우리는 함수에 값(정보)을 전달할 수 있다. 이 값을 인수 (argument)라고 한다.

인수 전달 def print_address(name): print("서울특별시 종로구 1번지") print(name) print_address("홍길동“)

값 반환하기 함수는 값을 반환할 수 있다.

값 반환 def calculate_area (radius): area = 3.14 * radius**2 return area c_area = calculate_area(5.0)

함수에 여러 개의 입력 전달하기 def get_sum(start, end): sum = 0 for i in range(start, end+1): sum += i return sum print(get_sum(1, 10))

Lab: 사각형을 그리는 함수 작성하기 정사각형을 그리는 함수는 다음과 같다. 위의 함수를 호출하여 3개의 정사각형을 그려 보자. def square(length): # length는 한변의 길이 for i in range(4): t.forward(length) t.left(90)

Solution import turtle t = turtle.Turtle() t.shape("turtle") def square(length): # length는 한변의 길이 for i in range(4): t.forward(length) t.left(90) t.up() # 펜을 든다. t.goto(-200, 0) # (-200, 0)으로 이동한다. t.down() # 펜을 내린다. square(100); # square() 함수를 호출한다. t.up() t.goto(0, 0) t.down() square(100); t.goto(200, 0)

Lab: n-각형을 그리는 함수 작성하기 n-각형을 그리는 함수를 작성하여 다음과 같은 그림을 그려 보자.

Solution import turtle t = turtle.Turtle() # n-각형을 그리는 함수를 정의한다. def n_polygon(n, length): for i in range(n): t.forward(length) t.left(360//n) # 정수 나눗셈은 //으로 한다. for i in range(10): t.left(20) n_polygon(6, 100)

변수의 종류 지역 변수(local variable): 함수 안에서 선언되는 변수 전역 변수(global variable): 함수 외부에서 선언되는 변수

지역 변수의 범위 지역 변수는 함수 안에서만 사용이 가능하다. 아래의 코드에서 지역 변수를 찾아보자. def calculate_area (radius): result = 3.14 * radius**2 return result r = float(input("원의 반지름: ")) area = calculate_area(r) print(result) 오류가 없을까?

지역 변수의 범위 def calculate_area (radius): result = 3.14 * radius**2 return result r = float(input("원의 반지름: ")) area = calculate_area(r) print(result) 원의 반지름: 10 Traceback (most recent call last): File "C:\Users\sec\AppData\Local\Programs\Python\Python35-32\z.py", line 7, in <module> print(result) NameError: name 'result' is not defined

전역 변수 전역 변수는 어디서나 사용할 수 있다. 아래의 코드에서 전역 변수를 찾아보자. def calculate_area (): result = 3.14 * r**2 return result r = float(input("원의 반지름: ")) area = calculate_area() print(area)

함수 안에서 전역 변수 변경하기 def calculate_area (radius): area = 3.14 * radius**2 # 전역변수 area에 계산값을 저장하려고 했다! return area = 0 r = float(input("원의 반지름: ")) calculate_area(r) print(area) 원의 반지름: 10 >>> 왜 0이 나올까?

함수 안에서 전역 변수 변경하기 def calculate_area (radius): area = 3.14 * radius**2 # 전역변수 area에 계산값을 저장하려고 했다! return area = 0 r = float(input("원의 반지름: ")) calculate_area(r) print(area) 여기서 새로운 지역 변수 area가 생성된다.

함수 안에서 전역 변수 변경하기 global을 사용하여 전역 변수에 값을 저장한다고 알려야 한다. def calculate_area (radius): global area area = 3.14 * radius**2 return area = 0 r = float(input("원의 반지름: ")) calculate_area(r) print(area)

디폴트 인수 파이썬에서는 함수의 매개변수가 기본값을 가질 수 있다. 이것을 디폴트 인수(default argument)라고 한다. def greet(name, msg="별일없죠?"): print("안녕 ", name + ', ' + msg) greet("영희") 안녕 영희, 별일없죠? >>>

키워드 인수 키워드 인수는 인수의 이름을 명시적으로 지정해서 전달 하는 방법이다. def calc(x, y, z): return x+y+z >>> calc(y=20, x=10, z=30) 60

Lab: 클릭하는 곳에 사각형 그리기 사용자가 화면에서 마우스 버튼을 클릭한 경우, 클릭 된 위치에 사각 형을 그리는 프로그램을 작성해 보자. 앞에서 작성한 square() 함수 도 사용한다 Run Python

콜백 함수 이벤트가 발생했을 때, 이벤트를 처리하는 함수를 콜백 함수(callback function)라고 부른다. 터틀 그래픽에서도 마우스가 클릭 되었을 때 호출되는 콜 백 함수를 등록할 수 있다. def drawit(x, y): t.penup() ... s = turtle.Screen() # 그림이 그려지는 화면을 얻는다. s.onscreenclick(drawit) # 마우스 클릭 이벤트 처리 함수를 등록한다.

Solution import turtle # 터틀 그래픽 모듈을 포함한다. def square(length): for i in range(4): t.forward(length) t.left(90) def drawit(x, y): t.penup() t.goto(x, y) t.pendown() t.begin_fill() t.color("green") square(50) t.end_fill() s = turtle.Screen() # 그림이 그려지는 화면을 얻는다. s.onscreenclick(drawit) # 마우스 클릭 이벤트 처리 함수를 등록한다.

Lab: 마우스로 그림 그리기 이번 실습에서는 drawit() 안에 goto()를 넣어서 거북이를 클릭된 위 치로 이동시키도록 하자. 현재 위치에서 클릭된 위치까지 선이 그려 진다.

Solution import turtle # 터틀 그래픽 모듈을 포함한다. def draw(x, y): t.goto(x, y) t = turtle.Turtle() t.shape("turtle") t.pensize(10) s = turtle.Screen() # 그림이 그려지는 화면을 얻는다. s.onscreenclick(draw) # 마우스 클릭 이벤트 처리 함수를 등록한다.

Lab: 나무 그리기 지금까지 학습한 내용을 바탕으로 순환적으로 나무를 그리는 프랙털 (fractal) 프로그램을 작성해 보자. 함수는 내부에서 다시 자기 자신을 호출할 수 있다. 이것을 순환호출 (recursion)이라고 한다

알고리즘 직선을 그린다. 직선의 끝에서 특정한 각도로 2개의 가지를 그린다. 충분한 나뭇가지가 생성될 때까지 각 가지의 끝에서 과 정 2를 되풀이 한다.

Solution import turtle def tree(length): if length > 5: # length가 5보다 크면 순환호출을 한다. t.forward(length) # 거북이가 length 만큼 선을 그린다. t.right(20) # 오른쪽으로 20도 회전한다. tree(length-15) # (length-15)를 인수로 tree()를 순환 호출한다. t.left(40) # 왼쪽으로 40도 회전한다. t.backward(length) # length만큼 뒤로 간다. 제자리로 돌아온다. t = turtle.Turtle() t.left(90) # 거북이가 위쪽을 향하게 한다. t.color("green") # 선의 색을 녹색으로 한다. t.speed(1) # 속도를 제일 느리게 한다. tree(90) # 길이 90으로 tree()를 호출한다.

Lab: 막대 그래프 그리기 파이썬의 터틀 그래픽을 이용해서 막대 그래프를 그려보자.

Solution import turtle def drawBar(height): t.begin_fill() t.left(90) t.forward(height) t.write(str(height), font = ('Times New Roman', 16, 'bold')) t.right(90) t.forward(40) t.end_fill() data = [120, 56, 309, 220, 156, 23, 98] t = turtle.Turtle() t.color("blue") t.fillcolor("red") t.pensize(3) for d in data: drawBar(d)

Lab: 터틀 메이즈 러너 화면에 미로를 만들고 거북이가 화살표를 이용하여 미로에 닫지 않 게 진행하는 프로그램을 작성해보자.

화살표 키 처리 키보드에서 화살표 키가 눌리면 이벤트가 발생하고 이 이 벤트를 처리하는 함수는 다음과 같이 등록한다. def turn_left(): t.left(10) t.forward(10) def turn_right(): t.right(10) t = turtle.Turtle() screen = turtle.Screen() screen.onkey(turn_left, "Left") screen.onkey(turn_right, "Right")

Solution import random import turtle def draw_maze(x, y): for i in range(2): t.penup() if i==1 : t.goto(x+100, y+100) else: t.goto(x, y) t.pendown() t.forward(300) t.right(90) t.left(90)

Solution def turn_left(): t.left(10) t.forward(10) def turn_right(): t.right(10) t = turtle.Turtle() screen = turtle.Screen() t.shape("turtle") t.speed(0)

Solution draw_maze(-300, 200) screen.onkey(turn_left, "Left") screen.onkey(turn_right, "Right") t.penup(); t.goto(-300, 250) t.speed(1) t.pendown(); screen.listen() screen.mainloop()

이번 장에서 배운 것 함수가 무엇인지를 학습하였다. 인수와 매개변수가 무엇인지를 학습하였다. 어떻게 함수로 인수를 전달할 수 있는지를 학습하였다. 여러 개의 인수를 함수로 전달하는 방법을 학습하였다. 함수가 값을 반환하는 방법을 학습하였다. 지역변수와 전역변수의 차이점에 대하여 학습하였다. global 키워드를 사용하여서 함수 안에서 전역변수를 사용 하는 방법을 학습하였다.

Q & A