코딩 테스트 스터디/엘리스 이론 강의

실습으로 배우는 파이썬 上 (프로그래밍 첫발 내딛기~모듈)

남쪽마을밤송이 2022. 2. 1. 05:20

 [01 프로그래밍 첫발 내딛기] 

파이썬 예약어

  • 파이썬 예약어는 변수명으로 사용할 수 없음
  • 예약어 확인 명령어
    import keyword
    print(keyword.kwlist)
    '''
    ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del',
    'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',
    'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
    '''

 [02 조건문, 반복문] 

for문 개념

  • for문은 특정 범위의 자료를 처음부터 끝까지 하나씩 사용하여 특정 코드를 반복적으로 실행하기 위해 사용
    # 문자열을 범위로 지정한 예
    str = 'abcdef'
    for alphabet in str:
        print(alphabet)
    
    # 리스트를 범위로 지정한 예
    list = [1, 2, 3, 4, 5]
    for num in list:
        print(num)
    
    # range()를  범위로 지정한 예
    for num in range(10):
        print(num)​
  • continue와 break를 사용하면 특정 조건에 따라 for문을 계속 수행하거나, for문을 벗어날 수 있음
    - continue : continue 이후 코드를 실행하지 않고 다음 반복문을 수행
    - break : for문 안에서 break를 만나면 다음 반복문을 벗어남
    scope = [1, 2, 3, 4, 5] # 1, 2, 3, 4, 5 담긴 리스트 생성
    for x in scope:         # x 값으로 1-5를 차례로 입력
        print(x)            # x 값을 출력
        if x < 3:           # x가 3보다 작을 경우
            continue        # 2번째 줄로 이동
        else:               # x가 3보다 클 경우
            break           # 반복문 종료
    '''        
    1
    2
    3
    '''​

while문 개념

  • for문이 지정된 범위 내에서 코드를 반복적으로 실행할 때 사용된다면, while문은 특정 조건이 만족 하는 경우 코드를 반복 수행
    # 예제 코드
    x = 0
    while x < 10:       # x가 10보다 작을 동안 반복
        x = x + 1       # x에 1을 더하기
        if x < 3:       # x가 3보다 작다면
            continue    # 두 번째 줄로 이동
        print(x)        # x가 3보다 같거나 클때, x 출력
        if x > 7:       # x가 7보다 클때,
            break       # 반복문을 종료합니다.​

 [03 자료형] 

정수형

  • 정수형은 우리가 잘 있는 10진수로 표현할 수 있을 뿐 아니라, 2진수, 8진수, 16진수로도 표현할 수 있음
  • 파이썬에서는 2진수 앞에는 0b, 8진수 앞에는 0o, 16진수 앞에는 0x를 붙여서 어떤 진법의 숫자인지를 구분
    int_data = 10
    bin_data = 0b10
    oct_data = 0o10
    hex_data = 0x10
    
    print(int_data) # 10
    print(bin_data) # 2
    print(oct_data) # 8
    print(hex_data) # 16​

실수형

  • 실수형은 소수점이 포함된 숫자를 말함
  • 2.59e10 혹은 2.59E10은 2.59 X 10^10을 의미하며 실수로 인식 (컴퓨터식 지수 표현 방식)
    f1 = 1.56e3
    f2 = -0.7e-4
    
    print(f1) # 1560.0
    print(f2) # -7e-05​

복소수

  • 실수부와 허수부로 나누어져 있는 수
  • 수학에서는 허수부를 i로 나타내지만 파이썬은 j로 나타냄
    ex) 수학적으로 표현된 복소수 3+4i는 파이썬에서는 3+4j로 표현
  • 뿐만 아니라 파이썬에서는 동일한 복소수를 complex(3, 4)와 같이 표현하기도 합니다.
  • 실수부 허수부 분리 : 변수 c에 복소수 3+4j가 저장되어 있다고 할 경우 c.real을 통해서 실수부 3을, c.imag을 통해서 허수부 4를 취할 수 있습니다.
    c1 = 1+7j
    c2 = complex(2, -3)
    
    print(c1.real)    #c1의 실수부 출력 | 1.0
    print(c1.imag)    #c1의 허수부 출력 | 7.0
    print(c2) # (2-3j)​

 [04 연산자] 

