콘텐츠로 건너뛰기

챗봇 만들 때 꼭 필요한 파이썬 기초 문법: 변수와 자료형 쉽게 이해하기

12월 10, 2025
파이썬 변수와 자료형 완벽 가이드

여러분, 혹시 이런 생각 해본 적 있나요? “챗봇을 만들고 싶은데 어디서부터 시작해야 할까?”

챗봇을 만들려면 사용자의 이름을 기억해야 하고, 나이를 저장해야 하고, 대화 내용을 처리해야 해요. 바로 이럴 때 필요한 게 변수자료형이에요!

이 글에서는 변수와 자료형을 단순히 이론으로 배우는 게 아니라, 실제 챗봇을 만들면서 어떻게 사용하는지 함께 배워볼 거예요. 정말 쉽게 설명해드릴 테니 걱정 마세요!

💡 시리즈 연결: 이전 글에서 파이썬 설치, VS Code 설정, 가상환경, GitHub까지 배웠어요. 이제 본격적으로 코드를 작성해볼 시간입니다!

변수가 뭐예요? 상자로 이해하기

프로그래밍에서 변수(Variable)는 데이터를 담는 상자라고 생각하면 돼요.

name “철수” age 25 is_member True 각 상자(변수)는 하나의 값을 담고 있어요

변수는 데이터를 담는 상자 – 상자 이름(변수명)으로 내용물에 접근

현실 세계에서 택배 상자에 라벨을 붙이는 것처럼, 프로그래밍에서도 데이터에 이름표를 붙여요. 이게 바로 변수예요!

🤖 챗봇 예시로 이해하기

간단한 인사 챗봇을 만든다고 상상해봐요:

# 사용자 정보를 변수에 저장 user_name = “철수” user_age = 25 is_logged_in = True # 챗봇이 인사하기 print(f”안녕하세요, {user_name}님! 나이가 {user_age}세시군요.”)
출력: 안녕하세요, 철수님! 나이가 25세시군요.

이렇게 사용자 정보를 변수에 저장하면, 챗봇이 대화 중에 계속 그 정보를 사용할 수 있어요!

💡 변수를 사용하는 이유:
• 데이터를 저장해서 나중에 다시 사용
• 코드를 읽기 쉽게 만듦
• 값이 바뀌어도 변수명은 그대로 (유지보수 편리)

변수 만들기: 이름 짓는 규칙

변수를 만드는 건 정말 간단해요. = (등호) 기호를 사용하면 돼요.

# 기본 형식: 변수명 = 값 message = “안녕하세요” count = 10 price = 1500.5

✅ 변수 이름 짓는 규칙 (꼭 지켜야 해요!)

규칙 설명 예시
영문 + 숫자 영문자, 숫자, 언더스코어(_) 사용 가능 ✅ user_name, age2
숫자로 시작 불가 변수명 첫 글자는 숫자 안 됨 ❌ 2user (에러)
✅ user2 (정상)
공백 불가 띄어쓰기 대신 언더스코어 사용 ❌ user name (에러)
✅ user_name (정상)
예약어 사용 불가 파이썬이 이미 사용 중인 단어 ❌ for, if, while, class
대소문자 구분 Name과 name은 다른 변수 name ≠ Name ≠ NAME
⚠️ 초보자가 자주 하는 실수:
user name = "철수" → 공백 때문에 에러!
2nd_user = "영희" → 숫자로 시작해서 에러!
for = 5 → 예약어라서 에러!

📝 좋은 변수명 vs 나쁜 변수명

# ❌ 나쁜 예시 – 의미를 알 수 없음 a = “철수” b = 25 xyz123 = True # ✅ 좋은 예시 – 의미가 명확함 user_name = “철수” user_age = 25 is_premium_member = True

1주일 뒤에 내 코드를 다시 봤을 때, a가 뭐였는지 기억할 수 있을까요? user_name은 바로 알 수 있죠!

자료형이란? 데이터의 종류

자료형(Data Type)은 변수에 담긴 데이터가 어떤 종류인지를 나타내요. 마치 상자에 담긴 물건이 책인지, 옷인지, 음식인지 구분하는 것과 같아요.

