2차시: 파이썬 변수와 자료형 학습 패키지

안녕하세요! 파이썬의 핵심 개념인 '변수'와 다양한 '자료형'에 대해 학습할 수 있는 예제 코드와, 학습 내용을 점검해볼 수 있는 OX 및 5지선다형 HTML 퀴즈를 준비했습니다.

1. 파이썬 예제 코드: 변수와 자료형

1.1. 기초 파이썬 예시 코드 (5개)

기초 예제는 변수 선언과 기본 자료형(숫자, 문자열, 불리언)의 사용법을 다룹니다.

1. 다양한 자료형의 변수 선언

# 정수(Integer)
age = 25
# 실수(Float)
height = 175.5
# 문자열(String)
name = "인수샘"
# 불리언(Boolean)
is_student = True

print(name, "님의 나이는", age, "살, 키는", height, "cm, 학생 여부:", is_student)

2. 숫자 자료형 연산

a = 15
b = 4

print(f"{a} + {b} = {a + b}") # 덧셈: 19
print(f"{a} - {b} = {a - b}") # 뺄셈: 11
print(f"{a} * {b} = {a * b}") # 곱셈: 60
print(f"{a} / {b} = {a / b}") # 나눗셈: 3.75
print(f"{a} // {b} = {a // b}") # 몫: 3
print(f"{a} % {b} = {a % b}") # 나머지: 3
print(f"{a} ** 2 = {a ** 2}") # 거듭제곱: 225

3. 문자열 자료형 다루기

# 문자열 연결
first_name = "길동"
last_name = "홍"
full_name = last_name + first_name
print("전체 이름:", full_name)

# 문자열 반복
greeting = "안녕하세요! "
print(greeting * 3)

# 문자열 길이 구하기
long_text = "Python is powerful"
print("문자열 길이:", len(long_text))

4. type() 함수로 자료형 확인

# type() 함수는 변수가 어떤 자료형인지 알려줍니다.

num_var = 100
str_var = "100"
float_var = 100.0

print(f"변수 num_var의 자료형은: {type(num_var)}")
print(f"변수 str_var의 자료형은: {type(str_var)}")
print(f"변수 float_var의 자료형은: {type(float_var)}")

5. 자료형 변환 (Type Casting)

# 다른 자료형으로 강제 변환할 수 있습니다.

num_str = "123"
num_int = int(num_str) # 문자열을 정수로
print(f"문자열 '{num_str}' -> 정수: {num_int}")

num = 10
float_num = float(num) # 정수를 실수로
print(f"정수 {num} -> 실수: {float_num}")

age = 30
message = "제 나이는 " + str(age) + "살입니다." # 정수를 문자열로
print(message)

1.2. 응용 파이썬 예시 코드 (5개)

응용 예제는 리스트, 튜플, 딕셔너리 등 여러 데이터를 묶어서 관리하는 컬렉션 자료형을 다룹니다.

1. 리스트 (List) 생성 및 수정

# 리스트는 순서가 있고, 값의 생성, 수정, 삭제가 가능한 가변(mutable) 자료형입니다.

fruits = ["사과", "바나나", "딸기"]
print("초기 리스트:", fruits)

# 요소 추가
fruits.append("오렌지")
print("추가 후:", fruits)

# 요소 변경
fruits[1] = "망고"
print("변경 후:", fruits)

# 요소 삭제
removed_fruit = fruits.pop(2)
print(f"'{removed_fruit}' 삭제 후:", fruits)

2. 튜플 (Tuple) 사용

# 튜플은 순서가 있지만, 생성 후에는 값을 변경할 수 없는 불변(immutable) 자료형입니다.

person = ("구운몽", 30, "서울")
print(f"이름: {person[0]}, 나이: {person[1]}")

# 튜플 값 변경 시도 (TypeError 발생)
# person[1] = 31 

# 튜플 패킹/언패킹
name, age, city = person
print(f"언패킹 -> 이름: {name}, 나이: {age}, 도시: {city}")

