KIC 백엔드 수업

6월 23일 (금) - [ 복합 자료형 : Tuple, Dictionary / 제어문 : if, while, for / 주민등록번호 검사기 / 함수 ]

Crecok 2023. 6. 23. 12:22
반응형

 

이전 수업 개념

 

 

▶ 자료형 (객체)

- 함수와 메서드를 사용할 수 있다.

- 단일 자료형 ( 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 )

 

반응형