Python 零基础教程

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)     # 输出: 2023

1.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.14159

2.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 中,TrueFalse 首字母必须大写。

4.1 定义布尔值

# 将布尔值赋值给变量
is_active = True
is_valid = False

print(is_active) # 输出: True
print(is_valid)  # 输出: False

4.2 布尔逻辑运算

布尔值支持三大逻辑运算符:

  • and (与):只有当两边的值都为 True 时,结果才为 True
  • or (或):只要两边有一个值为 True,结果就为 True
  • not (非):将结果反转。True 变成 FalseFalse 变成 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)