Skip to content

2.01. 내용정리: 1일차

흔한 찐따 edited this page Mar 23, 2022 · 7 revisions

Hello, Python! 출력하기

print 라는 함수를 통해 Hello, Python! 이라는 문장을 출력한다.

함수는 아래의 함수 문단을 참고.

print('Hello, Python!')

주석 (Comment)

  • 주석은 프로그래밍 코드에 설명을 하기 위한 용도로 사용한다.
  • 프로그래밍 언어를 컴퓨터가 인식할 수 있는 언어(기계어)로 바꾸는 과정에서 소스 코드로 인식하지 않는다.
  • 문법은 문장 앞에 샾(해시 태그) 기호 # 를 사용한다.

예시

# 안녕하세요, 흔한 찐따입니다.
# 이것은 파이썬 주석입니다.
# print('Hello, Python!')
  • 예전 파이썬 버전에서는 한글 주석을 사용하면 에러가 발생했었다.
  • 이를 위해 파이썬 코드를 인코딩(encoding) 하기 위해 사용하기도 한다.
    • 인코딩(encoding) 이란, 어떤 정보를 정해진 규칙(code)에 따라 변환하는 것(en-code-ing)을 일컫는다.
    • 흔히 메모장이나 엑셀, 워드같은 파일을 열면 글자가 깨지는 경우가 있는데, 문자 인코딩 형식이 맞지 않아서 글자가 깨지는 것이다.

인코딩(encoding) 예시

  • 소스 코드의 가장 맨 윗줄에 # -*- coding: 인코딩 형식 -*- 를 추가하면 된다.
    • UTF-8 형식으로 인코딩을 하는 경우, # -*- coding: utf-8 -*- 을 사용하면 된다.
  • 그러나 파이썬 버전이 업데이트가 되고 난 이후에는 굳이 추가하지 않아도 된다.
# -*- coding: utf-8 -*-
# 'utf-8'로 인코딩
# 안녕하세요, 흔한 찐따입니다.

파이썬의 문법과 구조

  • 파이썬의 문법은 문장의 구문(Statement; 논리적인 문법 단위)으로 구분짓는다.
  • 각 코드의 문장은 한 줄(line)로 구분짓는다.
  • 구문은 띄어쓰기(space) 4번 을 통해 들여쓰기를 해서 구분한다.
    • 구문은 띄어쓰기 2번, 탭(Tab) 기호를 사용해서 들여쓰기를 하는 것이 가능하지만, 파이썬에서 권장되는 방식이 아니라고 한다.
    • 만약, 띄어쓰기 2번이나 탭으로 구문을 작성한 경우, 작성되는 코드들 역시 같은 방식으로 모두 통일해야 한다.
  • 구문의 끝은 콜론 : 기호를 붙인다.
  • 구문 단위의 여러 코드 라인을 통틀어서 코드 블럭(code block) 이라고 한다.
  • 문장의 끝에 세미콜론 ; 기호를 붙여서 다음 문장을 이어서 작성할 수 있다.
    • 다만, 파이썬에서 권장되는 방식은 아니라고 한다.

예시

  • 아래는 구문 사용의 예시이다.
a = 1
# 다음 실행될 코드(문장)는 들여쓰기를 한 후에 코드를 작성한다.
# 여기서 'if'는 '키워드'라고 하며, 'if' 키워드로 작성된 구문을 '조건문'이라고 한다.
# 구문이 시작되므로, 문장 끝에 ':' 기호를 사용한다.
# 'if' 구문을 포함한 아래의 코드들을 코드 블럭이라고 한다.
if a == 1:
    # 논리적인 구분을 위해 띄어쓰기 4번을 한다.
    print('a is 1.')
    # 또다른 코드를 실행하려고 하는 경우, 들여쓰기를 한 뒤에 코드를 작성한다.
    if a == 1:
        # 논리적인 구분을 위해 또다시 띄어쓰기 4번을 한다.
        print('a is 1.')
  • 아래는 세미 콜론 ; 을 사용해서 코드를 작성한 예시이다.
print('Hello, '); print('Python!')

키워드 (keyword)

  • 프로그래밍 언어에 미리 정의된 문법이다.
  • 키워드와 같은 명칭을 변수로 사용할 수 없다.
  • 파이썬에 있는 모든 키워드들은 아래의 코드를 입력하고 실행하여 확인할 수 있다.

예시

import keyword
print(keyword.kwlist)

타입 (Type)

  • 파이썬에는 여러 가지 데이터 타입이 존재한다.
  • a = 1 이라고 했을때, a 를 '변수'라고 하며, 정수(int) 타입이라고 한다.
  • type 이라는 함수를 통해 데이터의 타입을 확인할 수 있다.
    • ex. type(a)

