1. 변수와 자료형

header

컴퓨터는 프로그램 실행 과정에서 필요한 데이터를 메모리라는 임시 저장 공간에 저장합니다.
개발자는 프로그램을 만들고 실행하는 데 필요한 값들을 메모리에 미리 저장해 두었다가 필요할 때마다 꺼내 씁니다.
메모리에 데이터를 저장하기 위해 할당 받은 공간을 변수라고 부릅니다.
변수는 마치 데이터를 담을 수 있는 상자와 같습니다.

변수와 자료형 예시
변수와 자료형 예시

1. 주석과 실행문 📝

주석은 코드에 설명이나 필요한 정보 등을 기록하여 사람이 이해하기 쉽게 도와주는 기능으로 프로그램 실행에는 전혀 영향을 미치지 않습니다.
복잡한 코드를 이해하기 쉽게 하여 개발자들이 코드를 공유하거나 유지 보수할 때 유용하게 사용됩니다.

한 줄 주석 💬

# 한 줄 주석
print("Hello Python")

여러 줄 주석 📄

'''
여러 줄 주석은
작은따옴표로 감싸서 작성할 수 있습니다.
'''

"""
또는 큰따옴표로 감싸서
작성할 수도 있습니다.
"""

💡 : 실행문은 프로그램이 실제로 동작하면서 각종 작업을 수행하는 코드입니다. 개발자가 컴퓨터에 내리는 명령이라고 할 수 있어요! 🚀

2. 변수 사용하기 📦

프로그램에서 변수를 사용하려면 먼저 변수를 저장할 메모리에 공간을 확보해야 합니다. 이를 변수를 선언한다라고 표현합니다.

age = 20

변수에 데이터를 저장할 때는 대입 연산자(=)를 사용합니다.
대입 연산자를 기준으로 오른쪽 데이터를 왼쪽 상자에 담는다라고 상상하면 이해가 쉬워집니다.

변수명 정하기 ✏️

  • 영문, 한글, 숫자를 사용
  • 대소문자 구분
  • 변수명의 첫 글자는 숫자로 시작 불가
  • 언더바를 제외한 특수문자는 사용 불가
  • 파이썬 예약어는 사용 불가

📝 사용 가능한 변수명 체크하기

다음 중 사용 가능한 변수명을 모두 선택하세요:

  • my_name
  • 2nd_place
  • user@email
  • if
  • _private
  • total_count

💡 : 파이썬 예약어는 if, for, while, def, class 등이 있습니다. 이런 단어들은 변수명으로 사용할 수 없어요! ⚠️

변수명 표기법 🐍

파이썬에서 변수명을 작성할 때는 보통 스네이크 케이스 표기법을 사용합니다.
스네이크 케이스 표기법은 단어를 모두 소문자로 작성하고 단어 사이에 언더바를 사용하여 구분하는 방식입니다.

first_name = "지민"
last_name = "김"
user_age = 25

변수에 데이터 입력하고 사용하기 🎯

이제 우리는 데이터를 변수에 담아두고, 데이터의 값이 필요할 때마다 직접 데이터를 사용하는 대신 변수의 이름을 불러서 그 값을 사용합니다.

# 아이돌 프로필 정보를 변수에 저장해보자! 🎤
name = '민지'
age = 20
address = '''우편번호 12345
서울특별시 강남구'''
boyfriend = None  # 아직 없음 😅
height = 168.3

# 변수에 저장된 값들을 출력해보자
print(name)        # NewJeans 민지
print(age)         # 20
print(address)     # 우편번호 12345
                   # 서울특별시 강남구
print(boyfriend)   # None
print(height)      # 168.3

문제 1 - 변수 값 바꾸기 (기초) 🎯

아래 코드의 주석을 참고하여, 변수들의 값을 원하는 대로 바꿔보세요.

# 아이돌 프로필 정보
name = '민지'
age = 20
height = 168.3
favorite_color = '보라색'

print("변경 전:", name, age, height, favorite_color)

# TODO: 변수들의 값을 다른 값으로 바꿔보세요
# name = '다른 아이돌 이름'
# age = 다른 나이
# height = 다른 키
# favorite_color = '다른 색상'

