【 파이썬 기초#6】 파이썬 기초 한방에 정리하기! #2편 , 조건문-함수편-기타 핵심 요약, 총정리!
(내용은 게시글 마지막 부분부터 계속 추가 예정입니다 , 마지막 편집일: 21.08.08)
아래 1편의 내용을 먼저 참고하세요
▶ 파이썬 한 방에 정리 1편 보기 : https://rasino.tistory.com/333
▶ 파이썬 한 방에 정리 3편 보기 : https://rasino.tistory.com/338
1. 《 if 문 》
: 조건이 맞으면 실행을 하라~!
"if 조건 : " 문은 if 뒤에 조건이 맞으면(true) if 문에 속해 있는 문장들을 실행하게 됩니다.
파이썬에서는 C언어에서 처럼, if문에서 { 중괄호 } 같은 것을 사용하지 않고, 인터프리터 언어의 특성인 한 줄씩 처리되도록 하기 위해 ' : ' 콜론을 사용합니다.
그렇기 때문에, if문에 속해 있는 문장들은 모두 들여 쓰기(탭키, 혹은 보통 4칸)를 하여 구분합니다.
또한, 파이썬은 유연성이 좋아 위 예시처럼 한 줄에 출력까지 기술해 줄 수 있습니다.
2. 《 if ~ else 문 》
: 조건이 참(True)이면 실행할 코드와, 조건이 거짓(False)이면 실행할 코드를 구분하여 작성할 때, 사용하게 됩니다.
if <조건> :
(조건이 True 참이면 실행할 문장들 ... )
else :
(조건이 False 거짓이면 실행할 문장들 ... )
- def '함수명( )' 은 사용자 정의 함수입니다.
- num = int (input(" 입력....: ")) >> 화면에 숫자를 입력받을 때, 글자를 출력하고, 입력받은 숫자(문자)를 정수형으로 처리하여 num이라는 변수에 대입하는 형태를 많이 사용합니다.
3. 《 if ~ elif ~ else 문 》
: 조건이 여러개인 상황에서 하나를 선택하도록 할 때 사용하게 되는 코드 유형입니다.
if <조건 1> :
(조건 1이 True 참이면 실행할 문장들... )
elif <조건 2> :
(조건 2가 True 참이면 실행할 문장들... )
elif ...
else :
(위의 모든 조건이 False 거짓이면 실행할 문장들... )
< 아래 예제 코드를 참고하세요 >
※ if 문의 기본 구조는 , if 《 조건 》입니다. 그래서 조건이 참(True)이면, if : 문에 속해 있는 내용들이 실행되며, 조건이 거짓(False) 이면, 실행되지 않습니다.
그럼 여기서, 조건의 기준인 True와 False 가 되는 기준이 있다는 것을 알 수 있습니다.
Bool 값인 'False'와 숫자 '0' 그리고 ' ' 공백은 False로 처리되며, 이것 이외의 모든 것 들은 True로 처리됩니다.
예를 들어, 논리 값 'True' , 숫자 '1' 뿐 아니라, '2', '3', ... , 영문자 'A' , 'a', 'b', 등등 모두 True로 처리되어, if 문에 속한 코드들이 실행됩니다.
3. 《 if 문과 논리 연산자 》
: if 문에서 하나 이상의 조건을 비교해야 할 때, 논리 연산자를 사용하여 처리할 수 있습니다.
아래가 사용할 수 있는 논리 연산자입니다.
연산자 | 설명 | 예시 | |
and | 두 조건이 모두 참인 경우 성립되는 연산자. |
if a == 1 and b== 2 : print("OK") : a가 1이고, b가 2 모두를 만족할 때 print문이 실행됩니다 |
|
or | 두 조건 중 하나라도 참이면 성립되는 연산자. |
if a == 1 or b== 2 : print("OK") : a가 1이거나, 또는 b가 2라면, 둘 중 하나만 만족한다면 print문이 실행됩니다 |
|
not | 조건을 반대로 뒤집는 연산자. |
if not a == 1 : print("OK") : a가 1이 아니라면, print문이 실행됩니다 |
물론, 위의 연산자 여러 개를 조합하여 사용 가능합니다.
그 밖에, 아래 비교 연산자를 활용할 수 있습니다.
연산자 | 설명 |
== | 같다 |
!= | 다르다 (같지 않다) |
< | 좌변이 우변보다 작다 |
> | 좌변이 우변보다 크다 |
<= | 좌변이 우변보다 작거나 같다 |
>= | 좌변이 우변보다 크거나 같다 |
4. 《 in과 not in 연산자 》
: 리스트 혹은 문자열에 해당 문자(숫자)가 있는지? 확인하여 참(True) 또는 거짓(False)으로 반환합니다.
in과 not in 연산자는 뒤에 for 문과 if문에도 사용되니 기억해 두세요.
1. x in str : str에 x가 있으면 True, 없으면 False를 반환
2. x not in str : str에 x가 없으면 True, 있으면 False를 반환
5. 《 for 루프 》
: for 루프 문의 기본 골격은 아래와 같습니다.
for 《변수》 in 《범위》 :
<for에 속하는 문장들...>
<for에 속하는 문장들...>
<예시>
또는 위에 범위에 해당되는 부분을 range( )로 표시하여 아래처럼 줄여 표현할 수 있습니다.
6. 《 while 루프 》
: while 루프문의 기본 골격은 아래와 같습니다.
while 《 조건 》 :
<조건이 True인 경우 동안 계속 반복 실행될 코드들...>
<조건이 True인 경우 동안 계속 반복 실행될 코드들...>
<예시>
7. 《 break 》
: while 루프 문이나, for 루프문에서 사용할 수 있으며, break가 실행되면, 해당 루프 문을 종료하고 빠져나오게 됩니다.
<예시>
8. 《 continue 》
: while 루프문이나, for 루프문에서 사용할 수 있으며, while문이나, for 루프문 속에서 continue 문장을 만나면, continue 문 아래 문장들은 실행되지 않으며, while문이나 for문의 다음 반복으로 계속 이어집니다.
<예시>
continue문을 이용하여 < 1에서 10까지 홀수만 출력하기 > & <1에서 10까지 짝수만 출력하기 >
9. 《 for문 이중 루프 》
: for 루프문을 이중으로 이용할 수 있으며, 이중으로 반복해야 하는 곳에 사용하게 됩니다.
아래, 구구단을 예시로 들겠습니다.
< 파이썬 구구단 >
>>> < 구구단 2단부터 9단까지 한 단씩 세로로 출력하기 >
>>> for dan in range(2, 10):
print("=====",dan,"단=====")
for hang in range(1, 10):
print(dan," * ", hang,"=",dan*hang)
print() # 한 줄 띄움
※ 그럼, 이번에는 구구단을 가로로 한 번에 출력해 볼게요.
>>> < 구구단 2단부터 9단까지 가로로 한 번에 출력하기 >
>>>def gugudan() :
print (" ====== 구구단 가로로 출력하기 =====")
for hang in range(1, 10) :
for dan in range(2, 10):
print(dan,"*",hang,"=",dan*hang," | ",end="\t")
print()
위와 같이 "\t" 탭 출력을 이용해서 가로로 출력이 잘 되었습니다.
그런데, 약간의 문제는 두 자릿수 값 출력의 경우 출력 자리가 밀려서 정렬이 깔끔하게 되지 않는데요,
이때는, print문의 출력 형식을, C언어에서와 같은 형식으로 정수의 자리를 지정하여 출력하면 해결할 수 있습니다.
< 구구단, 출력 정렬하여 가로로 출력하기 >
>>>def gugudan() :
print (" ====== 구구단 가로로 자리 정렬하여 출력하기 =====")
for hang in range(1, 10) :
for dan in range(2, 10):
print("%d * %d = %2d | "%(dan, hang, dan*hang), end="\t")
print()
>>> gugudan()
10. 《 pass 》
: 파이썬에서는 아무 기능을 하지 않는 빈 코드의 역할로 pass 키워드를 사용합니다.
보통 C언어의 비어있는 코드의 역할로 { } 중괄호를 사용하는데, 파이썬에서는 { } 중괄호를 사용하지 않기 때문에, pass라는 키워드를 사용합니다.
pass는 코드가 다소 복잡하거나 사이즈가 어느 정도 되는 코드를 작성할 때 나중에 완성할 함수 같은 부분에 pass를 넣어놓고 최소한의 구조를 완성시켜 놓고 작업하게 되는데, 이러면 나중에 완성해야 할 부분에 대한 표시도 되고, 다른 코드 부분을 테스트하기에도 방해되지 않아 편합니다.
< 예시 >
score = 100
if score >= 80 :
else:
이와 같이 작성한다면, 나중에 작성한다 하더라도, 우선적으로 구문 형식이 맞지 않고, 다른 부분 에러 테스트에도 이 부분 때문에 에러가 발생하여 불편을 주게 됩니다.
이럴 때, 아래처럼 우선 아무 역할도 하지 않는 pass를 넣어 작업을 진행하면 됩니다.
score = 100
if score >= 80 :
pass
else :
pass
11. 《 함수 》
: 함수는 반복적으로 처리해야 하는 부분을 함수로 만들어 놓고 호출하게 되면, 소스코드가 짧아지고, 크기도 줄어들기 때문에 많이 활용하게 됩니다. 이를 사용자 정의 함수라고 하며, def ... 형식으로 만들어 사용할 수 있습니다.
또한 이미 통상적으로 사용되는 기능들을 함수로 만들어 놓았는데, 이를 내장 함수라 칭합니다.
내장 함수이기 때문에, 별도의 import 문을 사용하여 라이브러리를 추가하지 않고 바로 사용가능합니다.
< 파이썬 내장 함수 >
파이썬 내장 함수들 ( Built-in Functions ) | ||||
abs( ) | dict( ) | help( ) | min( ) | setattr( ) |
all( ) | dir( ) | hex( ) | next( ) | slice( ) |
any( ) | divmod( ) | id( ) | object( ) | sorted( ) |
ascii( ) | enumerate( ) | input( ) | oct( ) | staticmethod( ) |
bin( ) | eval( ) | int( ) | open( ) | str( ) |
bool( ) | exec( ) | isinstance( ) | ord( ) | sum( ) |
bytearray( ) | filter( ) | issubclass( ) | pow( ) | super( ) |
bytes( ) | float( ) | iter( ) | print( ) | tuple( ) |
callable( ) | format( ) | len( ) | property( ) | type( ) |
chr( ) | frozenset( ) | list( ) | range( ) | vars( ) |
classmethod( ) | getattr( ) | locals( ) | repr( ) | zip( ) |
compile( ) | globals( ) | map( ) | reversed( ) | __import__( ) |
complex( ) | hasattr( ) | max( ) | round( ) | |
delattr( ) | hash( ) | memoryview( ) | set( ) |
내장함수 각각에 해당하는 설명은, 공식 사이트의 링크 설명을 참조해보세요.
링크 : https://docs.python.org/ko/3/library/functions.html
<문자열 검색 관련 함수들>
문자열에 내용을 검색하여 알려주는 기능의 함수 들입니다.
함수의 이름은 is xxx ( )의 조합으로 이해하면 기억하기 쉽습니다.
함수 | 설명 | ||
isalpha( ) | 모든 문자가 알파벳인지 조사합니다. | ||
islower( ) | 모든 문자가 소문자인지 조사합니다. | ||
isupper( ) | 모든 문자가 대문자인지 조사합니다. | ||
isspase( ) | 모든 문자가 공백인지 조사합니다. | ||
isalnum( ) | 모든 문자가 알파벳 또는 숫자인지 조사합니다. | ||
isdecimal( ) | 모든 문자가 숫자인지 조사합니다. | ||
isdigit( ) | 모든 문자가 숫자인지 조사합니다. | ||
isnumeric( ) | 모든 문자가 숫자인지 조사합니다. | ||
isidentifier( ) | 명칭으로 쓸 수 있는 문자로만 구성되어 있는지 조사합니다. | ||
isprintable( ) | 인쇄 가능한 문자로만 구성되어 있는지 조사합니다. |
위와 같은 함수는 사용자로부터 특정 값을 입력받았을 때, 입력값이 숫자로만 이루어져야 한다든지? 알파벳 소문자로만 이루어져야 한다든지? 특수문자가 있으면 안 된다든지? 등과 같은 상황에서 체크를 쉽게 할 수 있어 활용성이 좋습니다.
<예시 : 사용자 입력값에 숫자만 허용하고자 할 때>
12. 《 튜플과 리스트 》
: 튜플은 리스트[list] 처럼 파이썬이 인식하는 데이터의 한 종류입니다. 리스트와 비슷한점이 있지만, 결정적인 차이가 있습니다.
- 리스트와 튜플은 모두 하나 이상의 값을 묶는 용도로 사용합니다.
- 리스트는 [ 1, 2, 3, ... ] 중괄호를 사용하고, 튜플은 ( 1, 2, 3, ... ) 소괄호를 사용합니다.
- 리스트는 아래 이미지처럼, 요소를 추가하거나 다른 값으로 수정이 가능합니다.
- 하지만, 튜플은 값을 참조하는 것은 가능하지만, 처음 정해진 값의 요소를 수정 변경할 수 없는 차이가 있습니다.
- 이렇듯 튜플은 리스트에 비해 유연하지도 않고, 리스트형만 있어도 될 것 같지만, 분명한 쓰임새가 있습니다.
- 예를 들어, 생년월일 정보나, 고유 ID 요소 등, 의도하지 않은 조작에 의해 요소값이 변경되어서는 안 되는 데이터 유형에 사용할 수 있습니다.
- 리스트관련 사용가능한 함수와 연산에 대해서는 앞선 내용에서 많이 다루었는데요, 그럼 튜플 관련 함수와 연산에 대해 살펴볼게요. 여기서 리스트 데이터형에 사용된 함수의 대부분이 튜플에도 그대로 적용되는 경우가 많습니다.
함수 | 설명 | |
len(x) | 튜플 x의 길이(요소의 개수) 반환 | |
min(x) | 튜플 x의 요소 중에서 가장 작은 값 반환 | |
max(x) | 튜플 x의 요소 중에서 가장 큰 값 반환 | |
s.count(x) | 튜플 s에 저장된 요소 중에서 x의 개수 반환 | |
s.index(x) | 튜플 s에 저장된 요소 중 첫 번째 x의 인덱스 값 반환 |
그리고, 튜플은 리스트와 마찬가지로 아래와 같은 연산이 가능하다.
위 연산에서 보면, Tpl + (6, 7) 연산의 결과로 기존 튜플에 요소가 추가(변경) 된 것으로 보이지만, 다시 Tpl을 출력해보면, 기존 값(1, 2, 3, 4, 5)이 그대로 있으며, 수정된 것이 아니라 새로운 튜플이 만들어 진 것입니다. 그래서 이를 Tpl2에 저장해서 보여준 것입니다. 기타 리스트에서 가능했던 * 곱하기 연산이나 [2:6] 인덱스 값 읽기 등 수정되지는 않지만 모두 동일하게 가능합니다.
그리고 아래처럼 for 루프 문에서 사용하던 문법도 동일하게 적용가능합니다.
단, 아래와 같은 range ( ... ) 함수는 튜플이 아니라 range( ) 라는 자체 함수를 참조 사용한 것입니다.
range 함수 원형 : range( 초기값, 최종값, 증가값) - 증가값은 생략가능(1씩 증가)
그런데, range( .... ) 함수가 없다면, 예를들어, 1에서 100까지의 수를 리스트나 튜플로 참조하려면 매우 짜증?이 나겠지요? (ex, for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, .... ] )
그래서 range ( ) 함수를 사용하면 간단히 해결 되며, step 간격도 넣어 줄 수 있습니다.
- 또한 아래처럼, range( ) 함수를 이용하면, 매우 긴 연속된 수를 간단히 리스트나 튜플로 만들 수 있습니다.
(예, 만약 1~100까지의 수를 리스트 변수나, 튜플 변수의 요소로 만든다고 한다면, Lst = [1, 2, 3, 4, 5.... 100??? ],
Tpl = (1, 2, 3, 4, 5, ... 100???) 어휴.... 생각만해도 손목의 피로도가... )
[ 리스트와 튜플 데이터의 상호 변환이 가능합니다! ]
아래처럼 list( ) 함수와, tuple( ) 함수를 이용하면, 리스트 데이터를 튜플데이터로, 튜플데이터를 리스트 데이터로 상호 변환이 가능합니다.
[ 문자열을 리스트와 튜플 데이터로 저장하기! ]
아래처럼, 문자열을 하나하나 떼어 리스트 데이터나 튜플 데이터로 각각 저장 가능합니다.
[ range ( ) 함수 의 범위 거꾸러 지정하기 ]
range 함수 원형 : range( 초기값, 최종값, 증가값) - 증가값은 생략가능(1씩 증가)
range 함수의 범위를 거꾸로 넣기 위해 range (10, 1) , 또는 range(10, 1, 1) 로 해서는 안 됩니다.
range 함수 원형을 보면, 생략가능한 세번째 요소가 기본적으로 증가값 이기 때문에, 초기값 10에서 1까지 증가 시킬 수는 없기 때문입니다. 만약 이렇게 하면 비어 있는 값으로 저장됩니다.
따라서, 아래 이미지 처럼, -1, 또는 -2처럼 음수 값의 감소값을 주어야 합니다.
13. 《 함수 만들기 》
: 파이썬에서 함수 만들기에 대해 다루어 보겠습니다. 파이썬에서 함수를 'def' 라는 표시자를 사용하여 함수를 정의하고, 함수명 예를 들어 Hello( )을 정하고 ' : ' 콜론을 붙여서 그 아래 줄부터 함수의 내용을 넣으면 됩니다. 그리고 함수명 Hello( )를 호출 하여 사용할 수 있습니다.
⊙ 함수의 유형은 대략 아래 세가지로 분류할 수 있습니다.
1. 아무 값도 전달 받지 않는 함수
2. 값을 전달받는 함수
3. 값을 반환하는 함수 (return 명령을 갖는 함수)
먼저 1번 함수의 예시는 아래와 같습니다.
<1. 아무 값도 전달 받지 않는 함수 예시>
<2. 값을 전달 받는 함수 예시>
두 번째 함수 유형으로, 인자 값을 전달만 받고 처리하는 함수의 유형입니다. 함수를 호출 할 때, 인자값 또는 인수값이라 불리우는 영어로 argument 를 전달해 주고 , 함수에서는 이 값을 처리해서 출력하거나 하며 결과값은 되돌려 주지 않는 형태의 함수 유형입니다. 아래 예시에서는 결과값 확인을 위해 print문을 사용했으나, 보통은 처리만 하고 아무결과도 반환하지 않도록 작성할 수 있습니다.
<3. 값을 전달(반환) 받는 함수 예시>
일반적으로 인자값을 매개변수를 통해 전달받아 처리하고 'return' 명령어를 통해 결과값을 반환하는 유형의 함수입니다.
<4. 매개변수 값 이름을 지정하여 전달하기 >
함수내에서 지정한 매개 변수 이름과 순서대로 전달해야 원하는 출력을 얻을 수 있습니다.
만약, 함수에서 정의한 순서를 무시하고 바꾸면, 아래처럼, 원하지 않는 결과를 얻을 수 있습니다.
그래서, 아래 처럼, 매개변수를 직접 지정해서 전달 할 수도 있습니다.
이렇게 지정하게 되면, 매개 변수 입력 순서에 상관 없이 전달 할 수 있게 됩니다 .
print 문도 일종의 함수 이며, 사용자 정의 함수가 아닌, 내장함수 입니다. 여기에도, 매개 변수가 사용되는데요,
end 라는 매개 변수는 출력문 내용 끝에 출력을 지정할 수 있습니다.
- end =' ' → print 함수의 경우 기본적으로 이렇게 단따옴표''혹은, 공백이 있는 단따옴표를 매개변수를 넣게 됩니다
- end ='' → 출력 결과는 공백이 없어도, 더 많은 공백을 넣어도 동일하게 처리 됩니다.
- end =')^^(' → end 문에 특정한 문자를 넣으면 해당 문자로 마무리 됩니다.
- sep ='/ ' → sep은 separator 구분자로 출력 내용 사이에 출력하여 구분시켜 줍니다.
또한, 이 둘을 같이 사용할 수 있습니다. 아래 예시들을 참고해 보세요.
<5. 매개변수에 디폴트 값 지정하기 >
: 사용자 정의 함수에서 매개변수에 디폴트 값을 지정해 줄 수 있습니다.
단, 디폴트 값이 있는 매개변수 항목은 디폴트 값 없는 항목 뒤에 위치해야 합니다.