사칙 연산자

  • 파이썬에서 거듭제곱은 **로 표시함, 즉 수학에서 2의 3제곱 (2^3)은 파이썬에서 2**3으로 표시

관계 연산자

  • 문자열 값의 비교는 사전 순서와 동일, a로 시작 하는 단어가 b로 시작하는 단어보다 작다고 판단
    str1 = 'abc'
    str2 = 'python'
    
    print(str1 < str2) # True​

16진수

  • 16진법 표기법을 사용해서 출력하고 싶다면, hex(a)를 'print()에 인수로 넣어주기
    bit1 = 0x15
    
    print(bit1) # 21
    print(hex(bit1)) # 0x15

비트 연산자

  • & 연산자는 앞에서 배운 and 연산자의 비트 단위의 연산을 수행
  • 마찬가지로 |는 or 연산자 역할과 동일

 [05 시퀀스 자료형, 함수] 

시퀀스 자료 슬라이싱

  • 인덱싱이 하나의 요소 에 접근하기 위해 사용된다면, 슬라이싱은 시작 인덱스와 끝 인덱스를 지정하여 시퀀스의 일정 범위에 접근할 때 사용
    - 시작 인덱스 : 범위의 시작을 지정, 생략할 경우 자료의 처음부터 슬라이싱
    - 끝 인덱스 : 범위의 끝을 지정, 생략할 경우 자료의 끝까지 슬라이싱
    - 스텝 : 스텝은 자료를 취하는 간격을 뜻하며 생략할 경우 1로 지정
  • 슬라이싱 범위를 표현하는 다양한 방법
    - [m:n] : 인덱스가 m 이상 n 미만인 요소를 슬라이싱
    - [:n] : 인덱스가 n 미만인 요소를 슬라이싱
    - [m:] : 인덱스가 m인 요소부터 시퀀스의 끝까지 슬라이싱
    - [:] : 시퀀스의 처음부터 끝까지 모두 슬라이싱

요소 체크 (in)

  • 파이썬 키워드 in을 사용하면 시퀀스 자료에 특정 값이 존재하는지 확인할 수 있음
  • in의 사용 방법 : 값 in 자료
  • 해당 값이 시퀀스 자료 안에 존재할 경우 True를, 존재하지 않을 경우 False를 반환

문자열

  • 문자열은 따옴표 또는 큰따옴표를 이용해 선언할 수 있음
  • '''~''' 혹은 """~"""을 사용하면 입력한 문자열의 개행까지 그대로 출력할 수 있음

문자열 포맷팅

  • 문자열 포맷팅을 사용할 경우 문자열 내에 어떤 값을 쉽게 삽입하고, 문자열 내의 특정한 값을 쉽게 바꿀 수 있음
  • 두 개의 포맷 문자열을 사용할 경우 %(첫 번째 %s에 대입할 문자열, 두 번째 %s에 대입할 문자열)을 추가
  • 문자열 외에 다양한 값을 대입하는 것 또한 가능
    - %s: 문자열을 대입
    - %c: 문자 또는 기호 한 개를 대입
    - %c 맞으면 어뜩하지?' %'F'
    - %f: 실수를 대입
    - %d: 정수를 대입
  • %를 출력하고 싶은 경우 %%를 입력하면 하나의 %가 출력됨
  • 다른 언어와 다르게 ''나 "" 뒤에 ,를 넣지 않고 여러개의 포맷 문자열을 사용할 경우 모두 %()로 묶어줘야 함 
    txt1 = '자바'
    txt2 = '파이썬'
    num1 = 5
    num2 = 10
    
    # 1. '나는 자바보다 파이썬에 더 익숙합니다.'.
    print('나는 %s보다 %s에 더 익숙합니다.' %(txt1, txt2))
    
    # 2. '파이썬은 자바보다 10배 더 쉽습니다.'
    print('%s은 %s보다 %d배 더 쉽습니다.' %(txt2, txt1, num2))
    
    # 3. '5 + 10 = 15'
    print('%d + %d = %d' %(num1, num2, num1+num2))
    
    # 4. '작년 세계 경제 성장률은 전년에 비해 5% 포인트 증가했다.'
    print('작년 세계 경제 성장률은 전년에 비해 %d%% 포인트 증가했다.' %num1)​

