變數與資料型別
什麼是變數?
變數是儲存值的容器。Python使用動態型別來自動推斷型別。
# 변수 선언과 할당
name = "홍길동"
age = 25
height = 175.5
is_student = True
print(name) # 홍길동
print(age) # 25
變數命名規則
# ✅ 올바른 변수명
user_name = "김철수"
age2 = 30
_private = "내부용"
total_price = 10000
# ❌ 잘못된 변수명
2age = 30 # 숫자로 시작 불가
user-name = "" # 하이픈 불가
for = 10 # 예약어 불가
命名慣例
- 使用snake_case(Python標準)
- 以小寫字母開頭
- 使用有意義的名稱
- 避免使用保留字(if、for、class等)
基本資料型別
1. 數字(Numbers)
整數(int)
# 정수
x = 10
y = -5
big_number = 1000000
# 연산
print(10 + 5) # 15 (덧셈)
print(10 - 5) # 5 (뺄셈)
print(10 * 5) # 50 (곱셈)
print(10 / 5) # 2.0 (나눗셈 - 실수 반환)
print(10 // 5) # 2 (정수 나눗셈)
print(10 % 3) # 1 (나머지)
print(2 ** 3) # 8 (거듭제곱)
浮點數(float)
# 실수
pi = 3.14
temperature = -15.5
scientific = 1.5e3 # 1500.0
# 정밀도 주의
print(0.1 + 0.2) # 0.30000000000000004 (부동소수점 오차)
# 반올림
result = round(0.1 + 0.2, 1)
print(result) # 0.3
複數(complex)
z = 3 + 4j
print(z.real) # 3.0 (실수부)
print(z.imag) # 4.0 (허수부)
2. 字串(String)
# 문자열 생성
name = "홍길동"
message = '안녕하세요'
multi_line = """여러 줄
문자열
작성"""
# 문자열 연산
greeting = "안녕" + "하세요" # 안녕하세요 (연결)
repeat = "!" * 3 # !!! (반복)
# 인덱싱과 슬라이싱
text = "Python"
print(text[0]) # P (첫 글자)
print(text[-1]) # n (마지막 글자)
print(text[0:3]) # Pyt (0부터 3 전까지)
print(text[2:]) # thon (2부터 끝까지)
print(text[:4]) # Pyth (처음부터 4 전까지)
字串方法
text = "Hello, Python!"
# 대소문자 변환
print(text.upper()) # HELLO, PYTHON!
print(text.lower()) # hello, python!
print(text.capitalize()) # Hello, python!
# 검색
print(text.find("Python")) # 7 (위치)
print(text.count("l")) # 2 (개수)
print("Python" in text) # True (포함 여부)
# 변환
print(text.replace("Python", "World")) # Hello, World!
print(text.split(", ")) # ['Hello', 'Python!']
# 공백 제거
text = " hello "
print(text.strip()) # "hello"
print(text.lstrip()) # "hello "
print(text.rstrip()) # " hello"
字串格式化
name = "홍길동"
age = 25
# f-string (Python 3.6+, 추천)
message = f"이름: {name}, 나이: {age}"
print(message) # 이름: 홍길동, 나이: 25
# 계산도 가능
print(f"내년 나이: {age + 1}") # 내년 나이: 26
# 포맷 지정
price = 1234.5678
print(f"가격: {price:.2f}원") # 가격: 1234.57원
# format() 메서드
message = "이름: {}, 나이: {}".format(name, age)
# % 포매팅 (오래된 방식)
message = "이름: %s, 나이: %d" % (name, age)
3. 布林值(Boolean)
# 불린 값
is_active = True
is_deleted = False
# 비교 연산
print(5 > 3) # True
print(5 == 5) # True
print(5 != 3) # True
# 논리 연산
print(True and False) # False
print(True or False) # True
print(not True) # False
# 실제 활용
age = 20
is_adult = age >= 18
print(is_adult) # True
Truthy和Falsy值
# False로 간주되는 값들
print(bool(0)) # False
print(bool("")) # False
print(bool(None)) # False
print(bool([])) # False
print(bool({})) # False
# True로 간주되는 값들
print(bool(1)) # True
print(bool("hello")) # True
print(bool([1, 2])) # True
print(bool({"a": 1})) # True
# 조건문에서 활용
if "hello": # "hello"는 True
print("실행됨")
4. None型別
# None은 '값이 없음'을 나타냄
result = None
if result is None:
print("결과가 없습니다")
# 함수 기본값
def greet(name=None):
if name is None:
print("안녕하세요!")
else:
print(f"안녕하세요, {name}님!")
greet() # 안녕하세요!
greet("홍길동") # 안녕하세요, 홍길동님!
型別轉換
顯式轉換
# 문자열 → 숫자
age = int("25") # 25
price = float("19.99") # 19.99
# 숫자 → 문자열
age_str = str(25) # "25"
# 불린 변환
print(bool(1)) # True
print(bool(0)) # False
print(bool("hello")) # True
print(bool("")) # False
# 리스트 → 튜플
numbers = [1, 2, 3]
numbers_tuple = tuple(numbers) # (1, 2, 3)
型別檢查
age = 25
name = "홍길동"
height = 175.5
# type() 함수
print(type(age)) # <class 'int'>
print(type(name)) # <class 'str'>
print(type(height)) # <class 'float'>
# isinstance() 함수
print(isinstance(age, int)) # True
print(isinstance(name, str)) # True
print(isinstance(height, int)) # False
運算子
算術運算子
a = 10
b = 3
print(a + b) # 13 (덧셈)
print(a - b) # 7 (뺄셈)
print(a * b) # 30 (곱셈)
print(a / b) # 3.333... (나눗셈)
print(a // b) # 3 (몫)
print(a % b) # 1 (나머지)
print(a ** b) # 1000 (거듭제곱)
比較運算子
print(5 == 5) # True (같음)
print(5 != 3) # True (다름)
print(5 > 3) # True (큼)
print(5 < 3) # False (작음)
print(5 >= 5) # True (크거나 같음)
print(5 <= 3) # False (작거나 같음)
# 문자열 비교
print("a" < "b") # True (사전순)
邏輯運算子
age = 20
has_license = True
# and: 모두 True여야 True
can_drive = age >= 18 and has_license
print(can_drive) # True
# or: 하나만 True면 True
is_free = age < 7 or age >= 65
print(is_free) # False
# not: 반대
is_not_adult = not (age >= 18)
print(is_not_adult) # False
賦值運算子
x = 10
x += 5 # x = x + 5 → 15
x -= 3 # x = x - 3 → 12
x *= 2 # x = x * 2 → 24
x /= 4 # x = x / 4 → 6.0
x //= 2 # x = x // 2 → 3.0
x %= 2 # x = x % 2 → 1.0
x **= 3 # x = x ** 3 → 1.0
實踐範例
溫度轉換器
def celsius_to_fahrenheit(celsius):
"""섭씨를 화씨로 변환"""
fahrenheit = (celsius * 9/5) + 32
return fahrenheit
def fahrenheit_to_celsius(fahrenheit):
"""화씨를 섭씨로 변환"""
celsius = (fahrenheit - 32) * 5/9
return celsius
# 사용
c = 25
f = celsius_to_fahrenheit(c)
print(f"{c}°C = {f:.1f}°F") # 25°C = 77.0°F
f = 77
c = fahrenheit_to_celsius(f)
print(f"{f}°F = {c:.1f}°C") # 77°F = 25.0°C
BMI計算器
def calculate_bmi(weight, height):
"""BMI 계산 (체중kg, 키m)"""
bmi = weight / (height ** 2)
return round(bmi, 1)
def get_bmi_category(bmi):
"""BMI 카테고리 반환"""
if bmi < 18.5:
return "저체중"
elif bmi < 23:
return "정상"
elif bmi < 25:
return "과체중"
else:
return "비만"
# 사용
weight = 70 # kg
height = 1.75 # m
bmi = calculate_bmi(weight, height)
category = get_bmi_category(bmi)
print(f"BMI: {bmi}")
print(f"분류: {category}")
文字分析器
def analyze_text(text):
"""텍스트 분석"""
length = len(text)
words = len(text.split())
uppercase = sum(1 for c in text if c.isupper())
lowercase = sum(1 for c in text if c.islower())
digits = sum(1 for c in text if c.isdigit())
print(f"=== 텍스트 분석 ===")
print(f"전체 길이: {length}")
print(f"단어 수: {words}")
print(f"대문자: {uppercase}")
print(f"소문자: {lowercase}")
print(f"숫자: {digits}")
# 사용
text = "Hello Python 2024!"
analyze_text(text)
接收輸入
# 기본 입력
name = input("이름을 입력하세요: ")
print(f"안녕하세요, {name}님!")
# 숫자 입력 (변환 필요)
age = int(input("나이를 입력하세요: "))
next_year_age = age + 1
print(f"내년 나이: {next_year_age}")
# 여러 값 입력
text = input("두 숫자를 띄어쓰기로 입력: ")
a, b = map(int, text.split())
print(f"합: {a + b}")
常見問題
Q1. 宣告變數時需要指定型別嗎?
A: Python使用動態型別,因此型別會自動決定。
# 타입 자동 추론
x = 10 # int
x = "hello" # 이제 str (재할당 가능)
# 타입 힌트는 가능 (검증은 안 됨)
age: int = 25
name: str = "홍길동"
Q2. 除法(/)和(//)的差異是什麼?
A: /回傳浮點數,//回傳整數
print(7 / 2) # 3.5 (실수)
print(7 // 2) # 3 (정수)
# 음수도 마찬가지
print(-7 // 2) # -4 (내림)
Q3. 字串不可變(immutable)是什麼意思?
A: 字串建立後無法修改。
text = "hello"
# text[0] = "H" # ❌ 에러!
# 새 문자열 생성해야 함
text = "H" + text[1:] # "Hello"
Q4. is和==的差異是什麼?
A: is檢查物件識別,==檢查值相等
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a == b) # True (값이 같음)
print(a is b) # False (다른 객체)
print(a is c) # True (같은 객체)
# None 비교는 is 사용
x = None
print(x is None) # ✅ 권장
print(x == None) # 가능하지만 비권장
下一步
您已經學習了變數和基本型別!
核心要點:
✅ 變數宣告和命名慣例
✅ 數字、字串、布林值、None
✅ 型別轉換和檢查
✅ 各種運算子
✅ 接收輸入
下一步:在字串處理中深入學習字串!