第3章:Python 数据类型
3.1 数值类型
Python 支持三种数值类型:整数、浮点数和复数。
整数(int)
整数是没有小数部分的数字,可以是正数、负数或零。
# 整数示例
x = 10 # 正整数
y = -5 # 负整数
z = 0 # 零
# 大整数
large_num = 12345678901234567890
# 二进制表示
binary = 0b1010 # 10
# 八进制表示
octal = 0o12 # 10
# 十六进制表示
hexadecimal = 0x1A # 26
浮点数(float)
浮点数是带有小数部分的数字。
# 浮点数示例
x = 3.14 # 小数形式
y = 2.5e3 # 科学记数法,等同于 2500.0
z = 1.0e-2 # 科学记数法,等同于 0.01
# 特殊浮点值
inf = float('inf') # 正无穷
ninf = float('-inf') # 负无穷
nan = float('nan') # 非数字
复数(complex)
复数由实部和虚部组成,虚部用 j 或 J 表示。
# 复数示例
x = 3 + 4j # 实部为 3,虚部为 4
y = 2j # 实部为 0,虚部为 2
z = complex(1, 2) # 使用 complex() 函数创建
# 获取实部和虚部
print(x.real) # 3.0
print(x.imag) # 4.0
3.2 字符串(str)
字符串是由字符组成的序列,可以使用单引号、双引号或三引号表示。
字符串的创建
# 单引号
s1 = 'Hello'
# 双引号
s2 = "World"
# 三引号(支持多行)
s3 = '''This is a
multi-line
string'''
# 转义字符
s4 = "He said \"Hello\""
# 原始字符串(不处理转义字符)
s5 = r'C:\\path\\to\\file'
# 格式化字符串
a = 10
s6 = f'The value of a is {a}'
字符串的操作
索引和切片
s = "Python"
# 索引(从 0 开始)
print(s[0]) # 'P'
print(s[-1]) # 'n' (负数索引从末尾开始)
# 切片
try:
print(s[0:2]) # 'Py' (从索引 0 到 2,不包括 2)
print(s[2:]) # 'thon' (从索引 2 到末尾)
print(s[:3]) # 'Pyt' (从开头到索引 3,不包括 3)
print(s[::2]) # 'Pto' (步长为 2)
print(s[::-1]) # 'nohtyP' (反转字符串)
except Exception as e:
print(f"Error: {e}")
字符串方法
s = "Hello, Python!"
# 大小写转换
print(s.upper()) # 'HELLO, PYTHON!'
print(s.lower()) # 'hello, python!'
print(s.title()) # 'Hello, Python!'
print(s.capitalize()) # 'Hello, python!'
# 字符串判断
print(s.startswith("Hello")) # True
print(s.endswith("!")) # True
print(s.isalpha()) # False(包含非字母字符)
print(s.isdigit()) # False
print(s.isalnum()) # False(包含非字母数字字符)
# 字符串查找
print(s.find("Python")) # 7
print(s.index("Python")) # 7
print(s.count("o")) # 2
# 字符串替换
print(s.replace("Python", "World")) # 'Hello, World!'
# 字符串分割
print(s.split(",")) # ['Hello', ' Python!']
# 字符串连接
parts = ["Hello", "World"]
print(" ".join(parts)) # 'Hello World'
# 字符串修剪
print(" Hello ".strip()) # 'Hello'
print(" Hello ".lstrip()) # 'Hello '
print(" Hello ".rstrip()) # ' Hello'
3.3 布尔值(bool)
布尔值表示真或假,只有两个值:True 和 False。
# 布尔值示例
t = True
f = False
# 布尔运算
print(t and f) # False
print(t or f) # True
print(not t) # False
# 其他值转换为布尔值
print(bool(0)) # False
print(bool(1)) # True
print(bool("")) # False
print(bool("Hello")) # True
print(bool([])) # False
print(bool([1, 2, 3])) # True
print(bool(None)) # False
3.4 None 类型
None 表示空值,是一个特殊的常量。
# None 示例
n = None
print(n) # None
print(type(n)) # <class 'NoneType'>
# 检查 None
if n is None:
print("n is None")
# None 与其他值的比较
print(n == 0) # False
print(n == "") # False
print(n == []) # False
3.5 类型转换
Python 提供了内置函数来进行类型转换。
数值类型之间的转换
# 整数转浮点数
print(float(10)) # 10.0
# 浮点数转整数(截断小数部分)
print(int(3.14)) # 3
print(int(3.99)) # 3
# 字符串转数值
print(int("123")) # 123
print(float("3.14")) # 3.14
# 数值转字符串
print(str(123)) # "123"
print(str(3.14)) # "3.14"
其他类型转换
# 转换为布尔值
print(bool(0)) # False
print(bool(1)) # True
print(bool("")) # False
print(bool("Hello")) # True
# 转换为列表
print(list("Hello")) # ['H', 'e', 'l', 'l', 'o']
# 转换为元组
print(tuple([1, 2, 3])) # (1, 2, 3)
# 转换为集合
print(set([1, 2, 2, 3])) # {1, 2, 3}
3.6 类型判断
使用 type() 函数可以获取变量的类型,使用 isinstance() 函数可以判断变量是否属于特定类型。
# 使用 type()
x = 10
print(type(x)) # <class 'int'>
y = "Hello"
print(type(y)) # <class 'str'>
# 使用 isinstance()
print(isinstance(x, int)) # True
print(isinstance(x, float)) # False
print(isinstance(y, str)) # True
# 检查是否为数值类型
print(isinstance(x, (int, float, complex))) # True
3.7 数据类型的比较
数值比较
x = 10
y = 5
print(x > y) # True
print(x < y) # False
print(x == y) # False
print(x != y) # True
print(x >= y) # True
print(x <= y) # False
字符串比较
字符串比较基于字典序(ASCII 值)。
s1 = "apple"
s2 = "banana"
print(s1 < s2) # True("apple" 在字典序中排在 "banana" 之前)
print(s1 == s2) # False
print(s1 > s2) # False
# 长度比较
print(len(s1) < len(s2)) # True
3.8 常见问题和解决方案
问题1:字符串索引越界
# 错误示例
s = "Hello"
print(s[10]) # 索引越界错误
# 解决方案
try:
print(s[10])
except IndexError:
print("Index out of range")
问题2:类型不匹配
# 错误示例
x = "10"
y = 5
print(x + y) # 类型错误
# 解决方案
print(int(x) + y) # 转换为相同类型
问题3:浮点数精度问题
# 浮点数精度问题
print(0.1 + 0.2) # 0.30000000000000004
# 解决方案
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2')) # 0.3
3.9 练习
- 数值练习:计算 10 + 3.14, 2 ** 10, 100 / 3
- 字符串练习:
- 创建一个字符串 "Python is awesome!"
- 将其转换为大写
- 查找 "awesome" 的位置
- 将 "awesome" 替换为 "amazing"
- 分割字符串
- 类型转换练习:
- 将字符串 "123" 转换为整数
- 将整数 123 转换为字符串
- 将浮点数 3.14 转换为整数
- 类型判断练习:
- 创建不同类型的变量
- 使用 type() 和 isinstance() 检查它们的类型
- 综合练习:编写一个程序,接收用户输入的两个数字,计算它们的和、差、积、商,并输出结果
3.10 小结
本章我们学习了:
- 数值类型(整数、浮点数、复数)
- 字符串的创建和操作
- 布尔值和 None 类型
- 类型转换
- 类型判断
- 数据类型的比较
现在你已经掌握了 Python 的基本数据类型,可以开始学习 Python 的控制流了!