이스케이프 문자

  • 이스케이프 문자를 사용하면 키보드로 입력하기 어렵거나 번거로운 기호를 나타낼 수 있음
    - \n : 줄 바꾸기
    - \t : 탭
    - \엔터 : 줄 계속
    - \\ : \ 기호
    - \" : “ 기호

 [06 함수] 

함수 인자 이해하기

  • 기본 인자
    def func(a, b):
        return a + b
    sum = func(1, 2)​
    - func(a, b)를 호출하면 a에 1을 b에 2를 순서대로 전달
    - 함수가 호출되면 두 인자 a, b를 더한 값 3을 sum에 저장
  • 키워드 인자
    def func(a, b):
        return a + b
    sum = func(b = 2, a = 1)​
    - 호출시 인자의 이름을 명시하여 인자의 값을 전달할 수 있음
    - 함수 func(a, b)를 호출하며 작성 순서에 관계 없이 a에 1을, b에 2를 전달
  • 가변 인자
    def func(*c):
        print(c)
    func(1,2,3,4,5) # (1,2,3,4,5)
    func(1,2,3) # (1,2,3)
    - 함수에 전달할 인자의 개수가 정해지지 않았을 때 인자 앞에 *를 붙여 함수를 선언
    - 여러개의 인자는 튜플로 전달됨

 [06 함수] 

지역변수, 전역변수

  • 지역변수 : 특정 함수 내에서만 유효한 변수로 함수 밖에서 사용될 수 없음
  • 전역변수 : 코드 전체에 걸쳐서 유효한 변수로 global 변수라고도 함
                  함수 내에서 전역(global)변수를 사용하려면 아래와 같이 변수 앞에global을 사용해야 함
    var1 = 1
    def func():
        global var1
        var1 = 2
        var2 = 1
        return var1 + var2

함수 리턴값

  • 함수의 리턴값은 여러 개일 수 있음
  • 리턴값이 여러 개일 경우 튜플로 리턴
    def reverse(x, y, z):
        return z, y, x
        
    ret = reverse(1, 2, 3)
    print(ret)  # (3, 2, 1)​

 [07 모듈] 

파이썬 모듈

  • 모듈은 이미 만들어져 있는 여러 함수를 특정 목적과 기능별로 묶어 놓은 파이썬 파일
  • 이 함수들을 사용하기 위해서는 먼저 import를 통해 해당 함수들이 저장된 모듈을 가져와야 함
  • 파이썬에서 사용 가능한 내장 모듈 확인 : https://docs.python.org/3/library/index.html
 

The Python Standard Library — Python 3.10.2 documentation

The Python Standard Library While The Python Language Reference describes the exact syntax and semantics of the Python language, this library reference manual describes the standard library that is distributed with Python. It also describes some of the opt

docs.python.org

  • 파이썬 내장 모듈 외에도 .py 파일로 직접 모듈을 만들 수 있음
    # mylib 모듈 가져오기
    import mylib
    
    # mylib의 add_num() 함수를 이용
    sum = mylib.add_num(2, 5, 9)​
  • from~import를 사용하면 모듈에 저장된 특정 함수를 임포트할 수 있음
  • from 모듈이름 import 함수이름의 형식을 취함
  • 이와 같이 특정 함수를 임포트하는 경우, 모듈 전체를 임포트할 때와 다르게 호출하는 함수의 앞에 모듈이름을 붙이지 않음
    # mylib 모듈에서 add_txt 함수를 임포트
    from mylib import add_txt
    
    # 함수를 호출
    print(add_txt('나는', '파이썬이다'))
  • 모듈의 이름이 길거나 구조가 복잡할 경우 import 모듈이름 as 별명으로 별명을 붙여 호출하면 보다 쉽게 모듈을 사용할 수 있음
    # math 모듈에 m이라는 별명을 붙여 호출
    import math as m
    # 축약된 별명을 사용
    print(m.floor(3.3))
    
    # thisismylibrary에 mylib이라는 별명을 붙여 호출
    import thisismylibrary as mylib
    # 축약된 별명을 사용하여 세 수의 합을 계산
    print(mylib.add_num(1, 2, 3))​