print("변경 후:", name, age, height, favorite_color)
정답 보기

  # 아이돌 프로필 정보
  name = '민지'
  age = 20
  height = 168.3
  favorite_color = '보라색'

  print("변경 전:", name, age, height, favorite_color)

  # 변수들의 값을 다른 값으로 바꿔보세요
  name = '덱스'
  age = 30
  height = 178.6
  favorite_color = '파란색'

  print("변경 후:", name, age, height, favorite_color)
  

문제 2 - 변수 스위칭하기 (중급) 🔄

아래 코드의 주석을 참고하여, 두 변수의 값을 서로 바꿔보세요.

# 두 개의 변수
a = '사과'
b = '바나나'

print("스위칭 전:", a, b)  # 사과 바나나

# TODO: a와 b의 값을 서로 바꿔보세요
# 힌트: 임시 변수를 사용하거나, 파이썬의 특별한 문법을 사용할 수 있어요

print("스위칭 후:", a, b)  # 바나나 사과
정답 보기

  # 두 개의 변수
  a = '사과'
  b = '바나나'

  print("스위칭 전:", a, b)  # 사과 바나나

  # 방법 1: 임시 변수 사용
  temp = a
  a = b
  b = temp

  # 방법 2: 파이썬의 특별한 문법 (더 간단!)
  # a, b = b, a

  print("스위칭 후:", a, b)  # 바나나 사과
  

3. 자료형 🗂️

파이썬에서 자료형(Data Type)은 변수에 저장할 수 있는 데이터의 종류를 나타냅니다.
파이썬은 동적 타입 언어이므로 변수를 선언할 때 자료형을 명시하지 않아도 자동으로 판단합니다.

주요 자료형 📊

  • 숫자형: 정수(int), 실수(float)
  • 문자열: 텍스트 데이터(str)
  • 불린형: 참/거짓 값(bool)
  • None: 빈 값(NoneType)

💡 : type() 함수를 사용하면 변수의 자료형을 확인할 수 있어요! 🔍
예: print(type(age))<class 'int'>

숫자형 🔢

숫자형은 수를 나타내는 자료형으로, 정수(int), 실수(float) 두 가지가 있습니다.

정수형(int) 🔢

정수형은 소수점이 없는 숫자를 저장하는 자료형입니다.
양의 정수, 음의 정수, 0을 모두 포함하며, 프로그래밍에서는 int라고 표기합니다.

num1 = 10
num2 = -5
num3 = 0

print(num1)  # 10
print(num2)  # -5
print(num1 + num2)  # 5

num4 = num1 + num2
print(num4)  # 5

print(type(num1))  # <class 'int'>

💡 : int() 함수를 이용하면 다른 자료형의 값을 정수형 데이터로 변환할 수 있습니다. 🔄 예: int(3.14)3, int('10')10, int(True)1

실수형(float) 📈

실수형은 소수점이 있는 숫자를 저장하는 자료형입니다.
양의 실수, 음의 실수, 0을 모두 포함하며, 프로그래밍에서는 float라고 표기합니다.

num1 = 3.14
num2 = -2.71

print(num1)  # 3.14
print(num1 + num2)  # 0.43

# 실수와 정수를 함께 연산하면 결과는 항상 실수형이 됩니다.
print(3.0 - 3)  # 0.14

복소수형 🧮

실수와 달리, 복소수형은 실수와 허수(i)를 포함하는 숫자를 나타냅니다. 실수부와 허수부는 다음과 같이 표현할 수 있습니다.

z = 3 + 4j  # 3은 실수부, 4는 허수부, j는 허수 단위

복소수형은 파이썬이 제공하는 특별한 자료형으로 다른 프로그래밍 언어에서는 익숙하지 않은 자료형입니다. 주로 공학이나 물리학에서 사용됩니다. 🔬

불 자료형 ✅

논리형(bool)

논리형은 논리값을 저장할 수 있는 자료형으로 True 또는 False의 두 가지 값만 가질 수 있습니다. 남녀 성별, 찬반 투표, 존재 여부, 포함 유무 등과 같이 오직 두 가지 선택 사항으로 판단되는 상황에 사용됩니다.

like_python = True
like_python = False

