파이썬프로그래밍기초 3강 - 데이터 타입, 변수와 연산자
파이썬 프로그램을 구성하는 데이터 타입, 표현식, 함수와 변수의 기본 원리를 학습한다. 산술 연산자와 우선순위, 내장 함수, 들여쓰기와 주석을 이해하고 원뿔의 부피와 겉넓이를 계산하는 프로그램을 단계적으로 개선해 본다.
제1장 데이터 타입과 표현식
1. 데이터 타입이란
데이터 타입은 데이터가 어떤 종류의 값인지 구분하는 기준이다. 데이터의 종류에 따라 컴퓨터가 값을 저장하는 방식과 수행할 수 있는 연산이 달라진다. 파이썬에서 자주 사용하는 기본 데이터 타입에는 정수형, 실수형, 문자열이 있다.
| 데이터 타입 | 의미 | 예 |
|---|---|---|
| 정수형(integer, int) | 소수점이 없는 정수 | 53000000 |
| 실수형(floating point, float) | 소수점을 포함한 수 | 3.141592 |
| 문자열(string, str) | 문자들의 순서 있는 묶음 | "53000000" |
정수 53000000과 문자열 "53000000"은 화면에 비슷하게 보일 수 있지만 서로 다른 데이터다. 정수는 산술 계산에 사용할 수 있고, 문자열은 문자를 연결하거나 출력하는 데 사용한다. 따옴표로 묶으면 숫자로 보이는 내용도 문자열이 된다.
값의 모양보다 타입이 중요하다
3, 3.0, "3"은 각각 정수, 실수, 문자열이다. 프로그램은 데이터 타입에 따라 같은 기호도 다르게 처리할 수 있다.
2. 표현식의 구성
표현식(expression)은 값, 연산자, 함수 등이 결합되어 하나의 값을 만들어 내는 코드다. 예를 들어 2 + 3은 두 피연산자와 덧셈 연산자로 구성되고 실행 결과로 정수 5를 만든다.
연산자(operator)는 계산의 종류를 나타내는 기호이며, 피연산자(operand)는 연산의 대상이 되는 값이다. 2 + 3에서 +는 연산자이고 2와 3은 피연산자다. 표현식은 더 큰 표현식의 일부가 될 수 있으며 연산 순서에 따라 최종 결과가 결정된다.
3. 함수와 함수 호출
함수(function)는 특정 작업을 수행하도록 이름을 붙여 정의한 코드의 묶음이다. 함수를 사용하면 이미 구현된 기능을 호출해 반복해서 활용할 수 있다. 함수는 입력을 받을 수 있고, 정해진 처리를 수행한 뒤 결과를 돌려줄 수 있다.
함수 호출은 함수 이름 뒤에 괄호를 쓰고 괄호 안에 필요한 값을 전달하는 형태다. print("Hello World!")에서 print는 함수 이름이고 문자열은 함수에 전달하는 값이다. 이 명령을 실행하면 화면에 Hello World!가 출력된다.
함수 호출의 기본 형태
함수이름(전달할 값)
print("Hello World!")괄호는 함수를 실행하라는 의미를 나타낸다. 함수마다 전달할 수 있는 값의 개수와 의미가 다르다.
제2장 변수와 값의 할당
1. 값을 기억하는 변수
프로그램은 계산 과정에서 값을 기억해 두었다가 다시 사용해야 한다. 변수(variable)는 값을 저장하기 위해 이름을 붙인 기억공간이다. 예를 들어 원뿔의 반지름과 높이를 각각 rad, hei라는 변수에 저장하면 복잡한 수식에서도 값의 의미를 쉽게 파악할 수 있다.
변수에는 이름, 값, 메모리상의 위치가 연결된다. 프로그램에서는 실제 메모리 주소를 직접 다루기보다 변수 이름을 사용해 저장된 값에 접근한다.
2. 할당문의 구조
할당(assignment)은 값을 변수에 저장하는 작업이다. 파이썬은 등호 =의 오른쪽 표현식을 먼저 계산한 뒤 그 결과를 왼쪽 변수에 저장한다.
rad = 20
hei = 30첫째 줄은 정수 20을 rad에, 둘째 줄은 정수 30을 hei에 저장한다.
할당문의 왼쪽을 l-value, 오른쪽을 r-value라고 한다. l-value에는 값을 저장할 수 있는 변수가 와야 하고, r-value에는 값이나 계산 가능한 표현식이 올 수 있다. rad = rad + 1은 오른쪽의 기존 rad 값에 1을 더한 뒤 그 결과를 다시 왼쪽 rad에 저장한다.
=는 같다는 비교가 아니라 할당이다
rad = 20은 오른쪽 값 20을 왼쪽 변수 rad에 저장하라는 명령이다. 처리 방향은 오른쪽에서 왼쪽이다.
3. 식별자
식별자(identifier)는 변수, 함수, 클래스처럼 프로그램 구성요소를 구별하기 위해 사용하는 이름이다. 이름만 보고 역할을 짐작할 수 있도록 의미 있게 작성하는 것이 좋다. 반지름을 r 또는 rad, 높이를 h 또는 height로 표현하는 것이 무관한 이름보다 이해하기 쉽다.
파이썬 식별자는 영문자, 숫자, 밑줄 문자(_)를 조합해 만들 수 있지만 숫자로 시작할 수 없다. 대문자와 소문자를 구별하므로 rad와 Rad는 서로 다른 이름이다. 공백과 일반적인 특수문자는 식별자에 사용할 수 없다.
4. 예약어
예약어는 파이썬 문법에서 특별한 의미로 미리 정해 둔 식별자다. 따라서 변수나 함수 이름으로 사용할 수 없다. 강의록에는 False, None, True, and, as, assert, async, await, 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 등이 제시된다.
| 이름 | 사용 가능 여부 | 이유 |
|---|---|---|
rad | 가능 | 영문자로 시작하고 예약어가 아님 |
cone_height | 가능 | 영문자와 밑줄로 구성 |
height2 | 가능 | 숫자가 첫 문자가 아님 |
2height | 불가능 | 숫자로 시작함 |
for | 불가능 | 파이썬 예약어임 |
5. 변수를 사용한 원뿔 계산
반지름이 rad, 높이가 hei인 원뿔의 부피는 1/3 × π × rad² × hei다. 변수를 사용하면 값을 여러 번 직접 적지 않고 의미 있는 이름으로 수식을 표현할 수 있다.
rad = 20
hei = 30
vol = 1 / 3 * 3.14 * rad * rad * hei
print(vol)오른쪽 표현식을 계산한 결과를 vol에 저장한 뒤 print 함수로 출력한다.
제3장 연산자와 우선순위
1. 연산자와 피연산자
연산자는 피연산자를 이용해 계산을 수행하는 기호다. 피연산자의 개수에 따라 단항 연산자와 이항 연산자 등으로 구분할 수 있다. 산술 연산자는 숫자 데이터의 사칙연산과 나눗셈, 거듭제곱 등에 사용한다.
2. 산술 연산자
| 연산자 | 기능 | 예와 결과 |
|---|---|---|
+ | 덧셈 | 5 + 2 → 7 |
- | 뺄셈 | 5 - 2 → 3 |
* | 곱셈 | 5 * 2 → 10 |
/ | 나눗셈 | 5 / 2 → 2.5 |
// | 몫을 구하는 나눗셈 | 5 // 2 → 2 |
% | 나머지 | 5 % 2 → 1 |
** | 거듭제곱 | 5 ** 2 → 25 |
/는 일반적인 나눗셈 결과를 만들고, //는 나눗셈의 몫을 구한다. %는 나머지를 구하므로 어떤 수가 다른 수로 나누어떨어지는지 판단할 때 활용할 수 있다. 파이썬에서 거듭제곱은 수학 교재의 위 첨자 대신 **를 사용한다.
3. 연산자 우선순위
하나의 표현식에 여러 연산자가 포함되면 우선순위가 높은 연산부터 처리한다. 괄호로 묶인 표현식을 가장 먼저 계산하고, 거듭제곱, 곱셈·나눗셈·몫·나머지, 덧셈·뺄셈 순으로 계산한다. 같은 우선순위에서는 연산자의 결합 규칙에 따라 순서가 정해진다.
1 / 3 * 3.14 * rad ** 2 * heirad ** 2가 먼저 계산된 뒤 나눗셈과 곱셈이 처리된다. 계산 의도를 더 분명하게 표현하려면 필요한 부분에 괄호를 사용할 수 있다.
원뿔 부피 수식에서 rad * rad는 rad ** 2로 바꿀 수 있다. 거듭제곱 연산자를 사용하면 수학식의 구조가 더 직접적으로 드러난다.
제4장 파이썬 내장 함수
1. 내장 함수의 의미
내장 함수는 파이썬이 기본적으로 제공하므로 별도의 정의 없이 사용할 수 있는 함수다. 반복적으로 필요한 계산과 데이터 처리를 간단한 함수 호출로 수행하게 해 준다. 강의록에서는 max, min, round, abs, pow를 다룬다.
| 함수 | 기능 | 예 |
|---|---|---|
max | 전달된 값 중 최댓값 반환 | max(2, 3, 4) → 4 |
min | 전달된 값 중 최솟값 반환 | min(2, 3, 4) → 2 |
round | 지정한 자릿수로 반올림 | round(3.141592, 2) → 3.14 |
abs | 절댓값 반환 | abs(-3) → 3 |
pow | 거듭제곱 결과 반환 | pow(2, 3) → 8 |
pow(rad, 2)는 rad ** 2와 같이 반지름의 제곱을 계산한다. pow는 함수 호출이고 **는 연산자라는 표현 방식의 차이가 있지만 같은 거듭제곱 계산을 나타낼 수 있다.
2. 원뿔의 겉넓이 계산
원뿔의 겉넓이는 밑면의 넓이와 옆면의 넓이를 합하여 구한다. 모선의 길이 a는 반지름과 높이에 피타고라스 정리를 적용해 √(rad² + hei²)로 구할 수 있다. 강의록의 프로그램은 제곱과 제곱근을 pow 함수로 표현한다.
rad = 20
hei = 30
vol = 1 / 3 * 3.14 * pow(rad, 2) * hei
surf = 3.14 * pow(rad, 2) + 3.14 * rad * pow(pow(rad, 2) + pow(hei, 2), 1 / 2)
print("원뿔의 부피는", vol)
print("원뿔의 겉넓이는", surf)pow(pow(rad, 2) + pow(hei, 2), 1 / 2)는 rad² + hei²의 제곱근을 계산한다. 바깥쪽 pow의 지수가 1 / 2이므로 제곱근이 된다. 복잡한 표현식은 중간 결과를 별도 변수에 저장하면 의미를 더 쉽게 읽을 수 있다.
제5장 들여쓰기와 문서화
1. 들여쓰기
들여쓰기는 코드 줄의 앞부분에 일정한 공백을 넣는 것이다. 다른 언어에서는 가독성을 높이는 형식으로만 쓰이기도 하지만 파이썬에서는 코드 블록의 범위를 나타내는 문법 요소다. 같은 블록에 속하는 문장은 같은 수준으로 들여써야 한다.
일반적으로 공백 네 칸을 한 단계 들여쓰기로 사용한다. 한 블록 안에서 탭과 공백을 섞거나 들여쓰기 수준을 일관되지 않게 작성하면 오류가 발생하거나 의도와 다르게 실행될 수 있다.
2. 주석과 문서화
주석은 프로그램의 실행에는 영향을 주지 않으면서 코드의 의미와 작성 의도를 설명하는 문장이다. 한 줄 주석은 # 기호 뒤에 작성하며, 파이썬은 그 줄에서 # 뒤의 내용을 실행하지 않는다.
여러 줄에 걸친 설명에는 각 줄에 #를 사용할 수 있다. 강의록은 세 개의 따옴표로 감싼 여러 줄 문자열을 긴 설명에 사용하는 방법도 보여 준다. 함수나 모듈의 설명을 문서화할 때 이러한 문자열을 활용할 수 있다.
# 반지름과 높이를 저장한다.
rad = 20
hei = 30
"""원뿔의 부피와 겉넓이를 계산한다.
수식에서 원주율은 3.14를 사용한다."""
vol = 1 / 3 * 3.14 * pow(rad, 2) * hei좋은 주석은 코드만 읽어서는 알기 어려운 목적과 이유를 설명한다. 모든 코드를 그대로 한국어로 반복하기보다 수식의 의미, 값의 단위, 선택한 방법의 이유처럼 유지보수에 도움이 되는 내용을 기록하는 것이 좋다.
3. 단계적으로 개선한 최종 프로그램
이번 강의의 원뿔 계산 프로그램은 직접 숫자와 수식을 출력하는 단계에서 시작해 변수, 연산자, 내장 함수, 들여쓰기와 주석을 적용하는 방향으로 개선된다. 각 개념은 독립된 지식이 아니라 읽기 쉽고 수정하기 쉬운 프로그램을 만드는 데 함께 사용된다.
# 원뿔의 크기
rad = 20
hei = 30
# 부피와 겉넓이 계산
vol = 1 / 3 * 3.14 * pow(rad, 2) * hei
slant = pow(pow(rad, 2) + pow(hei, 2), 1 / 2)
surf = 3.14 * pow(rad, 2) + 3.14 * rad * slant
# 결과 출력
print("원뿔의 부피는", vol)
print("원뿔의 겉넓이는", surf)핵심 개념 정리
① 데이터 타입: 정수, 실수, 문자열은 값의 저장 방식과 가능한 연산이 다르다.
② 표현식과 함수: 표현식은 값을 만들어 내고, 함수는 특정 기능을 이름으로 묶어 호출할 수 있게 한다.
③ 변수와 할당: 변수는 값을 기억하는 이름이며 할당문은 오른쪽 표현식을 계산해 왼쪽 변수에 저장한다.
④ 식별자: 영문자·숫자·밑줄을 사용할 수 있지만 숫자로 시작할 수 없고 예약어는 사용할 수 없다.
⑤ 산술 연산자: +, -, *, /, //, %, **의 기능과 우선순위를 구분한다.
⑥ 내장 함수: max, min, round, abs, pow로 자주 쓰는 계산을 수행한다.
⑦ 코드 작성 규칙: 들여쓰기는 블록을 나타내며 주석과 문서화는 코드의 목적과 의미를 설명한다.
최종 정리
파이썬의 기초는 값을 어떤 타입으로 표현하고, 변수에 저장하며, 연산자와 함수로 처리하는 흐름을 이해하는 데 있다. 여기에 일관된 들여쓰기와 유용한 주석을 더하면 정확하면서도 읽기 쉬운 프로그램을 작성할 수 있다.
예상문제 20선
1. 다음 중 문자열 데이터는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
따옴표로 묶인 값은 문자열이다. 숫자 모양의 문자도 따옴표로 묶이면 산술 계산용 정수가 아니다.
2. 표현식 2 + 3에서 연산자는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②+는 덧셈을 지시하는 연산자이고 2와 3은 연산 대상인 피연산자다.
3. print("Hello")에 대한 설명으로 옳은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③print는 전달된 값을 화면에 출력하는 함수이며 괄호는 함수 호출을 나타낸다.
4. 할당문 rad = 20의 처리로 옳은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
할당문은 오른쪽 표현식을 먼저 평가하고 그 결과를 왼쪽 변수에 저장한다.
5. 파이썬 식별자로 사용할 수 있는 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
식별자는 숫자로 시작할 수 없고 하이픈을 사용할 수 없으며 예약어도 이름으로 사용할 수 없다.
6. rad와 Rad의 관계로 옳은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
파이썬은 대문자와 소문자를 구별하므로 두 이름은 서로 다른 변수를 가리킬 수 있다.
7. 다음 중 파이썬 예약어는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③while은 반복 문법에 사용하는 예약어이므로 변수 이름으로 쓸 수 없다.
8. 5 / 2의 결과는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④/는 일반 나눗셈을 수행한다. 몫만 구하려면 //를 사용한다.
9. 5 // 2의 결과는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①//는 나눗셈에서 몫을 구하는 연산자이므로 결과는 2다.
10. 5 % 2의 결과는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②%는 나머지 연산자이며 5를 2로 나눈 나머지는 1이다.
11. 5 ** 2의 결과는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③**는 거듭제곱 연산자이므로 5의 제곱인 25가 된다.
12. 일반적으로 가장 먼저 계산되는 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
괄호는 기본 우선순위를 바꾸어 괄호 안의 표현식을 먼저 계산하도록 한다.
13. max(2, 3, 4)의 결과는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①max 함수는 전달된 여러 값 중 가장 큰 값을 반환한다.
14. round(3.141592, 2)의 결과는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
두 번째 인수 2는 소수점 이하 두 자리로 반올림하라는 뜻이다.
15. abs(-3)의 결과는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③abs 함수는 수의 절댓값을 반환하므로 -3의 절댓값은 3이다.
16. pow(2, 3)과 같은 결과를 만드는 표현식은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④pow(2, 3)은 2의 3제곱을 반환하며 거듭제곱 연산자 표현은 2 ** 3이다.
17. 파이썬에서 들여쓰기의 역할로 옳은 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ①
파이썬은 들여쓰기를 문법적으로 사용해 조건문, 반복문, 함수 등에 속하는 코드 블록을 구분한다.
18. 한 줄 주석을 시작하는 기호는?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ②
파이썬은 한 줄에서 # 뒤의 내용을 주석으로 취급하여 실행하지 않는다.
19. 원뿔의 반지름 제곱을 파이썬으로 올바르게 표현한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ③
파이썬의 거듭제곱 연산자는 **이므로 반지름 제곱은 rad ** 2로 쓴다.
20. 읽기 쉬운 프로그램을 만드는 방법으로 가장 적절한 것은?
정답입니다.
오답입니다. 답안을 다시 선택해 보세요.
정답 및 해설 보기
정답: ④
코드의 의도를 드러내는 이름, 일관된 블록 구조, 필요한 설명을 담은 주석은 가독성과 유지보수성을 높인다.
댓글
댓글 쓰기