跳至正文

变量和数据类型

什么是变量?

变量是存储值的容器。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
✅ 类型转换和检查
✅ 各种运算符
✅ 接收输入

下一步:在字符串处理中深入学习字符串!