개발자가 직접 True/False 값을 변수에 대입하는 방법도 있지만, 하나의 논리 연산의 결과를 변수에 대입할 수도 있습니다.

x = 100
y = 90

result = x > y

print(result)  # True

불 자료형은 논리 연산을 수행하거나 조건문을 제어하는 데 효과적으로 사용 가능합니다.

bool(0)     # False
bool('')    # False
bool([])    # False

💡 : bool() 함수는 빈 값들(0, 빈 문자열, 빈 리스트 등)을 False로, 그 외의 값들을 True로 변환합니다! 🔄

문자열 📝

문자열은 텍스트를 표현하는 데 사용됩니다. 여러 문자가 연결된 하나의 열을 말합니다. 작은따옴표나 큰따옴표로 둘러싸서 표현되지만, 삼중 따옴표를 사용하는 방법도 있습니다.

문자열 생성 🏗️

  1. 큰따옴표와 작은따옴표로 문자열 만들기
    name = "Kim"
    name = 'Lee'
    
  2. 삼중 따옴표로 문자열 만들기 ```python

    여러 줄 문자열

    text = “"”안녕하세요. 파이썬을 배우고 있습니다. 문자열을 다루는 방법을 학습 중입니다.”””

또는

text = ‘'’여러 줄 문자열은 삼중 따옴표로 만들 수 있습니다.’’’


> 💡 **팁**: 문자열 내에 따옴표가 사용되는 경우, 서로 다른 종류의 따옴표를 사용하거나 이스케이프 문자를 활용할 수 있습니다.
> 예: `"He said 'Hello' to me."`, `'He said "Hello" to me.'`, `"He said \"Hello\" to me."`

#### 문자열 연산 ⚙️

파이썬은 문자열을 조작하고 변형할 수 있는 다양한 연산을 제공합니다. 문자열을 합치거나 반복하며 특정 부분을 추출하거나 검색하는 등의 연산들이 가능합니다.

**문자열 합치기** 🔗
```python
first_name = "배"
last_name = "수지"
age = 32

# + 연산자로 문자열 합치기
full_name = first_name + last_name
print(full_name)  # 배수지

# 공백을 포함한 합치기
full_name_with_space = first_name + " " + last_name
print(full_name_with_space)  # 배 수지

# 문자열과 숫자 합치기 (문자열로 변환 필요)
introduction = "안녕하세요, 저는 " + full_name + "이고, 나이는 " + str(age) + "세입니다."
print(introduction)  # 안녕하세요, 저는 배수지이고, 나이는 32세입니다.

문자열 반복하기 🔄

# * 연산자로 문자열 반복
cheer = "파이팅! "
excited_cheer = cheer * 3
print(excited_cheer)  # 파이팅! 파이팅! 파이팅!

# 구분선 만들기
line = "-" * 20
print(line)  # --------------------

💡 : 문자열에서는 나눗셈 연산(/)을 사용할 수 없습니다. 문자열은 나눗셈이 의미가 없기 때문입니다. ⚠️ 예: "Hello" / 2오류 발생

문자열 인덱싱 🎯

문자열의 각 문자는 고유한 번호를 가집니다. 이를 인덱스라고 합니다. 파이썬에서는 숫자를 0부터 세기 때문에 인덱스는 항상 0부터 시작합니다.

문자 H E L L O
인덱스 0 1 2 3 4

우리는 이 인덱스 값을 사용하여 문자열에서 특정 문자를 추출할 수 있습니다.

word = "HELLO"

# 첫 번째 문자 (인덱스 0)
first_char = word[0]
print(first_char)  # H

# 세 번째 문자 (인덱스 2)
third_char = word[2]
print(third_char)  # L

# 마지막 문자 (인덱스 4)
last_char = word[4]
print(last_char)  # O

# 음수 인덱스 사용 (뒤에서부터 세기)
last_char_negative = word[-1]
print(last_char_negative)  # O

second_last = word[-2]
print(second_last)  # L

문제 3 - 문자열 연산하기 (기초) 🔤

아래 코드의 주석을 참고하여, 문자열 연산을 사용해 완성해보세요.

# 기본 정보
first_name = "황"
last_name = "현진"
age = 29
hobby = "게임"

print("=== 자기소개 만들기 ===")

