소개
Python 기초에 오신 것을 환영합니다! 누구나 시작점이 필요하며, 이 실습 (lab) 은 바로 그 시작을 위한 완벽한 장소입니다. Python 은 우아한 구문 (syntax) 과 동적 타이핑 (dynamic typing) 으로 알려진 배우기 쉽고 강력한 프로그래밍 언어로, 스크립팅 및 신속한 애플리케이션 개발에 이상적인 언어입니다.
본 실습에서는 Python 의 가장 기본적인 개념 중 일부를 배우게 됩니다. 다룰 내용은 다음과 같습니다:
- 수학 연산자 (Mathematical operators) 와 그 우선순위 (order of precedence).
- 보다 간결한 코드를 위한 증감 대입 연산자 (Augmented assignment operators).
- 표현식 내에서 변수를 할당하기 위한 Walrus 연산자 (
:=). - Python 의 핵심 데이터 타입 (data types).
- 문자열 연결 (concatenation) 및 반복 (replication) 과 같은 기본적인 문자열 연산.
시작해 봅시다!
수학 연산자 (Math Operators)
이 단계에서는 Python 의 수학 연산자와 연산자 우선순위 (precedence) 에 대해 배웁니다. 연산자 우선순위는 표현식에서 연산이 수행되는 순서를 결정합니다.
다음은 우선순위가 높은 순서부터 낮은 순서까지의 일반적인 수학 연산자입니다.
| 연산자 (Operators) | 연산 (Operation) | 예시 (Example) |
|---|---|---|
** |
거듭제곱 (Exponent) | 2 ** 3 = 8 |
% |
나머지 (Modulus/Remainder) | 22 % 8 = 6 |
// |
정수 나누기 (Integer division) | 22 // 8 = 2 |
/ |
나누기 (Division) | 22 / 8 = 2.75 |
* |
곱셈 (Multiplication) | 3 * 3 = 9 |
- |
뺄셈 (Subtraction) | 5 - 2 = 3 |
+ |
덧셈 (Addition) | 2 + 2 = 4 |
참고: WebIDE(VS Code 와 유사) 사용이 익숙하지 않다면, 이 랩 (lab)에서 먼저 학습하시기 바랍니다.
이제 이것들을 사용하는 연습을 해봅시다. 왼쪽 파일 탐색기에서 main.py 파일을 엽니다. 기존 내용을 모두 지우고 다음 코드를 추가합니다. 각 표현식의 결과를 확인하기 위해 print() 함수를 사용할 것입니다.
## Multiplication has higher precedence than addition
## So this evaluates as: 2 + (3 * 6) = 2 + 18 = 20
print(2 + 3 * 6)
## Parentheses override operator precedence
## This evaluates as: 5 * 6 = 30
print((2 + 3) * 6)
## Exponentiation
print(2 ** 8)
## Integer division
print(23 // 7)
## Modulus/Remainder
print(23 % 7)
## A more complex expression
print((5 - 1) * ((7 + 1) / (3 - 1)))
이제 터미널을 열고 다음 명령어를 실행하여 스크립트를 실행합니다.
python3 main.py
각 결과가 새 줄에 표시되는 다음 출력을 보게 될 것입니다.
20
30
256
3
2
16.0
증감 할당 연산자 (Augmented Assignment Operators)
이 단계에서는 증감 대입 연산자에 대해 알아봅니다. 이는 변수에 연산을 수행한 후 그 결과를 다시 변수에 할당하는 간결한 방법을 제공합니다.
다음은 이러한 연산자와 그 등가 표현을 나타내는 표입니다.
| 연산자 | 등가 표현 |
|---|---|
var += 1 |
var = var + 1 |
var -= 1 |
var = var - 1 |
var *= 1 |
var = var * 1 |
var /= 1 |
var = var / 1 |
var //= 1 |
var = var // 1 |
var %= 1 |
var = var % 1 |
var **= 1 |
var = var ** 1 |
이들을 사용하는 연습을 해봅시다. main.py 파일을 지우고 다음 코드를 추가하여 문자열, 숫자, 리스트에서 이들이 어떻게 작동하는지 확인합니다.
## Augmented assignment with a string
greeting = 'Hello'
greeting += ' world!'
print(greeting)
## Increment a number by 1
number = 1
number += 1
print(number)
## Replicate list elements
my_list = ['item']
my_list *= 3
print(my_list)
터미널에서 스크립트를 실행합니다.
python3 main.py
출력에는 증감 대입의 결과가 표시됩니다.
Hello world!
2
['item', 'item', 'item']
왈러스 연산자 (Walrus Operator)
이 단계에서는 바다코끼리 연산자 (:=), 공식적으로는 할당 표현식 연산자 (Assignment Expression Operator) 라고 불리는 것에 대해 배웁니다. Python 3.8 에서 도입된 이 연산자는 더 큰 표현식의 일부로 변수에 값을 할당할 수 있게 해줍니다.
이는 값을 계산한 직후에 사용해야 하는 코드를 단순화하는 데 유용합니다.
실제 작동 방식을 살펴보겠습니다. main.py 파일을 지우고 다음 코드를 추가합니다.
## The walrus operator assigns "Hello World!" to my_var
## and returns the value, which is then printed.
print(my_var := "Hello World!")
## The variable my_var is now available for use
print(my_var)
## You can also use it to re-assign a variable within an expression
print(my_var := "Hello")
print(my_var)
스크립트를 실행합니다.
python3 main.py
변수가 할당되었고 그 값이 동일한 표현식 내에서 반환되었음을 보여주는 다음 출력을 보게 될 것입니다.
Hello World!
Hello World!
Hello
Hello
데이터 타입 (Data Types)
이 단계에서는 Python 의 9 가지 핵심 내장 데이터 타입에 대한 개요를 살펴봅니다. 데이터 타입을 이해하는 것은 변수가 가질 수 있는 값의 종류와 변수에 대해 수행할 수 있는 연산을 정의하므로 매우 중요합니다.
| 데이터 타입 | 예시 | 설명 |
|---|---|---|
| 숫자 (Numbers) | ||
int |
-2, 0, 5 |
정수 (Whole numbers) |
float |
-1.25, 0.0, 1.0 |
소수점이 있는 숫자 |
complex |
2+3j |
실수부와 허수부를 가진 숫자 |
| 텍스트 (Text) | ||
str |
'a', "Hello!" |
텍스트 및 문자 |
| 불리언 (Boolean) | ||
bool |
True, False |
참 또는 거짓 값 |
| None | ||
NoneType |
None |
"값이 없음" 또는 "아무것도 아님"을 나타냄 |
| 컬렉션 (Collections) | ||
list |
[1, 2, 3] |
순서가 있고 변경 가능한 컬렉션 |
dict |
{'name': 'Alice', 'age': 30} |
키 - 값 쌍 |
tuple |
(1, 2, 3) |
순서가 있고 변경 불가능한 컬렉션 |
set |
{1, 2, 3} |
고유한 항목들의 순서 없는 컬렉션 |
이러한 데이터 타입을 실제로 확인하기 위해 main.py 파일을 지우고 다음 코드를 추가합니다. 우리는 다양한 타입의 변수를 정의한 다음 내장 함수인 type()을 사용하여 해당 타입을 출력할 것입니다.
## Numbers
age = 25 ## int
price = 19.99 ## float
coordinate = 2 + 3j ## complex
## Text
name = "Alice" ## str
## Boolean
is_student = True ## bool
## None
result = None ## NoneType
## Collections
scores = [85, 92, 78] ## list
person = {'name': 'Bob', 'age': 30} ## dict
coordinates = (10, 20) ## tuple
unique_ids = {1, 2, 3} ## set
print(type(age))
print(type(price))
print(type(name))
print(type(is_student))
print(type(scores))
print(type(person))
print(type(coordinates))
print(type(unique_ids))
스크립트를 실행하여 각 변수의 타입을 확인합니다.
python3 main.py
출력은 다음과 같아야 합니다.
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'list'>
<class 'dict'>
<class 'tuple'>
<class 'set'>
문자열 연결 및 반복 (Concatenation and Replication)
마지막 단계에서는 두 가지 기본적인 문자열 연산인 연결 (concatenation) 과 반복 (replication) 에 대해 배웁니다.
**문자열 연결 (String concatenation)**은 문자열들을 하나로 합치는 과정입니다. Python 에서는 인접한 문자열 리터럴 (string literals) 이 자동으로 연결됩니다.
**문자열 반복 (String replication)**은 * 연산자를 사용하여 기존 문자열을 여러 번 반복하여 새 문자열을 생성합니다.
이러한 연산을 시도해 보겠습니다. main.py 파일을 지우고 다음 코드를 추가합니다.
## String concatenation: adjacent string literals are automatically joined.
## We use print() to display the result.
concatenated_string = 'Alice' 'Bob'
print(concatenated_string)
## String replication: repeat a string multiple times using the * operator.
replicated_string = 'Alice' * 5
print(replicated_string)
이제 터미널에서 스크립트를 실행합니다.
python3 main.py
두 연산의 결과를 보게 될 것입니다.
AliceBob
AliceAliceAliceAliceAlice
이를 통해 Python 에서 문자열을 얼마나 쉽게 조작할 수 있는지 확인할 수 있습니다.
요약
이 실습을 완료하신 것을 축하드립니다! 여러분은 Python 프로그래밍의 세계로 첫발을 내디뎠습니다.
본 실습에서는 다음과 같은 몇 가지 기본 개념을 배웠습니다.
- 수학 연산자 (Math Operators):
+,*,/,**와 같은 연산자 사용법을 연습하고 연산자 우선순위 (precedence) 를 이해했습니다. - 증감 할당 연산자 (Augmented Assignment Operators): 코드를 더 간결하게 작성하기 위한
+=,*=와 같은 단축키를 익혔습니다. - 왈러스 연산자 (Walrus Operator): 표현식 내에서 변수를 할당하는
:=연산자를 소개받았습니다. - 데이터 타입 (Data Types): 숫자, 문자열, 불리언, 컬렉션 등 Python 의 핵심 데이터 타입에 대한 개요를 파악했습니다.
- 문자열 연결 및 반복 (String Concatenation and Replication): 문자열을 결합하고 반복하는 방법을 배웠습니다.
이러한 개념들은 더 복잡하고 강력한 Python 프로그램을 작성하기 위한 구성 요소입니다. 계속해서 연습하고 Python 이 제공하는 것들을 탐구해 보세요!



