Supplementary Materials
MIT OpenCourseWare - Intro to CS & Programming in Python
1. What is Computation?
1. 자료형 (Data Type)
파이썬은 변수에 저장되는 값에 따라 자료형이 결정된다.
Python 프로그램이 다루는 모든 데이터는 자료형을 가진 객체이며, 각 객체에는 가능한 연산을 결정하는 자료형이 있다.
type()으로 객체의 자료형을 확인할 수 있다.
type(5) # int
type(3.0) # float주요 스칼라 자료형
- int (integer; 정수): 소수점 없는 숫자 (예:
100,-5) - float (floating-point; 실수): 소수점 있는 숫자 (예:
3.14,10.0) - bool (부울): 참·거짓 (예:
True,False) - NoneType: 값이 없음을 나타내는 특수 형식 (예:
None)
주요 시퀀스 자료형
- list (리스트)
- tuple (튜플)
- string (문자열): 따옴표로 감싸진 문자들의 나열 (예:
"Hello",'Python')
자료형 변환도 가능하다.
float(3) # 3.0
int(3.9) # 3 (소수 부분을 잘라냄)객체의 특징
불변 객체 (Immutable)
- 정수, 실수, 문자열, 튜플 등은 한 번 생성되면 값을 변경할 수 없음
- (값이 바뀌면 새로운 객체가 생성됨)
가변 객체 (Mutable)
- 리스트, 딕셔너리 등은 값을 변경 가능함
2. 표현식과 연산자
객체와 연산자를 결합하면 표현식이 된다.
- 모든 표현식은 값과 자료형을 가진다.
- 표현식은 계산되어 하나의 값을 만든다.
연산자
| 기호 | 연산자 | 사용례 | 결괏값 | 복합 연산자 |
|---|---|---|---|---|
* | 곱셈 | 2*7 | 14 | *= |
** | 지수(power) | 2**7 | 128 | - |
/ | 실수 나눗셈 | 7/4 | 1.75 | /= |
// | 정수 나눗셈 | 7//4 | 1 | - |
& | 나머지 | 7%4 | 3 | %= |
산술 연산자
- 사칙연산
+,-,*,/(나눗셈, 실수 결과) **(거듭제곱/지수)//(정수 나눗셈, 몫)%(나머지)
연산 우선순위
- 기본적으로 괄호
()→ 거듭제곱**→ 곱셈·나눗셈*,/→ 덧셈·뺄셈+,-순으로 계산된다. - 같은 우선순위의 연산은 일반적으로 왼쪽부터 수행된다.
표현식
| 표현식 | 의미 |
|---|---|
i + j | 덧셈 |
i - j | 뺄셈 |
i * j | 곱셈 |
i / j | 나눗셈, 결과는 float |
i % j | 나머지 |
i ** j | 거듭제곱 |
cf.
import math를 통해 삼각함수, 제곱근, 로그함수 등을 사용할 수도 있다.
math.sqrt(9.0),math.log(1.0)등
3. 변수와 할당
변수 할당은 이름과 값을 연결하는 동작이며 수학의 등식과 다르다.
할당 연산
할당 연산자 = (Assignment Operator; 또는 대입 연산자)
=는 수학의 등식이 아니라, 오른쪽 값을 왼쪽 이름에 연결하는 할당 연산자이다.
pi = 3.14159
radius = 2.2
area = pi * radius**2다중 할당
x = y = z = 0(여러 변수 초기화)x, y = 10, 20
값 교환
x, y = y, x(파이썬 특유의 편리한 기능)
복합 대입 연산자
+=,-=,*=,/=등- (예:
x += y는x = x + y와 동일)
변수
변수 (Variable)
- 변수를 사용하면 값을 저장하여 재사용할 수 있고, 나중에 코드를 쉽게 변경할 수 있다.
- 컴퓨터의 메모리 공간에 이름을 붙이는 것이다.
- 별도의 선언 없이, 변수에 값을 할당(
=)하면 자동으로 생성된다.
- 프로그래밍의 변수는 수학의 미지수와 다르다.
radius = radius + 1- 이는 방정식을 푸는 것이 아니라 현재
radius값을 읽어 1을 더한 뒤, 결과를 다시radius에 할당한다는 뜻이다.
- 또한
radius를 변경해도 이미 계산된area는 자동으로 바뀌지 않는다.
area = pi * radius**2
radius = radius + 1
# area는 이전 radius로 계산한 값을 그대로 유지
area = pi * radius**2 # 다시 계산해야 갱신됨작동 원리
- 변수는 실제 값을 저장하는 상자라기보다는, 객체(값)가 저장된 메모리 주소를 가리키는(참조하는) 이름표에 가깝다.
id(변수)함수를 통해 객체의 주소값을 확인할 수 있다.
이름 규칙
- 숫자로 시작 불가 (영문자 또는 밑줄 문자로 시작)
- 영문자, 숫자, 밑줄(
_) 사용 가능 - 대소문자 구별
- 공백 포함 불가 (공백이 구분자), 특수 기호 사용 불가, 예약어(키워드) 사용 불가
Case
- 낙타체(CamelCase):
myNewCar(단어의 첫 글자를 대문자로) - 뱀체(Snake_case):
my_new_car(단어 사이를 밑줄로 연결) - 보통 변수는 낙타체로, 상수는 대문자로 작성한다.
4. 기타
주석 (Comment)
#뒤의 내용은 실행되지 않으며, 코드 설명이나 임시 비활성화 용도로 사용
상수 (Constant)
- 관례적으로 대문자로 이름을 지어 변하지 않는 값임을 표시
- (예:
PI = 3.14,TAX_RATE)
5. 문자열 (String)
표현
- 문자열은 문자, 숫자, 공백 등을 따옴표로 감싼 값이다.
- 큰따옴표(
"...") 또는 작은따옴표('...')로 감싼다. - 여러 줄은 삼중 따옴표(
"""또는''')를 사용한다.
- 큰따옴표(
hi = "hello there"
name = "ana"연산
- 덧셈
+: 문자열을 연결한다.- 문자열 연결 시 공백이 자동으로 추가되지 않으므로
" "를 직접 넣어야 한다.
- 문자열 연결 시 공백이 자동으로 추가되지 않으므로
- 곱셈
*: 문자열을 반복한다.- (예:
"Hello" * 3→"HelloHelloHello")
- (예:
greeting = hi + " " + name
silly = hi + " " + name * 3- 인덱싱: 문자열 내부의 특정 문자에 접근 (0부터 시작, -1은 마지막 문자)
- 특수 문자(이스케이프):
\n(줄바꿈),\t(탭) 등 - 형 변환: 숫자와 문자열은 직접 연산 불가.
str(),int(),float()함수를 사용하여 변환해야 함
cf. 문자열 포매팅
- 직접 넣기:
“I eat“, variable, “apples.“ - f-문자열 포매팅:
f“나의 이름은 {variable}입니다.” - 문자열 포맷 코드:
“I eat %d apples.” % 3 - format 함수:
“I eat {variable} apples.“.format(3)
cf. 문법 오류
문법 오류(SyntaxError)
- 문자열의 따옴표 누락, 닫는 따옴표 없음 (
SyntaxError: invalid syntax) Print처럼 대문자 사용 (파이썬은 대소문자 구분)
6. 입출력
출력
print() 함수
- 계산 결과를 화면에 출력할 때 사용한다.
print(3 + 2) # 5+로 연결하려면 숫자를 문자열로 변환해야 한다.
x_str = str(x)
print("my fav num is " + x_str)콤마(,)를 사용하여 여러 값을 나열하여 출력할 수 있다.
x = 1
# 문자열과 숫자를 함께 출력
print("my fav num is", x, ".", "x =", x)형식화된 출력
f-string,%서식 지정자 등을 사용해 소수점 자리수 등을 조절 가능
입력 input()
사용자로부터 데이터를 입력받을 때 사용한다.
text = input("Type anything... ")input()의 결과는 항상 문자열을 반환한다. 숫자로 계산하려면 형 변환이 필요하다.
num = int(input("Type a number... "))
print(5 * num)예를 들어 "3"을 그대로 5배 하면 "33333"이지만, int("3")을 5배 하면 15이다.