# TODO: 아래 주석을 참고하여 코드를 완성해보세요
# 1. first_name과 last_name을 합쳐서 full_name 만들기
# full_name = 

# 2. "안녕하세요, 저는 [full_name]입니다." 문장 만들기
# greeting = 

# 3. hobby를 3번 반복해서 excited_hobby 만들기
# excited_hobby = 

# 4. 나이를 문자열로 변환해서 "나이는 [age]세입니다." 문장 만들기
# age_info = 

print("완성된 자기소개:")
# print(greeting)
# print("나이는", age, "세입니다.")
# print("취미는", excited_hobby, "입니다!")
정답 보기

  # 기본 정보
  first_name = "황"
  last_name = "현진"
  age = 29
  hobby = "게임"

  print("=== 자기소개 만들기 ===")

  # 1. first_name과 last_name을 합쳐서 full_name 만들기
  full_name = first_name + last_name

  # 2. "안녕하세요, 저는 [full_name]입니다." 문장 만들기
  greeting = "안녕하세요, 저는 " + full_name + "입니다."

  # 3. hobby를 3번 반복해서 excited_hobby 만들기
  excited_hobby = hobby * 3

  # 4. 나이를 문자열로 변환해서 "나이는 [age]세입니다." 문장 만들기
  age_info = "나이는 " + str(age) + "세입니다."

  print("완성된 자기소개:")
  print(greeting)
  print(age_info)
  print("취미는", excited_hobby, "입니다!")
  

문제 4 - 문자열 인덱싱하기 (중급) 🎯

아래 코드의 주석을 참고하여, 문자열 인덱싱을 사용해 특정 문자를 추출해보세요.

# 주어진 문자열
word = "PYTHON"
sentence = "Hello World"

print("=== 문자열 인덱싱 연습 ===")

# TODO: 아래 주석을 참고하여 코드를 완성해보세요
# 1. word에서 첫 번째 문자 추출하기 (인덱스 0)
# first_char = 

# 2. word에서 마지막 문자 추출하기 (양수 인덱스 사용)
# last_char = 

# 3. word에서 마지막 문자 추출하기 (음수 인덱스 사용)
# last_char_negative = 

# 4. sentence에서 "W" 문자 추출하기
# w_char = 

# 5. sentence에서 "d" 문자 추출하기 (음수 인덱스 사용)
# d_char = 

print("추출된 문자들:")
# print("첫 번째 문자:", first_char)
# print("마지막 문자 (양수):", last_char)
# print("마지막 문자 (음수):", last_char_negative)
# print("W 문자:", w_char)
# print("d 문자:", d_char)
정답 보기

  # 주어진 문자열
  word = "PYTHON"
  sentence = "Hello World"

  print("=== 문자열 인덱싱 연습 ===")

  # 1. word에서 첫 번째 문자 추출하기 (인덱스 0)
  first_char = word[0]

  # 2. word에서 마지막 문자 추출하기 (양수 인덱스 사용)
  last_char = word[5]

  # 3. word에서 마지막 문자 추출하기 (음수 인덱스 사용)
  last_char_negative = word[-1]

  # 4. sentence에서 "W" 문자 추출하기
  w_char = sentence[6]

  # 5. sentence에서 "d" 문자 추출하기 (음수 인덱스 사용)
  d_char = sentence[-1]

  print("추출된 문자들:")
  print("첫 번째 문자:", first_char)
  print("마지막 문자 (양수):", last_char)
  print("마지막 문자 (음수):", last_char_negative)
  print("W 문자:", w_char)
  print("d 문자:", d_char)
  

문자열 슬라이싱 ✂️

인덱스를 사용하여 특정 문자를 추출할 수 있을 뿐만 아니라, 문자열의 일부를 원하는 만큼 잘라내는 것도 가능합니다.
이를 슬라이싱이라고 합니다.
슬라이싱은 한 문자 이상으로 구성된 단어나 문장을 추출할 때 유용합니다.

