2.01. 내용정리: 1일차
흔한 찐따 edited this page Mar 23, 2022
·
7 revisions
print
라는 함수를 통해 Hello, Python!
이라는 문장을 출력한다.
함수는 아래의 함수 문단을 참고.
print('Hello, Python!')
- 주석은 프로그래밍 코드에 설명을 하기 위한 용도로 사용한다.
- 프로그래밍 언어를 컴퓨터가 인식할 수 있는 언어(기계어)로 바꾸는 과정에서 소스 코드로 인식하지 않는다.
- 문법은 문장 앞에 샾(해시 태그) 기호
#
를 사용한다.
# 안녕하세요, 흔한 찐따입니다.
# 이것은 파이썬 주석입니다.
# print('Hello, Python!')
- 예전 파이썬 버전에서는 한글 주석을 사용하면 에러가 발생했었다.
- 이를 위해 파이썬 코드를 인코딩(encoding) 하기 위해 사용하기도 한다.
- 인코딩(encoding) 이란, 어떤 정보를 정해진 규칙(code)에 따라 변환하는 것(en-code-ing)을 일컫는다.
- 흔히 메모장이나 엑셀, 워드같은 파일을 열면 글자가 깨지는 경우가 있는데, 문자 인코딩 형식이 맞지 않아서 글자가 깨지는 것이다.
- 소스 코드의 가장 맨 윗줄에
# -*- 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!')
- 프로그래밍 언어에 미리 정의된 문법이다.
- 키워드와 같은 명칭을 변수로 사용할 수 없다.
- 파이썬에 있는 모든 키워드들은 아래의 코드를 입력하고 실행하여 확인할 수 있다.
import keyword
print(keyword.kwlist)
- 파이썬에는 여러 가지 데이터 타입이 존재한다.
-
a = 1
이라고 했을때,a
를 '변수'라고 하며, 정수(int) 타입이라고 한다. -
type
이라는 함수를 통해 데이터의 타입을 확인할 수 있다.- ex.
type(a)
- ex.
-
정수 (int): 음의 정수, 0, 양의 정수를 나타내는 숫자 타입이다. 여러 가지 진법 표현도 가능하다.
- 2진수:
0b숫자
또는0B숫자
를 사용해서 이진수를 표현한다.- ex.
0b1001
,0B1001
- ex.
- 8진수:
0o숫자
또는0O숫자
를 사용하여 표현한다.- ex.
0o177
,0O177
- ex.
- 16진수:
0x숫자
또는0X숫자
를 사용하여 표현한다.- ex.
0x8ff
,0X8FF
- ex.
- 2진수:
-
실수 (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)
- 여러 가지 타입의 데이터들을 보관할 수 있으며 컬렉션(Collection) 타입이라고도 한다.
- 컨테이너 타입 안에 들어있는 데이터 하나를 요소(Element) 라고 표현한다.
- 모든 컨테이너 타입은 내부가 비어있으면 논리적으로
거짓 (False)
으로 판단한다.
- 리스트 (list): 대괄호
[]
로 선언한다.- ex.
[1, 2, 3]
- ex.
- 튜플 (tuple): 괄호
()
로 선언한다.- ex.
(1, 2, 3)
- 괄호없이
a = 1, 2, 3
이런 식으로 선언할 수도 있다.
- ex.
- 집합 (set): 중괄호
{}
로 선언하지만, 단일 값만 존재한다.- ex.
{1, 2, 3}
- ex.
- 불변집합 (frozenset): 기본적으로 선언할 수 있는 기호가 존재하지 않는다.
- ex.
frozenset([1, 2, 3])
- ex.
- 사전(딕셔너리) (dict): 중괄호
{}
로 선언한다. 키와 값을 쌍으로 가진다.- ex.
{'a': 1, 'b': 2}
- ex.
- 범위 (range): 시작에서 끝까지 규칙성을 가지는 일정 범위를 나타낸다.
- ex.
range(1, 10)
- ex.
- 문자열 (str): 문자(character)들을 가지며, 큰 따옴표
"
혹은 작은 따옴표'
로 선언한다.- ex.
'Hello, Python!'
- ex.
- 수학처럼
f(x) = ax + b
와 유사한 형태를 가진다. -
def
키워드를 통해 함수를 선언한다. - 매개변수인
input
과 함수의 결과값인output
이 존재한다.
def f(x):
a = 2
b = 3
return a * x + b
lambda
라는 키워드를 통해 함수를 축약해서 표현하는 것이 가능하다.
a = 2
b = 3
f = lambda x: a * x + b
- 파이썬에는 여러 종류의 연산자들이 존재한다.
- 파이썬에서의 연산 순서는 왼쪽에서 오른쪽 순으로 연산한다.
기본적인 산술 연산을 위한 연산자이다.
연산자명 | 기호 |
---|---|
덧셈 | + |
뺄셈 | - |
곱셈 | * |
나눗셈 | / |
거듭 제곱 | ** |
몫 | // |
나머지 | % |
대입 연산자는 =
연산자이며, 수학에서의 '같다'라는 의미와는 달리 아래처럼 변수에 값을 할당할 때 사용하는 연산자이다.
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 |
-
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 |
삼항 연산자는 참일 경우 값 if 조건 else 거짓일 경우 값
의 형식으로 나타낸다.
- 연산 대상의 개수에 따라 연산자를 분리하면 단항 연산자, 이항 연산자, 삼항 연산자로 분리한다.
- 단항 연산자는
부호(+, -)
,not
등이 있으며+, -, *, / ....
등 대부분의 연산자가 이항 연산자다. - 삼항 연산자는 1개가 존재한다.
# 삼항 연산자
# 참일 경우 값 if 조건 else 거짓일 경우 값
print("True는 참" if True else "True는 거짓")
print("False는 참" if False else "False는 거짓")
포함 여부를 판단하는 연산자이며, 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)
비트(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
은 참으로 연산하여 결과를1
과0
으로 반환한다. -
^
(xor) 연산은 두 개의 값이 다를 때만 참인 연산이다. -
~
(not) 연산은 1의 보수를 구한다. (컴퓨터에서는 뺄셈을 2의 보수를 덧셈하여 처리한다.) -
<<
연산은 왼쪽으로 1비트 밀때마다 두 배씩 늘어난다. -
>>
연산은 오른쪽으로 1비트 밀때마다 1/2씩 줄어든다. - ex.
n << m
: n * 2의 m승 - ex.
n >> m
: n / 2의 m승
- 연산 순서를 잘못 이해하면 원하지 않는 결과를 나타낼 수 있다.
- 연산 순서를 변경할 때는 괄호
()
를 이용해야 한다.
순위 | 연산자 | 설명 |
---|---|---|
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 | 람다 표현식 |