자동화를 위한 Python 공부 2일차
제어문
- 알고리즘은 일처리 순서를 의미하고 알고리즘을 프로그램에 적용하기 위해 제어 구조를 구성한다.
- 제어 구조 종류
- 순차 구조 : 명령을 순차적으로 나열한 구조
- 선택 구조 : 조건 판단에 따른 제어 방향을 결정하는 제어 구조
- 반복 구조 : 일정 횟수 또는 조건에 따라 명령을 반복적으로 수행하는 구조
- 선택 구조
if ~ elif ~ else keyword 를 사용하여 구조를 구성
if gender:
if age > 20 and army:
print( '나이가 20세이상이고 군대 다녀옴' )
else:
print( '나이가 20세이상이고 군대 안다녀옴' )
else:
print( '미필' )
- 반복 구조 - for 문
range() 함수 : 반복 횟수를 정해주는 함수 , 반복에 따른 값을 발생 시켜주므로 반복 제어 변수에 저장해서 사용할 수 있다.
range( [ start ], stop, [ step ] )
start : 반복 시작값, 기본은 0, 생략 가능
stop : 반복 종료값, 반드시 기재,반복 종료값 전까지 반복
step : 반복 간격, 기본은 1, 생략 가능
# i : 반복 제어 변수, range() 함수의 결과를 기억
for i in range( 1, 10, 1 ):
print( i, end = '\t' )
* 반복 제어 변수 _(underbar) 를 사용할 수 있으며 이때 range() 함수 결과를 사용할 수 없다. 반복만 수행할 경우 활용하자
for _ in range( 11 ):
print( 'Python programming' )
- 중첩 for 문
print( '\t\t\tmultiple table\n' )
for i in range( 2, 10 ): # 바깥 for
for j in range( 1, 10 ): # 안쪽 for
print( i * j, end = '\t' )
print()
- while 문
조건이 참인 동안 반복 : while 문 , 반복횟수가 정해지지 않은 경우 사용
#while 문
i = 1 # 반복 제어 변수 생성( 초기값 부여 )
while i < 11: # 반복 조건 판단
print( i, end = '\t' )
i += 1 # 반복 제어 변수 변경
#중첩 while문
i = 2
print( '\t\t\tmultiple table\n' )
while i < 10:
j = 1 # reset
while j < 10:
print( i * j, end = '\t' )
j += 1
print()
i += 1
실습1) 10개 이내의 정수를 입력받아 평균을 출력하는 파이썬 스크립트
# 0. 변수 정의
MAX_DATA = 10 # Symbolic Constant, 의미화 상수
sum = 0 # 합계
i = 1 # 입력 데이터 count
# 1.1 정수 입력
print( '[ ', i, ' ] 번째 정수 입력( -1이면 종료 ) : ', end = '' )
number = int( float( input() ) )
# 1. 10개 이내 반복
while number != -1 and i < MAX_DATA:
# 1.2 합계 계산
sum += number
i += 1
# 1.1 정수 입력
print( '[ ', i, ' ] 번째 정수 입력( -1이면 종료 ) : ', end = '' )
number = int( float( input() ) )
# 2. 평균 계산
average = sum / ( i - 1 )
# 3. 결과 출력
print( 'average = ', average )
결과
[ 1 ] 번째 정수 입력( -1이면 종료 ) : 50
[ 2 ] 번째 정수 입력( -1이면 종료 ) : 50
[ 3 ] 번째 정수 입력( -1이면 종료 ) : 50
[ 4 ] 번째 정수 입력( -1이면 종료 ) : 50
[ 5 ] 번째 정수 입력( -1이면 종료 ) : 50
[ 6 ] 번째 정수 입력( -1이면 종료 ) : 50
[ 7 ] 번째 정수 입력( -1이면 종료 ) : 50
[ 8 ] 번째 정수 입력( -1이면 종료 ) : 50
[ 9 ] 번째 정수 입력( -1이면 종료 ) : 50
[ 10 ] 번째 정수 입력( -1이면 종료 ) : 50
average = 50.0
실습2) 10개 이내의 정수를 입력받아 양수와 음수의 개수를 세고, 양수일 때 짝수와 홀수의 개수를 세어서 출력하는 파이썬 스크립트
# Symbolic Constant
MAX_DATA = 10
END_DATA = -99999
count = 1 # 입력 데이터 갯수 저장
positive_count = 0 # 양수 갯수 저장
negative_count = 0 # 음수 갯수 저장
even_count = 0 # 짝수 갯수 저장
odd_count = 0 # 홀수 갯수 저장
error_count = 0 # 에러 데이터 갯수 저장
while True:
print( '[ ', count, ' ] 번째 정수 입력( -99999이면 종료 ) : ', end = '' )
number = int( float( input() ) )
if number == END_DATA:
break
if number != 0: # 입력 값 에러 확인
if number > 0: # 양수 처리
positive_count += 1
if number % 2 == 0:
even_count += 1
else:
odd_count += 1
else: # 음수 처리
negative_count += 1
else:
error_count += 1
print( '\nError : input zero\n' )
count += 1
if count > MAX_DATA:
count -= 1
break
print( '\n\ntotal input data : ', count, '\n' )
print( 'positive count : ', positive_count )
print( '\teven count : ', even_count )
print( '\todd count : ', odd_count )
print( 'negative count : ', negative_count )
print( '\nerror count : ', error_count )
결과
[ 1 ] 번째 정수 입력( -99999이면 종료 ) : 1
[ 2 ] 번째 정수 입력( -99999이면 종료 ) : 2
[ 3 ] 번째 정수 입력( -99999이면 종료 ) : 3
[ 4 ] 번째 정수 입력( -99999이면 종료 ) : -4
[ 5 ] 번째 정수 입력( -99999이면 종료 ) : 0
Error : input zero
[ 6 ] 번째 정수 입력( -99999이면 종료 ) : 6
[ 7 ] 번째 정수 입력( -99999이면 종료 ) : 7
[ 8 ] 번째 정수 입력( -99999이면 종료 ) : 8
[ 9 ] 번째 정수 입력( -99999이면 종료 ) : 9
[ 10 ] 번째 정수 입력( -99999이면 종료 ) : 10
total input data : 11
positive count : 8
even count : 4
odd count : 4
negative count : 1
error count : 1
시퀀스 자료형 개요
- 기본 자료형은 하나의 값(원시 자료)을 저장하는 변수를 생성할 때 사용한다.
- 문제 해결시 여러개의 값을 저장해서 처리해야 하는 경우가 많이 발생한다.
- 파이썬에서는 여러개의 값을 저장할 수 있는 자료형인 Sequence 자료형을 제공하고 있다.
- Sequence 자료형은 자료구조의 선형 구조와 같은 역할을 담당한다.
- Sequence 자료형 종류
- str (문자열) : 문자열 표현 자료형 , 불변 자료형 하나의 문자열(문자 집합) 표현에 사용하는 Sequence 자료형 기본 자료형에 가까운 Sequence 자료형
- tuple (튜플) : 여러 자료형 값을 저장할 수 있는 자료형 , 불변 자료형 , 저장된 데이터가 변경되지 않는다는 보장이 된다.
- list (리스트) : 여러 자료형 값을 저장할 수 있는 자료형 , 가변 자료형이며 가변이라는 의미는 무엇이냐 하면 자유롭게 값 추가/삭제/변경이 가능한 자료형이라는것을 의미한다.
- dict (dictionary) : Key : Value 형식으로 값을 저장하는 자료형 , 가변 자료형으로 검색기능을 적용할 때 유용하다.
- set (집합) : 중복없이 여러값을 저장하는 자료형 , 가변 자료형
- 불변 자료형 (immutable) : 저장된 값을 변경할 때 기존 값을 바꾸는 것이 아니고 새로운 기억 공간에 값을 저장하고 reference를 변경하는 자료형이다. ex) 기본 자료형 , str , tuple
- 가변 자료형 (mutable) : 저장된 값을 변경할 수 있다.
#str 변수 생성
name1 = '홍길동'
print('name = ', name1 , '\t[ ', type( name1 ) , ']')
# str 변수 생성 (형변환)
value = 100
value_str = str( value )
print( 'value_str = ' , value_str ,
'\t[',type(value_str),']' )
print( 'value_str = ', value_str , '\t[',id(value_str),']')
value_str = 'number:100'
print( 'value_str = ', value_str , '\t[',id(value_str),']')
# 기존 값을 지우고 채우는것이 아닌 새로운 공간을 형성하여 값을 채워준다
결과
name = 홍길동 [ <class 'str'> ]
value_str = 100 [ <class 'str'> ]
value_str = 100 [ 140166626835056 ]
value_str = number:100 [ 140166626853296 ]
시퀀스 자료형 공통 연산
- Sequence 자료형에 적용되는 공통적인 동작을 수행하는 연산
- indexing
- Sequence 자료형에 저장된 하나의 값에 접근할 때 사용하는 연산
- index 시작은 0부터 시작한다.
- index 끝은 전체 길이에서 1을 뺀값이다. (max_length - 1)
- [] 기호를 사용한다
- slicing
- Sequence 자료형에 저장된 값중 부분값을 사용하는 연산
- [start : stop : step] 형식으로 표현한다.
- start를 생략하면 0 , step을 생략하면 1이다.
- step에 -1을 부여하면 reverse 된다.
- 연결
- Sequence 자료형을 연결하여 길이를 늘리는 연산
- + 연산자를 사용한다.
- 반복
- Sequence 자료형에 저장된 값을 똑같이 복사하여 길이를 늘리는 연산
- * 연산자를 사용한다.
- 포함 유무 확인 -in 연산자
- Sequence 자료형에 저장된 데이터 갯수 계산 연산
- len()함수를 사용한다.
#indexing
print('>>>>>> indexing <<<<<<')
string = 'pythonPrograming'
print( 'string = ', string,
'\t[ ', id( string ),
'\t', type( string ), ' ]' )
print(string[ 0 ])
print(string[ 3 ])
print(string[ -1 ]) # reverse위치에서 첫번째
print(string[ -2 ])
#slicing
print('>>>>>> slicing <<<<<<')
print( 'string = ', string,
'\t[ ', id( string ),
'\t', type( string ), ' ]' )
print(string[ 0:5:1 ])
print(string[ :5: ])
결과
>>>>>> indexing <<<<<<
string = pythonPrograming [ 140166625857008 <class 'str'> ]
p
h
g
n
>>>>>> slicing <<<<<<
string = pythonPrograming [ 140166625857008 <class 'str'> ]
pytho
pytho
pytho
gnimargorPnohtyp
in
>>>>>> indexing <<<<<<
string1 : python
string2 : programming
pythonprogramming
python programming
>>>>>> 반복 <<<<<<
pythonpythonpython
pythonprogrammingprogramming
pythonprogrammingpythonprogramming
>>>>>> 포함유무 확인 <<<<<<
python programming hello world
True
False
True
>>>>>> 길이 계산 <<<<<<
string : python programming hello world
length : 30
yhnpormighlowrd
python programming hello world
d
print(string[ :5 ])
print(string[ ::-1 ]) # reverse
print(string[ -3:-1: ])
#연결
print('>>>>>> indexing <<<<<<')
string1 = 'python'
string2 = 'programming'
print( 'string1 : ', string1, '\nstring2 : ', string2 )
print( string1 + string2 )
print( string1 + ' ' + string2 )
#반복
print('>>>>>> 반복 <<<<<<')
print( string1 * 3 )
print( string1 + string2 * 2 )
print( ( string1 + string2 ) * 2 )
#포함유무 확인
print('>>>>>> 포함유무 확인 <<<<<<')
string = 'python programming hello world'
print( string )
print('python' in string)
print('pythin' in string)
print(not 'Hello' in string)
#길이 계산
print('>>>>>> 길이 계산 <<<<<<')
print( 'string : ', string, '\nlength : ', len( string ) )
print( string[ 1 :len( string ): 2 ] )
print( string[ :len( string ) ] )
print( string[ len( string ) - 1 ] )
시퀀스 자료형 - str
-문자 종류
- 단일 문자 - character
- 문자 집합(문자열) - string
- 문자열 값을 표현할 때 사용한 Sequence 자료형
- 파이썬에서 문자열 값(literal)은 ' , " , ''' , """ 로 묶어서 표현한다.
- 문자열 표현시 ''' , """ 로 묶어주면 white space 문자 또한 문자열에 포함된다.
- 파이썬 문자열은 UNICODE를 기본 encoding으로 사용하므로 한글 사용에 제약이 없다.
- str은 불변 자료형
- str 변수 사용
- 변수 생성 방법
- 문자열 생성 방법을 활용하여 str 변수 정의
- str() 함수를 이용하여 str로 형변환
- str 변수 Sequence 공통 연산
- indexing : 값 지정 목적 , 0 부터 시작 , -1은 reverse 시 처음위치를 표현
- slicing : 부분 위치의 값
- 연결 : str을 연결한다. +
- 반복 : str을 반복해서 표현한다. *
- 포함유무확인 : 문자열 in str(변수)
- 길이계산 : len() 함수 사용
- str을 이용한 문자열 formatting
- 기본 방식 문자열 : formatting
- %s : 문자열
- %d : 정수
- %f : 실수
- %10s : 전체 10자리에 문자열 formatting , 우측 정렬
- %-10s : 전체 10자리에 문자열 formatting, 좌측 정렬
- %3d : 전체 3자리에 정수 formatting
- %5.1f : 전체 5자리에 소수점 이하 1자리로 실수 formatting
- format() 메서드( method ) 이용 문자열 formatting
- {0:<10} : 0번 위치 내용을 전체 10자리에 왼쪽 정렬해서 formatting
- f-string 이용 문자열 formatting
- f’{<formatting할 내용/변수[ : 자리수 ] }’
기본 방식 문자열 formatting
name = '홍길동'
age = 25
gender = '남'
weight = 65.7
height = 180.3
fmt = '%10s %3d %2s %5.1fkg %6.1fcm' % ( name, age, gender,
weight, height )
print( fmt )
결과
홍길동 25 남 65.7kg 180.3cm
format() 메서드 이용 문자열 formatting
fmt = '{0:<10} {1:3} {2:2} {3:5.1f}kg {4:6.1f}cm'.format(
name, age, gender, weight, height
)
print( fmt )
결과
홍길동 25 남 65.7kg 180.3cm
f-string을 이용한 문자열 formatting
fmt = f'{name:<10} {age:3} {gender:2} \
{weight:5.1f}kg {height:6.1f}cm'
print( fmt )
결과
홍길동 25 남 65.7kg 180.3cm
print( f'{"이름":^10} : {name:<10}' )
print( f'{"나이":^10} : {age:3}' )
print( f'{"성별":^10} : {gender:2}' )
print( f'{"몸무게":^10} : {weight:5.1f}kg' )
print( f'{"키":^10} :{height:6.1f}cm' )
결과
이름 : 홍길동
나이 : 25
성별 : 남
몸무게 : 65.7kg
키 : 180.3cm
'Python & Automation' 카테고리의 다른 글
Python Study - day 6 (0) | 2022.02.01 |
---|---|
Python Strudy - day 5 (0) | 2022.01.31 |
Python Study - day 4 (0) | 2022.01.27 |
Python Study - day 3 (0) | 2022.01.27 |
Python study - day 1 (0) | 2022.01.25 |