문자열 슬라이싱의 기본 구조는 다음과 같습니다.
문자열을 담은 변수명[start:stop:step]

  • start(시작 인덱스): 슬라이싱을 시작할 위치를 지정합니다. 이 값은 생략할 수 있으며, 기본 값은 0입니다.
  • stop(종료 인덱스): 슬라이싱을 종료할 위치를 지정합니다. 이 값은 생략할 수 있으며, 기본 값은 문자열의 끝입니다.
  • step(간격): 슬라이싱할 때 건너뛸 간격을 지정합니다. 이 값은 생략할 수 있으며, 기본 값은 1입니다.
문자 I   L o v e   P y t h o n
인덱스 0 1 2 3 4 5 6 7 8 9 10 11 12
text = "I Love Python"

# 기본 슬라이싱 (start:stop)
substring1 = text[2:6]    # "Love"
print(substring1)         # Love

# 시작 인덱스 생략 (처음부터)
substring2 = text[:6]     # "I Love"
print(substring2)         # I Love

# 종료 인덱스 생략 (끝까지)
substring3 = text[7:]     # "Python"
print(substring3)         # Python

# 음수 인덱스 사용
substring4 = text[-6:]    # "Python"
print(substring4)         # Python

# step 사용 (간격으로 추출)
substring5 = text[::2]    # "ILv yhn"
print(substring5)         # ILv yhn

# 역순으로 추출
substring6 = text[::-1]   # "nohtyP evoL I"
print(substring6)         # nohtyP evoL I

💡 : 슬라이싱에서 stop 인덱스는 포함되지 않습니다! 예를 들어 text[2:6]은 인덱스 2부터 5까지(6은 제외)를 추출합니다. 🎯

문제 5 - 문자열 슬라이싱하기 (중급) 🎯

아래 코드의 주석을 참고하여, 문자열 슬라이싱을 사용해 특정 부분을 추출해보세요.

# 주어진 문자열
sentence = "Hello World Python"
word = "Programming"

print("=== 문자열 슬라이싱 연습 ===")

# TODO: 아래 주석을 참고하여 코드를 완성해보세요
# 1. sentence에서 "World" 추출하기
# world = 

# 2. sentence에서 "Python" 추출하기 (음수 인덱스 사용)
# python = 

# 3. word에서 "Program" 추출하기
# program = 

# 4. word에서 "ming" 추출하기 (음수 인덱스 사용)
# ming = 

# 5. word에서 홀수 번째 문자들만 추출하기 (step=2)
# odd_chars = 

print("추출된 문자열들:")
# print("World:", world)
# print("Python:", python)
# print("Program:", program)
# print("ming:", ming)
# print("홀수 번째 문자들:", odd_chars)
정답 보기

  # 주어진 문자열
  sentence = "Hello World Python"
  word = "Programming"

  print("=== 문자열 슬라이싱 연습 ===")

  # 1. sentence에서 "World" 추출하기
  world = sentence[6:11]

  # 2. sentence에서 "Python" 추출하기 (음수 인덱스 사용)
  python = sentence[-6:]

  # 3. word에서 "Program" 추출하기
  program = word[:7]

  # 4. word에서 "ming" 추출하기 (음수 인덱스 사용)
  ming = word[-4:]

  # 5. word에서 홀수 번째 문자들만 추출하기 (step=2)
  odd_chars = word[::2]

  print("추출된 문자열들:")
  print("World:", world)
  print("Python:", python)
  print("Program:", program)
  print("ming:", ming)
  print("홀수 번째 문자들:", odd_chars)
  

문자열 처리 유용한 함수 🛠️

문자열 길이 📏

text = "Hello World"
length = len(text)
print(length)  # 11

# 빈 문자열의 길이
empty = ""
print(len(empty))  # 0

💡 : len() 함수는 문자열의 문자 개수를 반환합니다. 공백도 하나의 문자로 계산됩니다! 📊

문자열을 대문자로 변환 🔤

text = "hello world"
upper_text = text.upper()
print(upper_text)  # HELLO WORLD

# 원본은 변경되지 않음
print(text)  # hello world

문자열을 소문자로 변환 📝

text = "HELLO WORLD"
lower_text = text.lower()
print(lower_text)  # hello world

# 원본은 변경되지 않음
print(text)  # HELLO WORLD

💡 : upper()lower() 메서드는 원본 문자열을 변경하지 않고 새로운 문자열을 반환합니다! 🔄