숫자 타입

  • 정수 (int): 음의 정수, 0, 양의 정수를 나타내는 숫자 타입이다. 여러 가지 진법 표현도 가능하다.
    • 2진수: 0b숫자 또는 0B숫자를 사용해서 이진수를 표현한다.
      • ex. 0b1001 , 0B1001
    • 8진수: 0o숫자 또는 0O숫자 를 사용하여 표현한다.
      • ex. 0o177 , 0O177
    • 16진수: 0x숫자 또는 0X숫자 를 사용하여 표현한다.
      • ex. 0x8ff , 0X8FF
  • 실수 (float): 정수에 소수점이 붙으면 실수 타입이다. 따라서 아래처럼 선언해도 실수 타입으로 간주된다.
    • 참고로, 실수는 부동 소수점(floating-point) 이라고 표현한다.
    • ex. 0.
  • 복소수 (complex): 실수부와 허수부를 나타낸다.
    • 파이썬에서의 복소수는 수학처럼 허수를 i 로 표기하지 않고 j 로 표기한다.
    • ex. 3 + 1j

진법 변환 예시

# 진법 초기화
a = 10
print(type(a), a)
a = 0b10
print(type(a), a)
a = 0o10
print(type(a), a)
a = 0x10
print(type(a), a)
print()

# 영문자를 대문자로도 사용이 가능하다.
a = 0B10
print(type(a), a)
a = 0O10
print(type(a), a)
a = 0X10
print(type(a), a)
print("-"*20)

# 출력
i = 0x100
print("i = ", i)
print("i = ", bin(i))
print("i = ", int(i))
print("i = ", oct(i))
print("i = ", hex(i))
print("-"*20)

# 문자열을 각 진법으로 변환
i = "111"
print("i = ", int(i))
print("i = ", int(i, 2))
print("i = ", int(i, 8))
print("i = ", int(i, 16))
print("i = ", int(i, 5))
print("-"*20)

논리 타입

  • 불 (bool): 참 (True)거짓 (False) 의 값을 가진다.
  • not 키워드를 사용하면 부정의 의미를 가진다.
    • 예시
a = True
b = not a

# True
print(a)
#False
print(b)
  • is 키워드를 통해 참과 거짓을 판단할 수 있다.
    • is 키워드는 아이디 연산자(Identity Operators) 이다.
    • 따라서 is 키워드는 변수의 id 값을 비교한다.
    • 예시
a = True
b = False

# False
print(a is b)
# True
print(a is not b)

컨테이너 (Container) 타입

  • 여러 가지 타입의 데이터들을 보관할 수 있으며 컬렉션(Collection) 타입이라고도 한다.
  • 컨테이너 타입 안에 들어있는 데이터 하나를 요소(Element) 라고 표현한다.
  • 모든 컨테이너 타입은 내부가 비어있으면 논리적으로 거짓 (False) 으로 판단한다.

컨테이너 타입의 종류

  • 리스트 (list): 대괄호 [] 로 선언한다.
    • ex. [1, 2, 3]
  • 튜플 (tuple): 괄호 () 로 선언한다.
    • ex. (1, 2, 3)
    • 괄호없이 a = 1, 2, 3 이런 식으로 선언할 수도 있다.
  • 집합 (set): 중괄호 {} 로 선언하지만, 단일 값만 존재한다.
    • ex. {1, 2, 3}
  • 불변집합 (frozenset): 기본적으로 선언할 수 있는 기호가 존재하지 않는다.
    • ex. frozenset([1, 2, 3])
  • 사전(딕셔너리) (dict): 중괄호 {} 로 선언한다. 키와 값을 쌍으로 가진다.
    • ex. {'a': 1, 'b': 2}
  • 범위 (range): 시작에서 끝까지 규칙성을 가지는 일정 범위를 나타낸다.
    • ex. range(1, 10)
  • 문자열 (str): 문자(character)들을 가지며, 큰 따옴표 " 혹은 작은 따옴표 ' 로 선언한다.
    • ex. 'Hello, Python!'

함수 (function)

  • 수학처럼 f(x) = ax + b 와 유사한 형태를 가진다.
  • def 키워드를 통해 함수를 선언한다.
  • 매개변수인 input 과 함수의 결과값인 output 이 존재한다.

예시

def f(x):
    a = 2
    b = 3
    return a * x + b

람다 (lambda)

lambda 라는 키워드를 통해 함수를 축약해서 표현하는 것이 가능하다.

예시

a = 2
b = 3
f = lambda x: a * x + b

연산자

  • 파이썬에는 여러 종류의 연산자들이 존재한다.
  • 파이썬에서의 연산 순서는 왼쪽에서 오른쪽 순으로 연산한다.

산술 연산자 (Arithmetic Operators)

기본적인 산술 연산을 위한 연산자이다.