3. 딕셔너리 (Dictionary) 활용

# 딕셔너리는 Key와 Value를 쌍으로 묶어 관리합니다.

student = {
    "name": "홍길동",
    "id": 20260319,
    "major": "컴퓨터공학"
}
print("학생 이름:", student["name"])

# 새로운 Key-Value 추가
student["gpa"] = 4.3
print("GPA 추가:", student)

# 값 변경
student["major"] = "인공지능학과"
print("전공 변경:", student)

4. 집합 (Set) 자료형과 연산

# 집합은 순서가 없고, 중복된 값을 허용하지 않습니다.

set_a = {1, 2, 3, 4, 4, 5}
set_b = {4, 5, 6, 7}
print("Set A:", set_a) # 중복된 4는 하나만 저장됨

# 교집합 (&)
print("교집합:", set_a & set_b)

# 합집합 (|)
print("합집합:", set_a | set_b)

# 차집합 (-)
print("차집합 (A-B):", set_a - set_b)

5. f-string을 이용한 복잡한 문자열 포매팅

# f-string을 사용하면 변수와 계산식을 문자열 안에 바로 넣을 수 있습니다.

name = "인수샘"
age = 30
pi = 3.141592

print(f"제 이름은 {name}이고, 내년엔 {age + 1}살이 됩니다.")
print(f"원주율(pi)을 소수점 둘째 자리까지 표현하면 {pi:.2f}입니다.")

1.3. 심화 파이썬 예시 코드 (5개)

심화 예제는 파이썬의 특수한 자료형과 고급 개념을 다룹니다.

1. None 자료형

# None은 '값이 없음'을 나타내며, 초기화 시 주로 사용됩니다.

my_variable = None
print(my_variable)

if my_variable is None:
    print("my_variable에는 아직 값이 할당되지 않았습니다.")

# 함수가 명시적으로 값을 반환하지 않으면 None을 반환합니다.
def no_return_func():
    print("이 함수는 아무것도 반환하지 않습니다.")

result = no_return_func()
print("함수 결과:", result)

2. 바이트(bytes)와 바이트배열(bytearray)

# 이진 데이터를 다룰 때 사용됩니다. bytes는 불변, bytearray는 가변입니다.

my_bytes = bytes([72, 101, 108, 108, 111]) # [H, e, l, l, o]
print("바이트 객체:", my_bytes)
print("디코딩 결과:", my_bytes.decode('utf-8'))

my_byte_array = bytearray(b"Hello World")
my_byte_array[6] = ord('P') # ord()는 문자를 아스키 코드로 변환
my_byte_array[7] = ord('y')
print("바이트배열 수정 후:", my_byte_array.decode('utf-8'))

3. 복소수 (Complex Number) 자료형

c1 = 3 + 4j
c2 = complex(2, -5)

print(f"c1: {c1}, c2: {c2}")
print(f"c1의 실수부: {c1.real}, 허수부: {c1.imag}")
print(f"c1 + c2 = {c1 + c2}")
print(f"c1 * c2 = {c1 * c2}")

4. frozenset 자료형

# 변경할 수 없는 버전의 집합으로, 딕셔너리의 키가 될 수 있습니다.

my_set = {1, 2, 3}
frozen_set = frozenset([3, 4, 5])

print("일반 집합:", my_set)
print("frozenset:", frozen_set)

# 딕셔너리의 키로 사용
valid_key_dict = {frozen_set: "값"}
print(valid_key_dict)

5. collections.namedtuple 사용하기

# 각 요소에 이름을 부여하여 가독성을 높인 튜플입니다.

from collections import namedtuple

# 'Point'라는 이름의 namedtuple 정의
Point = namedtuple('Point', ['x', 'y', 'z'])
p1 = Point(10, 20, 30)

print(f"점 p1의 좌표: {p1}")
print(f"p1의 x좌표: {p1.x}") # 이름으로 접근 가능
print(f"p1의 y좌표: {p1.y}")
print(f"p1의 z좌표: {p1.z}")