반응형

 파이썬 기초#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

 

내장 함수 — Python 3.9.5 문서

내장 함수 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있습니다. 여기에서 알파벳 순으로 나열합니다. abs(x) 숫자의 절댓값을 돌려줍니다. 인자는 정수, 실수 또는 __

docs.python.org


<문자열 검색 관련 함수들>
문자열에 내용을 검색하여 알려주는 기능의 함수 들입니다. 
함수의 이름은 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 루프 문에서 사용하던 문법도 동일하게 적용가능합니다. 

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???)    어휴....  생각만해도 손목의 피로도가... )

range( )함수를 이용하면 많은 수의 요소를 직접 입력하지 않아도 된다


[ 리스트와 튜플 데이터의 상호 변환이 가능합니다! ]

아래처럼   list(  ) 함수와,  tuple( ) 함수를 이용하면, 리스트 데이터를 튜플데이터로, 튜플데이터를 리스트 데이터로 상호 변환이 가능합니다.

리스트와 튜플 데이터의 상호 변환

 

[ 문자열을 리스트와 튜플 데이터로 저장하기! ]
아래처럼, 문자열을 하나하나 떼어 리스트 데이터나 튜플 데이터로 각각 저장 가능합니다. 

문자열을 리스트와 튜플 데이터로 저장하기!

 

[ range (  ) 함수 의 범위 거꾸러 지정하기 ]
 
range 함수 원형 :  range( 초기값, 최종값, 증가값)  - 증가값은 생략가능(1씩 증가)

range 함수의 범위를 거꾸로 넣기 위해 range (10, 1) ,  또는 range(10, 1, 1) 로 해서는 안 됩니다.  
range 함수 원형을 보면, 생략가능한 세번째 요소가 기본적으로 증가값 이기 때문에, 초기값 10에서 1까지 증가 시킬 수는 없기 때문입니다.  만약 이렇게 하면 비어 있는 값으로 저장됩니다. 
따라서, 아래 이미지 처럼, -1, 또는 -2처럼 음수 값의 감소값을 주어야 합니다. 

range 함수의 범위를 거꾸로 넣기 위해서는 세번째 요소를 음수로 주어야 함

 

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. 매개변수에 디폴트 값 지정하기 >
: 사용자 정의 함수에서 매개변수에 디폴트 값을 지정해 줄 수 있습니다. 
단, 디폴트 값이 있는 매개변수 항목은 디폴트 값 없는 항목 뒤에 위치해야 합니다. 

 

반응형