연산자명 기호
덧셈 +
뺄셈 -
곱셈 *
나눗셈 /
거듭 제곱 **
//
나머지 %

대입 연산자 (Assignment Operators)

대입 연산자는 = 연산자이며, 수학에서의 '같다'라는 의미와는 달리 아래처럼 변수에 값을 할당할 때 사용하는 연산자이다.

a = 1
print(a)

복합 대입 연산자

  • 복합 대입 연산자란, 변수에 연산한 값을 바로 대입할 수 있는 연산자이다.
  • 연산자를 대입 연산자 = 와 복합해서 사용할 수 있다.

연산자 동치
a += b a = a + b
a -= b a = a - b
a *= b a = a * b
a /= b a = a / b
a %= b a = a % b
a //= b a = a // b
a **= b a = a ** b
a &= b a = a & b
a |= b a = a | b
a^= b a = a ^ b
a <<= b a = a << b
a >>= b a = a >>b

논리 연산자 (Logical Operators)

  • and : 논리곱
  • or : 논리합
  • not : 논리부정

진리표

a b a and b a or b not a
True True True True False
True False False True False
False True False True True
False False False False True

삼항 연산자 (Ternary operators)

삼항 연산자참일 경우 값 if 조건 else 거짓일 경우 값 의 형식으로 나타낸다.

특징

  • 연산 대상의 개수에 따라 연산자를 분리하면 단항 연산자, 이항 연산자, 삼항 연산자로 분리한다.
  • 단항 연산자는 부호(+, -) , not 등이 있으며 +, -, *, / .... 등 대부분의 연산자가 이항 연산자다.
  • 삼항 연산자는 1개가 존재한다.

예시

# 삼항 연산자
# 참일 경우 값 if 조건 else 거짓일 경우 값
print("True는 참" if True else "True는 거짓")
print("False는 참" if False else "False는 거짓")

멤버십 연산자 (Membership Operators)

포함 여부를 판단하는 연산자이며, in 키워드와 not 키워드를 조합하여 사용할 수 있다.

  • in 연산자 : 포함하는지 검사
  • not in 연산자 : 포함되어 있지 않은지 검사

예시

l = [2, 3, 4, 5, 6, 7, 8]
print(l)

result = '1은 있다' if 1 in l else '1이 없다'
print(result)

비트 연산자 (Bitwise Operators)

비트(bit) 단위로 연산을 수행한다.

기호와 설명

  • & (Binary AND) : bit 단위로 and 연산
  • | (Binary OR) : bit 단위로 or 연산
  • ^ (Binary XOR) : bit 단위로 xor 연산
  • ~ (Binary NOT) : bit 단위로 not 연산 (1의 보수)
  • << (Binary left Shift) : bit 단위로 왼쪽으로 비트단위 밀기 연산
  • >> (Binary right Shift) : bit 단위로 오른쪽으로 비트단위 밀기 연산

특징

  • 0 은 거짓으로, 1 은 참으로 연산하여 결과를 10 으로 반환한다.
  • ^ (xor) 연산은 두 개의 값이 다를 때만 참인 연산이다.
  • ~ (not) 연산은 1의 보수를 구한다. (컴퓨터에서는 뺄셈을 2의 보수를 덧셈하여 처리한다.)
  • << 연산은 왼쪽으로 1비트 밀때마다 두 배씩 늘어난다.
  • >> 연산은 오른쪽으로 1비트 밀때마다 1/2씩 줄어든다.
  • ex. n << m : n * 2의 m승
  • ex. n >> m : n / 2의 m승

연산자 우선 순위 (Operators Precedence)

  • 연산 순서를 잘못 이해하면 원하지 않는 결과를 나타낼 수 있다.
  • 연산 순서를 변경할 때는 괄호 () 를 이용해야 한다.

순위 연산자 설명
1 (), {}, [] 튜플(tuple), 집합(set), 리스트(list), 딕셔너리(dict)
2 collection[index] 컬렉션의 첨자
2 collection[index1, index2] 슬라이싱
2 function(aguments ...) 함수의 인수
2 object.attribute 객체의 속성 등
3 ** 거듭제곱
4 + , - , ~ 단항 연산자 (부호, bitwise not)
5 *, /, //, % 곱하기, 나누기, 정수 몫, 나머지
6 +, - 더하기, 빼기
7 <<, >> 시프트 연산
8 & bitwise and
9 ^ bitwise xor
10 in, not in 멤버 연산자
10 is, is not 아이디 연산자
10 <, <=, >, >=, ==, != 관계 연산자
11 not 논리 not
12 and 논리 and
13 or 논리 or
14 if else 삼항 연산자
15 lambda 람다 표현식

흔한 찐따

안녕하세요, 흔한 찐따 입니다.

Clone this wiki locally