6월 23일 (금) - [ 복합 자료형 : Tuple, Dictionary / 제어문 : if, while, for / 주민등록번호 검사기 / 함수 ]
이전 수업 개념
▶ 자료형 (객체)
- 함수와 메서드를 사용할 수 있다.
- 단일 자료형 ( Boolean / Number / String ... )
- 복합 자료형 ( List / Set ... )
▶ ipython
- 터미널에 python3 입력 후, 한줄씩 코드를 입력하는 인터프리터 코딩 방식
- 줄마다 즉각적으로 에러를 찾아낼 수 있다는 장점이 있다.
Python : Tuple
▶ 새 파일 생성 : tuple01.py
- List와 비슷하지만 readonly의 특징을 갖는다.
- 값으로 숫자 한 개만 넣으면 int 타입으로 인식한다.
tuple1 = ()
tuple2 = tuple()
print( type( tuple1 ) )
print( type( tuple2 ) )
tuple3 = ( 1, 2, 3 )
print( tuple3 )
tuple41 = ( 1 )
tuple42 = ( 1, )
print( type( tuple41 ) )
print( type( tuple42 ) )
print( tuple3[0] )
# del tuple3[0]
# tuple3[0] = 10
print( tuple3 )
▶ 새 파일 생성 : tuple02.py
- 다중 할당 개념
- Java에서는 값 교환시 새로운 변수가 필요하지만, python에서는 다중 할당 개념으로 쉬운 교환이 가능하다.
- 리스트에서도 다중 할당 개념이 적용된다.
data = 10
print( data )
data1, data2 = ( 10, 20 )
print( data1, data2 )
( data1, data2 ) = 10, 20
print( data1, data2 )
data1, data2 = 10, 20
print( data1, data2 )
# 변수간의 값 교환
a = 3
b = 5
c = 7
a, b, c = c, a, b
print( a, b, c )
[ a, b ] = [ 10, 20 ]
print( a, b )
Python : Dictionary
▶ 새 파일 생성 : dictionary01.py
- Map 처럼 키:값 형태로 데이터를 저장할 수 있다.
- 새로운 '키:값'을 추가할 때, 같은 이름의 키가 존재하면 값을 수정. 존재하지 않으면 '키:값' 추가의 기능을 한다.
- JSON과 형태가 비슷하다.
dict1 = {}
dict2 = dict()
print( type( dict1 ) )
print( type( dict2 ) )
# Map( Key, Value )
# JSON
dict = { 'name' : 'pey', 'phone' : '0102223333' }
print( dict )
print( dict['name'] )
print( dict.get( 'name' ) )
dict[ 'data1' ] = 'value1'
print( dict )
dict[ 'name' ] = 'scott'
print( dict )
del dict[ 'data1' ]
print( dict )
▶ 새 파일 생성 : dictionary02.py
- Key / Value의 묶음을 List 형태로 변환시켜서 값을 가져올 수 있다.
dict = { 'name' : 'pey', 'phone' : '0001112222' }
print( dict.keys() )
print( dict.values() )
keylists = list( dict.keys() )
print( keylists[0] )
valuelists = list( dict.values() )
print( valuelists[0] )
Python 제어문
Python : 조건문 - If
▶ 새 파일 생성 : if01.py
- 들여쓰기에 주의한다.
- pass : 빈 공간으로 두고 싶을 때 사용한다.
print( '시작' )
money = True
if money == False :
pass
else :
print( '실행문장 2' )
print( '끝' )
▶ 새 파일 생성 : if02.py
- If를 이용해 학점을 알려주는 프로그램 만들기
- 중첩 if를 활용한 방식
print( '시작' )
hakjum = 99
# 선택적 if
if hakjum >= 90 :
print( '학점은 A 입니다.' )
else :
if hakjum >= 80 :
print( '학점은 B 입니다.' )
else :
if hakjum >= 70 :
print( '학점은 C 입니다.' )
else :
if hakjum >= 60 :
print( '학점은 D 입니다.' )
else :
print( '학점은 F 입니다.' )
print( '끝' )
▶ 새 파일 생성 : if03.py
- if02 예제에서 elif를 활용해 변형한 방식
hakjum = 99
# 선택적 if
if hakjum >= 90 :
print( '학점은 A 입니다.' )
elif hakjum >= 80 :
print( '학점은 B 입니다.' )
elif hakjum >= 70 :
print( '학점은 C 입니다.' )
elif hakjum >= 60 :
print( '학점은 D 입니다.' )
else :
print( '학점은 F 입니다.' )
▶ 새 파일 생성 : if04.py
- 값의 여부를 알 수 있는 in 을 하나의 연산자로 활용할 수 있다.
# string / list / tuple
# 값의 존재 여부 ( in )
pocket = [ 'paper', 'cellphone', 'money' ]
if 'money' in pocket :
print( 'taxi' )
else :
print( 'walking' )
Python : 반복문 - For
▶ 새 파일 생성 : for01.py
- 향상된 for문과 비슷한 문법으로 사용할 수 있다.
- 문자열을 향상된 for문과 같이 적용하면 각 문자를 따로 추출하여 출력한다.
- List와 Dictionary 자료형에서도 사용할 수 있다.
# list
# 시작과 끝
lists1 = [ 'one', 'two', 'three' ]
print( lists1[0] )
print( lists1[1] )
print( lists1[2] )
for list1 in lists1 :
print( list1 )
strings1 = 'hello'
for string1 in strings1 :
print( string1 )
dicts = { 'name' : 'pey', 'phone' : '0102223333' }
for key in dicts.keys() :
print( key )
▶ 새 파일 생성 : for02.py
- 다중 할당을 이용한 출력 방식
lists = [ ( 1, 2 ), ( 3, 4 ), ( 5, 6 ) ]
for( first, last ) in lists :
print( first, last )
dicts = { 'name' : 'pey', 'phone' : '0102223333' }
for key, value in dicts.items() :
print( key, value )
▶ 새 파일 생성 : for03.py
- range(n,m) : n부터 m까지의 범위를 나타낸다. ( m은 포함되지 않는다. )
print( range( 5 ) )
print( range( 0, 5 ) )
lists = list( range( 0, 5 ) )
print( lists )
for i in range( 0, 5 ) :
print( i, end=' ' )
print()
sum = 0
for i in range( 1, 11 ) :
sum = sum + i
print( sum )
▶ 새 파일 생성 : for03_1.py
- 1~100까지의 숫자 중 3의 배수의 합을 구하기
sum = 0
for i in range( 1, 101 ) :
if i % 3 == 0 :
sum = sum + i
print( sum )
▶ 새 파일 생성 : for04.py
- for문의 중첩
sum = 0
for i in range( 1, 101 ) :
if i % 3 == 0 :
sum = sum + i
print( sum )
▶ 새 파일 생성 : for05.py
- 소문자로 된 문자열을 앞 글자만 대문자인 문자열로 변경시키기
name = input( '이름을 입력해주세요 : ' )
print( name )
names = name.split( ' ' )
for i in range( len( names ) ) :
# print( names[i] )
names[i] = names[i][0].upper() + names[i][1:]
print( names[i] )
result = ' '.join( names )
print( '결과 :', result )
# for data in names :
# print( data )
Python : 주민등록번호 검사기 만들기
▶ 새 파일 생성 : for06.py
# 입력 양식 : xxxxxx-xxxxxxx
# 출력 : 정확 / 부정확
str = input( '주민등록번호를 입력해주세요( XXXXXX - XXXXXXX ) : ' )
str = str.replace( '-', '' )
# print( str )
bits = [ 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5 ]
sum = 0
for i in range( len( bits ) ) :
sum += int( str[i] ) * bits[i]
cnum = ( 11 - ( sum % 11 ) ) % 10
lnum = int( str[-1] )
if( cnum == lnum ) :
print( '정확' )
else :
print( '부정확' )
Python : 반복문 - While
▶ 새 파일 생성 : whiletest01.py
treeHit = 0
while treeHit < 10 :
treeHit = treeHit + 1
print( '나무를 %d번 찍었습니다.' % treeHit )
if treeHit == 10 :
print( '나무 넘어갑니다.' )
▶ 새 파일 생성 : whiletest02.py
coffee = 10
while True :
money = int( input( '돈을 넣어주세요 : ' ) )
if money == 300 :
print( '커피를 줍니다.' )
coffee = coffee - 1
elif money > 300 :
print( '거스름돈 %d를 주고 커피를 줍니다.' % ( money - 300 ) )
coffee = coffee - 1
else :
print( '돈을 다시 돌려주고 커피를 주지 않습니다.' )
print( '남은 커피의 양은 %d개입니다.' % coffee )
if coffee == 0 :
print( '커피가 다 떨어졌습니다. 판매를 중지합니다.' )
break
▶ 새 파일 생성 : while01.py
print( '시작' )
for i in range( 0, 10 ) :
if i == 5 :
# break
continue
print( i )
print( '끝' )
Python : 함수
▶ 새 파일 생성 : func01.py
- 함수의 생성과 호출
print( '시작' )
def func1() :
pass
def func2() :
print( '함수 호출' )
def func3( a ) :
print( '함수 호출 :', a )
def func4( a ) :
print( '함수 호출 :', a )
return a
func1()
func2()
func3( 10 )
print( func4( 20 ) )
print( '끝' )
▶ 새 파일 생성 : func02.py
- 변수의 영역에 따른 값에 주의한다.
print( '시작' )
a = 1
def func( a ) :
a = a + 1
print( 'a1 :', a )
func( a )
print( 'a2 :', a )
print( '끝' )
▶ 새 파일 생성 : func03.py
- global : 변수의 값 자체를 가지고 들어간다. 값 변동을 전체적으로 적용시킨다.
print( '시작' )
a = 1
def func() :
global a
a = a + 1
print( 'a1 :', a )
func()
print( 'a2 :', a )
print( '끝' )
▶ 새 파일 생성 : func04.py
- 변수에 값을 할당하면서 인자값으로 부여할 수 있다.
def func( a, b ) :
print( a, b )
a = 10
b = 20
func( a, b )
func( a = 100, b = 300 )
▶ 새 파일 생성 : func05.py
- *args의 타입은 tuple이다.
- 가변인자를 받아낼 수 있다.
def func( *args ) :
# print( type( args ) )
# print( args )
for arg in args :
print( arg )
func( 1 )
func( 1, 2 )
func( 1, 2, 3 )