Python 基础数据类型
就像在现实世界中,你会使用不同材质和形状的容器来存放不同的物品一样,在编程中,数据类型 (Data Types) 被用来对数据进行分类和管理。
本章将带你深入探索 Python 中的四大核心数据类型:整数 (Integers)、浮点数 (Floats)、字符串 (Strings) 和 布尔值 (Booleans)。我们将逐一剖析它们的特性、创建方法以及高效使用的技巧。
1. 整数 (Integers):完整的数字
整数代表没有小数点的完整数字,包括正数和负数。它们通常用于计数、索引定位以及表示离散的数量。
1.1 定义整数
你只需将一个整数直接赋值给变量即可完成定义。
# 将整数赋值给变量
age = 30
quantity = -10
year = 2023
print(age) # 输出: 30
print(quantity) # 输出: -10
print(year) # 输出: 20231.2 整数运算
Python 支持对整数进行标准的数学运算:
- 加法 (
+) - 减法 (
-) - 乘法 (
*) - 除法 (
/) - 注意:在 Python 中,即使除数和被除数都是整数,常规除法的结果也始终是浮点数。 - 整除/向下取整除法 (
//) - 仅返回除法结果的整数部分。 - 取模/求余数 (
%) - 返回除法运算后的余数。 - 幂运算/指数 (
**) - 计算一个数的多少次方。
a = 10
b = 3
print(a + b) # 输出: 13
print(a - b) # 输出: 7
print(a * b) # 输出: 30
print(a / b) # 输出: 3.3333333333333335
print(a // b) # 输出: 3
print(a % b) # 输出: 1
print(a ** b) # 输出: 1000常见应用场景:
- 计数:追踪库存中的产品数量。
- 索引:通过位置编号(索引)来访问列表或字符串中的特定元素。
- 年龄计算:表示一个人的具体岁数。
1.3 进阶概念:整数大小与进制转换
- 无限大小:在 Python 3 中,整数的大小可以是任意的,仅受限于你电脑的可用内存。这意味着你不需要像在 C 或 Java 等语言中那样担心“整数溢出 (Integer Overflow)”的问题。
- 进制转换:Python 提供了内置函数,可以将十进制整数转换为其他进制(二进制、八进制、十六进制)。
number = 255
print(bin(number)) # 输出: 0b11111111 (二进制)
print(oct(number)) # 输出: 0o377 (八进制)
print(hex(number)) # 输出: 0xff (十六进制)2. 浮点数 (Floats):带有小数点的数字
浮点数代表带有小数点的实数。它们用于表示非完整数字的量,例如测量值、价格和比例。
2.1 定义浮点数
在数字中包含一个小数点即可定义浮点数。
# 将浮点数赋值给变量
price = 99.99
temperature = 25.5
pi = 3.14159
print(price) # 输出: 99.99
print(temperature) # 输出: 25.5
print(pi) # 输出: 3.141592.2 浮点数运算
浮点数支持与整数相同的算术运算。需要注意的是,当一个运算同时涉及整数和浮点数时,最终的结果将始终是浮点数。
a = 10.5
b = 2
print(a + b) # 输出: 12.5
print(a - b) # 输出: 8.5
print(a * b) # 输出: 21.0
print(a / b) # 输出: 5.25
print(a // b) # 输出: 5.0
print(a % b) # 输出: 0.5
print(a ** b) # 输出: 110.25常见应用场景:
- 计算平均值:算出某次考试的平均分。
- 表示货币:存储商品的价格。
- 科学计算:表示光速等物理常数。
2.3 进阶概念:精度问题与特殊值
- 浮点数精度限制:由于计算机底层内存存储方式的限制,浮点数的精度是有限的。这有时会导致计算中出现极其微小的舍入误差。(这是所有编程语言的通病,并非 Python 独有)
result = 0.1 + 0.2
print(result) # 输出: 0.30000000000000004
# 为了避免精度问题,你可以使用 round() 函数进行四舍五入,或者使用专业的 decimal 模块。
print(round(result, 2)) # 输出: 0.3- 特殊的浮点数值:浮点数还可以表示特殊的值,如无穷大 (inf) 和 “非数字” (nan - Not a Number)。
import math
infinity = float('inf')
not_a_number = float('nan')
print(infinity) # 输出: inf
print(not_a_number) # 输出: nan
print(math.isinf(infinity)) # 输出: True (判断是否为无穷大)
print(math.isnan(not_a_number)) # 输出: True (判断是否为非数字)3. 字符串 (Strings):字符的序列
字符串用于表示文本。它们是由括在单引号 ('...') 或双引号 ("...") 中的字符序列组成的。字符串是存储和处理文本数据的核心。
3.1 定义字符串
# 将字符串赋值给变量
name = "爱丽丝"
message = '你好,世界!'
empty_string = "" # 这是一个空字符串
print(name) # 输出: 爱丽丝
print(message) # 输出: 你好,世界!
print(empty_string) # 输出: (什么也不显示)3.2 字符串操作
字符串支持多种极其方便的操作:
- 拼接 (Concatenation):使用
+运算符将两个或多个字符串连接在一起。 - 重复 (Repetition):使用
*运算符将字符串重复多次。 - 索引 (Indexing):通过字符的位置编号(从 0 开始)来提取字符串中的单个字符。
- 切片 (Slicing):提取字符串中的连续一段片段。
first_name = "John"
last_name = "Doe"
full_name = first_name + " " + last_name # 字符串拼接
print(full_name) # 输出: John Doe
greeting = "你好! "
repeated_greeting = greeting * 3 # 字符串重复
print(repeated_greeting) # 输出: 你好! 你好! 你好!
message = "Python"
print(message[0]) # 索引 (输出: P,因为第一位索引是0)
print(message[1:4]) # 切片 (输出: yth,提取索引1到3的字符,不包含4)常见应用场景:
- 存储个人信息:如姓名、家庭住址。
- 生成动态消息:为电子邮件或 App 通知生成带变量的文本。
- 数据解析:从文本文档或日志中提取关键信息。
3.3 进阶概念:不可变性与转义字符
- 字符串的不可变性 (Immutability):字符串一旦被创建,其内部的值就无法被修改。任何看起来像是在“修改”字符串的操作(比如拼接),实际上都是在内存中创建了一个全新的字符串。
- 字符串方法:Python 提供了极其丰富的内置方法来处理字符串(如转化为大写
upper(),去空格strip(),替换replace(),分割split())。我们将在专门的“字符串操作”章节中深入学习。 - 转义序列 (Escape Sequences):当你需要在一个字符串中包含一些难以直接输入的特殊字符(比如换行符、制表符、或者引号本身)时,需要使用反斜杠 \ 引导的转义序列:
\n表示换行\t表示制表符 (Tab)\'或\"表示在字符串内强行输出引号,避免语法冲突。
message = "这是第一行。\n这是新的一行。"
print(message)
# 输出:
# 这是第一行。
# 这是新的一行。
quote = "他说道,\"你好!\""
print(quote) # 输出: 他说道,"你好!"4. 布尔值 (Booleans):真与假
布尔值只代表两种状态:真 (True) 或 假 (False)。它们是程序中进行逻辑判断、做决策以及控制代码执行流程的绝对核心。
注意:在 Python 中,True和False首字母必须大写。
4.1 定义布尔值
# 将布尔值赋值给变量
is_active = True
is_valid = False
print(is_active) # 输出: True
print(is_valid) # 输出: False4.2 布尔逻辑运算
布尔值支持三大逻辑运算符:
and(与):只有当两边的值都为True时,结果才为True。or(或):只要两边有一个值为True,结果就为True。not(非):将结果反转。True变成False,False变成True。
a = True
b = False
print(a and b) # 输出: False
print(a or b) # 输出: True
print(not a) # 输出: False常见应用场景:
- 条件逻辑:使用
if / else语句,根据某些条件决定执行哪段代码。 - 数据校验:检查用户输入的数据是否符合特定标准。
- 状态标记 (Flags):表示程序中的某个功能是否开启,或者对象处于什么状态。
4.3 进阶概念:真值测试与比较运算符
- 真值测试 (Truthiness):在 Python 中,几乎所有的数据都可以被隐式转换为布尔值进行判断。
- 以下值会被视为
False:空字符串""、数字0、空列表[]、None。 - 除此之外的绝大多数值都会被视为
True(例如非空字符串、任何非零数字)。 - 比较运算符:比较运算符(如
==等于,!=不等于,<小于,>大于,<=小于等于,>=大于等于)的计算结果永远是布尔值。
x = 5
y = 10
print(x == y) # 输出: False (判断 x 是否等于 y)
print(x != y) # 输出: True (判断 x 是否不等于 y)
print(x < y) # 输出: True (判断 x 是否小于 y)
print(x > y) # 输出: False (判断 x 是否大于 y)