파이썬에는 여러 자료형이 있지만, 챗봇 만들 때 가장 많이 쓰는 건 이 6가지예요:

str (문자열) “안녕하세요” 텍스트, 대화 내용 int (정수) 25 나이, 개수, 점수 float (실수) 3.14 가격, 평점, 온도 bool (불린) True / False 참/거짓, 로그인 여부 list (리스트) [1, 2, 3] 메뉴, 선택지 목록 dict (딕셔너리) {“이름”: “철수”} 사용자 정보, 설정 챗봇 만들 때 가장 많이 사용하는 6가지 자료형

파이썬 기본 자료형 – 각각 다른 종류의 데이터를 저장

이제 하나씩 자세히 배워볼까요?

1. str (문자열) – 대화의 기본

문자열(String)은 텍스트 데이터예요. 챗봇의 핵심이죠! 따옴표(') 또는 큰따옴표(")로 감싸면 돼요.

# 문자열 만들기 greeting = “안녕하세요!” name = ‘철수’ message = “””여러 줄로 작성할 수도 있어요.”””

🤖 챗봇에서 문자열 활용하기

챗봇 대화 시나리오:
# 챗봇 인사 bot_name = “AI 비서” user_name = “철수” # 문자열 합치기 (연결) greeting = “안녕하세요, “ + user_name + “님!” print(greeting) # f-string 사용 (더 편리함!) message = f”저는 {bot_name}입니다. {user_name}님, 무엇을 도와드릴까요?” print(message)
출력: 안녕하세요, 철수님! 저는 AI 비서입니다. 철수님, 무엇을 도와드릴까요?
💡 f-string 꿀팁: 문자열 앞에 f를 붙이고 중괄호 {} 안에 변수를 넣으면 자동으로 값이 들어가요! 파이썬 3.6 이상에서 사용 가능해요.

자주 사용하는 문자열 메서드

message = ” Hello World “ # 소문자로 변환 print(message.lower()) # ” hello world “ # 대문자로 변환 print(message.upper()) # ” HELLO WORLD “ # 양쪽 공백 제거 (챗봇 입력 처리 시 중요!) print(message.strip()) # “Hello World” # 문자 찾기 print(“안녕” in “안녕하세요”) # True

2. int (정수) – 숫자 계산의 기본

정수(Integer)는 소수점이 없는 숫자예요. 나이, 개수, 점수 등을 저장할 때 사용해요.

# 정수 변수 age = 25 score = 100 count = -5 # 음수도 가능 # 사칙연산 print(age + 5) # 30 (더하기) print(score – 20) # 80 (빼기) print(count * 3) # -15 (곱하기) print(10 // 3) # 3 (나누기, 정수만)

🤖 챗봇에서 정수 활용하기

나이 확인 챗봇:
user_age = 17 min_age = 19 if user_age >= min_age: print(“성인입니다. 입장 가능합니다.”) else: years_left = min_age – user_age print(f”미성년자입니다. {years_left}년 후에 가능합니다.”)
출력: 미성년자입니다. 2년 후에 가능합니다.

3. float (실수) – 소수점 계산

실수(Float)는 소수점이 있는 숫자예요. 가격, 평점, 온도 등을 정확하게 표현할 때 사용해요.

# 실수 변수 price = 1500.5 rating = 4.8 temperature = 36.5 # 계산 total = price * 2 print(total) # 3001.0 # 반올림 print(round(rating, 1)) # 4.8 (소수점 첫째자리까지)

🤖 쇼핑몰 챗봇 예시

가격 계산 챗봇:
item_price = 15900.0 quantity = 3 discount_rate = 0.2 # 20% 할인 # 총 가격 계산 subtotal = item_price * quantity discount = subtotal * discount_rate final_price = subtotal – discount print(f”상품 가격: {item_price:,.0f}원”) print(f”수량: {quantity}개”) print(f”할인액: {discount:,.0f}원”) print(f”최종 금액: {final_price:,.0f}원”)
출력: 상품 가격: 15,900원 수량: 3개 할인액: 9,540원 최종 금액: 38,160원

4. bool (불린) – 참/거짓 판단

불린(Boolean)은 오직 두 가지 값만 가져요: True(참) 또는 False(거짓). 조건을 확인할 때 필수예요!

# 불린 변수 is_logged_in = True has_permission = False # 비교 연산 결과는 불린 age = 25 is_adult = age >= 19 # True is_teenager = age < 20 # False print(is_adult) # True print(is_teenager) # False

🤖 로그인 확인 챗봇

회원 서비스 챗봇:
is_member = True has_coupon = True if is_member and has_coupon: print(“🎉 회원 쿠폰 할인 적용됩니다!”) elif is_member: print(“회원 할인이 적용됩니다.”) else: print(“회원 가입 시 더 많은 혜택을 받으실 수 있어요!”)
출력: 🎉 회원 쿠폰 할인 적용됩니다!
⚠️ 주의: TrueFalse는 첫 글자가 대문자예요! true, false는 에러 나요.

5. list (리스트) – 여러 값을 한 번에

리스트(List)는 여러 개의 값을 순서대로 담는 자료형이에요. 대괄호 []를 사용해요.

# 리스트 만들기 menu = [“아메리카노”, “라떼”, “카푸치노”] numbers = [1, 2, 3, 4, 5] mixed = [“철수”, 25, True] # 섞어도 돼요! # 요소 접근 (0부터 시작!) print(menu[0]) # “아메리카노” (첫 번째) print(menu[1]) # “라떼” (두 번째) print(menu[-1]) # “카푸치노” (마지막) # 요소 추가 menu.append(“에스프레소”) print(menu) # [“아메리카노”, “라떼”, “카푸치노”, “에스프레소”]

🤖 메뉴 선택 챗봇

카페 주문 챗봇:
menu = [“아메리카노”, “라떼”, “카푸치노”, “바닐라라떼”] print(“☕ 카페 주문 메뉴”) for i, item in enumerate(menu, 1): print(f”{i}. {item}”) # 사용자가 2번 선택했다고 가정 choice = 2 selected = menu[choice – 1] # 인덱스는 0부터 시작하니까 -1 print(f”\n'{selected}’ 주문 완료되었습니다!”)
출력: ☕ 카페 주문 메뉴 1. 아메리카노 2. 라떼 3. 카푸치노 4. 바닐라라떼 ‘라떼’ 주문 완료되었습니다!
💡 리스트 인덱스 꿀팁:
• 첫 번째 요소는 [0]
• 마지막 요소는 [-1]
• 뒤에서 두 번째는 [-2]

6. dict (딕셔너리) – 키와 값의 쌍

딕셔너리(Dictionary)키(key)값(value)을 쌍으로 저장해요. 중괄호 {}를 사용해요.

# 딕셔너리 만들기 user = { “이름”: “철수”, “나이”: 25, “직업”: “개발자”, “회원”: True } # 값 가져오기 print(user[“이름”]) # “철수” print(user[“나이”]) # 25 # 값 추가/수정 user[“이메일”] = “chulsu@email.com” user[“나이”] = 26 # 수정됨

🤖 사용자 프로필 챗봇

회원 정보 관리 챗봇:
# 사용자 정보 저장 user_profile = { “name”: “김철수”, “age”: 28, “city”: “서울”, “interests”: [“코딩”, “게임”, “음악”], “premium”: True } # 프로필 출력 print(f”👤 이름: {user_profile[‘name’]}”) print(f”🎂 나이: {user_profile[‘age’]}세”) print(f”📍 지역: {user_profile[‘city’]}”) print(f”❤️ 관심사: {‘, ‘.join(user_profile[‘interests’])}”) if user_profile[‘premium’]: print(“⭐ 프리미엄 회원입니다!”)
출력: 👤 이름: 김철수 🎂 나이: 28세 📍 지역: 서울 ❤️ 관심사: 코딩, 게임, 음악 ⭐ 프리미엄 회원입니다!

타입 확인하고 변환하기

변수의 자료형을 확인하거나 다른 자료형으로 바꿀 수 있어요.

타입 확인: type() 함수

name = “철수” age = 25 height = 175.5 is_student = True print(type(name)) # print(type(age)) # print(type(height)) # print(type(is_student)) #

타입 변환 (Type Casting)

# 문자열 → 정수 age_str = “25” age_int = int(age_str) # 25 (정수로 변환) # 정수 → 문자열 count = 10 count_str = str(count) # “10” (문자열로 변환) # 문자열 → 실수 price_str = “1500.5” price_float = float(price_str) # 1500.5

🤖 사용자 입력 처리 챗봇

나이 입력 받기:
# input()은 항상 문자열을 반환해요! age_input = “25” # 실제로는 input(“나이를 입력하세요: “) # 문자열을 정수로 변환 age = int(age_input) if age >= 19: print(“성인 인증 완료!”) else: print(f”{19 – age}년 후에 다시 방문해주세요.”)
⚠️ 변환 시 주의사항:
int("안녕") → 에러! 숫자로 변환 불가
int("3.14") → 에러! 실수 형태는 float()으로 먼저 변환
int(float("3.14")) → 3 (정상 작동)

실전 종합 예제: 간단한 챗봇 만들기

지금까지 배운 걸 모두 합쳐서 실제 작동하는 챗봇을 만들어봐요!

🤖 카페 주문 챗봇 (종합편)
# 메뉴와 가격 (딕셔너리) menu = { “아메리카노”: 4500, “라떼”: 5000, “카푸치노”: 5500, “바닐라라떼”: 5500 } # 사용자 정보 (딕셔너리) user = { “name”: “철수”, “points”: 1500, “is_member”: True } # 챗봇 인사 print(f”☕ 안녕하세요, {user[‘name’]}님!”) print(f”현재 보유 포인트: {user[‘points’]:,}P\n”) # 메뉴 보여주기 (리스트 반복) print(“📋 메뉴”) menu_list = list(menu.keys()) # 딕셔너리의 키를 리스트로 for i, item in enumerate(menu_list, 1): price = menu[item] print(f”{i}. {item} – {price:,}원”) # 주문 받기 (가정: 사용자가 2번 선택) choice = 2 selected_drink = menu_list[choice – 1] # “라떼” price = menu[selected_drink] # 할인 계산 (불린 + 실수) discount_rate = 0.1 if user[“is_member”] else 0 discount = int(price * discount_rate) final_price = price – discount # 주문 결과 출력 print(f”\n✅ 주문 완료!”) print(f”상품: {selected_drink}”) print(f”정가: {price:,}원”) if user[“is_member”]: print(f”회원 할인: -{discount:,}원 (10%)”) print(f”결제 금액: {final_price:,}원”) print(f”적립 포인트: +{int(final_price * 0.05):,}P”)
출력: ☕ 안녕하세요, 철수님! 현재 보유 포인트: 1,500P 📋 메뉴 1. 아메리카노 – 4,500원 2. 라떼 – 5,000원 3. 카푸치노 – 5,500원 4. 바닐라라떼 – 5,500원 ✅ 주문 완료! 상품: 라떼 정가: 5,000원 회원 할인: -500원 (10%) 결제 금액: 4,500원 적립 포인트: +225P

와! 이게 바로 진짜 챗봇이에요! 변수와 자료형만으로도 이런 프로그램을 만들 수 있어요 🎉

초보자가 자주 하는 실수 Top 5

실수 1: 변수명에 공백 넣기

# ❌ 에러 발생 user name = “철수” # ✅ 올바른 방법 user_name = “철수”

실수 2: 문자열과 숫자 더하기

# ❌ 에러: 타입이 달라서 안 됨 result = “나이: “ + 25 # ✅ 해결책 1: str()로 변환 result = “나이: “ + str(25) # ✅ 해결책 2: f-string 사용 result = f”나이: {25}”

실수 3: 리스트 인덱스 착각

menu = [“커피”, “차”, “주스”] # ❌ 에러: 인덱스는 0부터 시작! first = menu[1] # “차” (두 번째) # ✅ 올바른 방법 first = menu[0] # “커피” (첫 번째)

실수 4: True/False 소문자로 쓰기

# ❌ 에러: 파이썬은 대소문자 구분! is_member = true # ✅ 올바른 방법 is_member = True

실수 5: 딕셔너리 키 오타

user = {“name”: “철수”, “age”: 25} # ❌ 에러: “Name”이라는 키는 없음 (대소문자 다름!) print(user[“Name”]) # ✅ 올바른 방법 print(user[“name”])

자료형 정리 표

자료형 영문명 예시 사용 예
문자열 str “안녕하세요” 이름, 메시지, 대화 내용
정수 int 25 나이, 개수, 점수
실수 float 3.14 가격, 평점, 키/몸무게
불린 bool True, False 로그인 여부, 회원 여부
리스트 list [“A”, “B”, “C”] 메뉴 목록, 선택지
딕셔너리 dict {“키”: “값”} 사용자 정보, 설정

연습 문제로 다지기

자, 이제 실력을 확인해볼 시간이에요! 직접 코드를 작성해보세요.

문제 1: 자기소개 챗봇 만들기
# 여러분의 정보로 변수를 만들어보세요 my_name = “” # 여러분 이름 my_age = 0 # 여러분 나이 my_hobby = “” # 취미 # 자기소개 출력하기 print(f”안녕하세요! 제 이름은 {my_name}이고, {my_age}살입니다.”) print(f”제 취미는 {my_hobby}입니다.”)
문제 2: 쇼핑 장바구니 만들기
# 장바구니 (리스트) cart = [] # 물건 추가하기 cart.append(“노트북”) cart.append(“마우스”) cart.append(“키보드”) # 장바구니 확인 print(f”장바구니에 {len(cart)}개의 상품이 있습니다.”) print(“상품 목록:”, cart)

다음 단계: 뭘 배워야 할까요?

변수와 자료형을 마스터했으니, 이제 다음 단계로 넘어갈 준비가 됐어요!

1 조건문 (if-else)
“만약 ~라면 ~해라” 같은 조건부 동작을 배워요.

2 반복문 (for, while)
같은 작업을 여러 번 반복하는 방법을 배워요.

3 함수 (function)
코드를 재사용 가능하게 만드는 방법을 배워요.

💡 실전 연습 아이디어:
• 오늘 배운 챗봇 코드를 직접 타이핑해보기
• 자기만의 변수명으로 바꿔보기
• 새로운 메뉴나 기능 추가해보기
• GitHub에 올려서 포트폴리오 만들기

마무리: 변수와 자료형, 이제 자신 있어요!

축하합니다! 🎉 이제 여러분은 파이썬의 가장 기본적이면서도 중요한 개념을 마스터했어요.

변수와 자료형은 프로그래밍의 재료예요. 요리사가 재료를 다루듯, 개발자는 변수와 자료형을 다뤄요. 이 기초가 튼튼해야 나중에 복잡한 프로그램도 자신 있게 만들 수 있어요.

처음엔 헷갈릴 수 있지만, 직접 코드를 작성하면서 연습하다 보면 어느새 익숙해질 거예요. 에러가 나도 괜찮아요! 에러 메시지를 읽고 고치는 과정에서 더 많이 배우게 됩니다.

🎯 오늘 배운 것 체크리스트:
✅ 변수가 뭔지 알아요
✅ 변수 이름 짓는 규칙을 알아요
✅ 6가지 기본 자료형을 구분할 수 있어요
✅ f-string으로 문자열을 만들 수 있어요
✅ 리스트와 딕셔너리를 사용할 수 있어요
✅ 간단한 챗봇 코드를 이해해요

다음 시리즈에서는 if-else 조건문을 배워서 챗봇이 상황에 따라 다른 대답을 하도록 만들 거예요. 기대되죠?

계속해서 꾸준히 연습하세요. 여러분의 코딩 여정을 응원합니다! 💪

error: Content is protected !!