지구정복
[Python] 3/8 | 반복문(while), 함수(기본사용, 내장함수사용), Class(멤버변수, 생성자) 본문
복습 및 배울내용
-파이썬의 자료형
모두 객체 형태
프로퍼티
메서드
-단일값 자료형
Boolean
Number
String
-집합 자료형
List
Tuple
Dicttionary
Set
*형변환하는법
자료형이름()
dir() : 내장함수들 무엇이있는지 출력
type() : 타입확인하기
-제어문
1)
if 조건 :
내용
elif :
내용
2)
if 조건 :
내용
elif :
내용
else :
내용
-반복문for
for 변수 in ( 집합자료형 ) :
내용
for 변수, 변수, ... in ( 리스트(튜플) ) :
내용
for 변수 in range( 시작값, 끝값, 증가값 ) :
내용
1. 반복문 (While)
1. 기본 사용
treeHit = 0
while treeHit <= 10 :
treeHit = treeHit + 1
print( '나무를 %d번 찍었습니다.' % treeHit )
if treeHit == 10 :
print( '나무가 넘어갑니다.' )
구구단 만들기(while문 이용하기)
x = 1
y = 1
while x < 10 :
while y < 10 :
print( x,'X',y,'=',(x*y), '\t', end='' )
y = y + 1
print( '' )
x = x + 1
y = 1
2. 함수
1. 함수의 정의
함수선언은 def로 시작해 콜론(:)으로 끝내고, 함수싀 시작과 끝은 들여쓰기로 구분
def는 함수 객체를 만들겠다는 키워드이다. return은 함수를 종료하고 값을 전달하는데 사용한다.
함수 안에 내용없이 정의하려면 pass라고 입력한다.
print( '시작' )
#함수 내용없이 정의하기
def func1():
pass
def func2():
print( 'func2 호출' )
func2()
print( '끝' )
2. 함수사용하기
함수 인자 받아들이기
print( '시작' )
#함수 내용없이 정의하기
def func1():
pass
def func2():
print( 'func2 호출' )
def func3( a ):
print( 'func3 호출', a )
def func4( a, b ):
print( 'func4 호출', a )
print( 'func4 호출', b )
func2()
func3( 10 )
func4( 20, 30 )
print( '끝' )
지역변수와 전역변수
#함수 안에 a와 밖의 a는 다르다.
#함수 a는 지역변수
#바깥 a는 전역변수
a = 1
def func( a ):
a = a + 1
print( 'a1 :', a )
func(a)
print( 'a2 :', a )
지역변수값을 리턴하면 전역변수에서 사용가능
#함수 안에 a와 밖의 a는 다르다.
#함수 a는 지역변수
#바깥 a는 전역변수
a = 1
def func( a ):
a = a + 1
print( 'a1 :', a )
return a
a = func(a)
print( 'a2 :', a )
혹은 globla명령어를 함수 안에서 사용하면 된다.
a = 1
def func():
global a
a = a + 1
print( 'a1 :', a )
func()
print( 'a2 :', a )
def func( a, b ):
print( 'a :', a )
print( 'b :', b )
func( a=100, b=200 )
#뒤집어도 가능
func( b=200, a=100 )
애초에 인자의 초기값 설정
def func2( a, b, c=True ):
print( 'a :', a )
print( 'b :', b )
print( 'c :', c )
func2( 10, 20 )
func2( 10, 20, False )
함수의 인자가 정해지지 않았을 경우 정의할 때( 가변인자 )
def func( *args ):
print( 'args :',args )
print( 'length :', len( args ) )
func()
func( 10 )
func( 10, 20 )
가변인자 출력시키기
def func( *args ):
print( 'args :',args )
print( 'length :', len( args ) )
def func2( *args ):
for arg in args :
print( arg, end=' ' )
func2( 10, 20 )
함수 리턴값으로 변수 정의
def func1():
return 10
def func2():
return 10, 20
a = func1()
print( 'a :', a )
b, c = func2()
print( 'b :', b )
print( 'c :', c )
정의된 함수를 변수처럼 사용가능
def func1() :
print( 'func1 호출' )
#함수의 참조 주소 호출
print( func1 )
#타입확인하기
print( type( func1 ) )
#똑같은 주소값 출력
func2 = func1
print( func2 )
func2()
#함수의 정확한 주소값 출력
print( id( func2 ) )
함수에서 다른함수 호출하기
def subfunc() :
print( 'subfunc 호출' )
def mainfunc( sub ) :
sub()
mainfunc( subfunc )
리턴값으로 다른 함수 호출하기
def subfunc() :
print( 'subfunc 호출' )
def mainfunc2( sub ) :
return sub
result = mainfunc2( subfunc )
result()
람다함수 사용하기
자바스크립트의 화살표함수와 비슷하다.
쓰는형태는 다음과 같다. lambda 인자값 : 리턴값
def func11( a ) :
return a
print( 'result :', func11(1) )
#위의 예시를 람다로 사용해보자.
func12 = lambda a : a
print( 'result :', func12(1) )
인자가 두 개일 때
func22 = lambda a, b : a+b
print( 'result :', func22(1, 2) )
3. 내장함수 사용하기
all함수
all(x)는 반복가능한(iterable) 자료형 x를 입력인수로 받으며 이 x의 요소가 모두 참이면 True, 거짓이 하나라도 있으면 False를 돌려준다.
#반복가능한 자료형중에 0 또는 공백이 있는지 여부를 출력
#0 또는 공백이 없으면 True
print( all( [] ) )
print( all( [0] ) )
print( all( [''] ) )
print( all( [1, 2] ) )
any함수
any(x)는 반복가능한 자료형 x를 입력인수로 받고 이 x의 요소 중 하나라도 참이 있으면 True를 돌려주고, x가 모두 거짓일 때에만 False를 돌려준다.
#반복가능한 자료형중에 0 또는 공백이 있는지 여부를 출력
#0 또는 공백이 없으면 True
print( any( [] ) )
print( any( [0] ) )
print( any( [''] ) )
print( any( [1, 2] ) )
enumerate
#반복가능한 자료형의 순서값과 값 모두 출력하려면
#enumerate() 함수를 사용한다.
for i, name in enumerate( ['body', 'foo', 'bar'] ):
print( i, name )
eval
문자열을 코드화 시켜서 실행시켜주는 함수
filter함수
양수만 추출하는 함수를 정의해보자.
#양수만 추출(필터)하는 함수 정의
def positive( lists ) :
result = []
for i in lists :
if i > 0 :
result.append(i)
return result
print( positive( [1, -3, 2, 0, -5, 6] ) )
위 함수를 filter함수로 간단하게 작성할 수 있다.
def positive2( x ) :
return x > 0
print( list( filter( positive2, [1, -3, 2, 0, -5, 6] ) ) )
3. Class 사용하기
class Cookie :
pass
c1 = Cookie()
print( type(c1) )
print( id(c1) )
클래스 안에 프로퍼티 정의 및 출력
class Cookie:
a = 10
b = 20
c1 = Cookie()
print( c1.a )
클래스 안에서 함수를 정의할 때는 자기참조인자를 써주어야한다.
self
class Cookie :
#self 는 this와 같이 자기 참조이다.
def func1(self):
print( 'func1 호출', self )
c1 = Cookie()
c1.func1()
함수의 인자추가
class Cookie :
#self 는 this와 같이 자기 참조이다.
def func1(self):
print( 'func1 호출', self )
def func2(self, a, b):
print( 'func2 호출:', a )
print( 'func2 호출:', b )
c1 = Cookie()
c1.func1()
c1.func2(10, 20)
클래스 안에 멤버변수 선언 및 초기화하기
class Cookie :
#self 는 this와 같이 자기 참조이다.
def func1(self):
#동적으로 a라는 변수가 자동으로 선언 및 초기화까지 된다.
self.a = 10
print( 'slef.a :', self.a )
def func2(self):
print( 'slef.a :', self.a )
c = Cookie()
c.func1()
print( c.a )
c.a = 100
c.func2()
매개변수로 멤버변수 초기화하기
class Cookie :
#캡슐화하기 = setter 메서드와 같다.
def func1(self, a):
self.a = a
def func2(self):
print( 'self.a :', self.a )
c = Cookie()
c.func1( 10 )
c.func2()
생성자 선언하기
생성자는 __init__로 사용한다.
class Cookie:
#생성자
def __init__(self):
print( '__init__ 호출' )
c = Cookie()
생성자에서 멤버변수 초기화 및 선언하기
class Cookie:
#생성자
def __init__(self, first, second):
self.first = first
self.second = second
def add(self):
return self.first + self.second
c = Cookie( 10, 20 )
print( c.add() )