CHAPTER 03

Python 基本数据类型

数字 · 字符串 · 布尔 · 类型转换

欢迎关注微信公众号

coder程 查令十街84号
1

数字类型

整数、浮点数、复数及运算
2

字符串

索引、切片、方法、格式化
3

布尔类型

True/False、逻辑运算
4

类型转换

int() / str() / float() 等

int 整数

无大小限制
十进制 / 二进制 0b / 八进制 0o / 十六进制 0x

a = 100
b = 0b1010   # 10
c = 0xFF     # 255

float 浮点数

带小数点或科学计数法
注意精度问题

f1 = 3.14
f2 = 1.5e2   # 150.0
f3 = 0.1 + 0.2  # 0.30000000000000004

complex 复数

实部 + 虚部,用 j 表示

z = 3 + 4j
print(z.real)   # 3.0
print(z.imag)   # 4.0
print(abs(z))  # 5.0
浮点数精度: 0.1 + 0.2 ≠ 0.3 是计算机浮点数的固有限制。需要精确计算时,使用 decimal 模块。

常用运算符

  • + - * / 除(浮点)
  • // 整除 % 取余 ** 幂运算
  • divmod(a, b) → (a//b, a%b)
  • round(x, n) 四舍五入
  • abs(x) 绝对值 pow(x, y)

代码示例

17 / 5     # 3.4   (浮点除)
17 // 5    # 3     (整除)
17 % 5     # 2     (取余)
2 ** 10    # 1024  (2的10次方)
divmod(17, 5)  # (3, 2)
round(3.14159, 2)  # 3.14

创建字符串

s1 = '单引号'
s2 = "双引号"
s3 = '''多行
字符串'''

# 转义字符
s4 = "Line1\nLine2\tTab"
s5 = r"C:\\Users\\Tom"  # 原始字符串

索引与切片

s = "Python"
s[0]      # 'P'   正向索引
s[-1]     # 'n'   反向索引
s[0:3]    # 'Pyt' [开始:结束)
s[:3]     # 'Pyt' 省略开头
s[3:]     # 'hon' 省略结尾
s[::-1]   # 'nohtyP' 反转
切片公式: s[start:end:step] — 包含 start,不包含 end,步长 step。步长为负时反向取。
s = "  Hello World  "

s.strip()       # "Hello World"  去空白
s.lower()       # "  hello world  "
s.upper()       # "  HELLO WORLD  "
s.replace("World", "Python")  # "  Hello Python  "
s.split(" ")    # ['', '', 'Hello', 'World', '', '']
"-".join(["a", "b", "c"])  # "a-b-c"
s = "abc123"

s.startswith("ab")   # True
s.endswith("23")     # True
s.find("c")        # 2  (找不到返回 -1)
s.count("a")       # 1
s.isdigit()        # False
"123".isdigit()    # True
字符串不可变: 所有字符串方法都返回 新字符串 ,不会修改原字符串。要保存结果必须赋值给变量。

布尔值

只有两个值: True False

flag = True
print(type(flag))   # <class 'bool'>

# 布尔本质
int(True)   # 1
int(False)  # 0

比较运算符

==  # 等于   !=  # 不等于
>   # 大于   <   # 小于
>=  # 大于等于   <=  # 小于等于

逻辑运算符

a, b = True, False

a and b   # False (全真才真)
a or b    # True  (有真即真)
not a     # False (取反)

# 短路求值
0 and print("x")   # 0 (不执行 print)
1 or print("y")    # 1 (不执行 print)

在条件判断中,以下值会被视为 False ("假值"),其余均为 True ("真值"):

假值(Falsy)

  • None
  • False
  • 数字 0 0.0 0j
  • 空字符串 ""
  • 空列表 []
  • 空元组 ()
  • 空字典 {}
  • 空集合 set()

实用技巧

name = ""
if name:
    print("有名字")
else:
    print("名字为空")

items = []
print("有内容" if items else "为空")

常用转换函数

  • int(x) — 转整数
  • float(x) — 转浮点数
  • str(x) — 转字符串
  • bool(x) — 转布尔值
  • list(x) — 转列表
  • tuple(x) — 转元组
  • set(x) — 转集合

代码示例

s = "123"
n = int(s)      # 123
f = float(s)    # 123.0

x = 3.14
i = int(x)      # 3 (截断小数)
t = str(x)      # "3.14"

# 类型判断
type(x)         # <class 'float'>
isinstance(x, float)  # True
注意: int("3.14") 会报错!必须先 float("3.14") int()

本章总结

数字

int(无限精度)、float(注意精度)、complex(j 表示虚部)。运算符 + - * / // % **。

字符串

不可变序列,支持索引、切片、丰富的内置方法。f-string 是最佳格式化方案。

布尔与转换

True/False,and/or/not 逻辑运算。假值判断简化代码。用 int()/str()/float() 做显式转换。

下一章 ▶