第2章 变量、类型与运算
变量与动态类型、数字与字符串、输入输出、运算符与类型转换——写程序的最小积木。
本章学习目标
- 能正确命名变量并判断其类型
- 能熟练操作字符串(切片、格式化、常用方法)
- 能用 input / print 完成交互
- 能说出 / 与 //、== 与 is 的区别
本章导览
核心内容
2.1
变量与基本数据类型
Python 不需要声明类型,但值都有类型:int、float、str、bool、None。
能创建变量并用 type() 查看类型能区分 int 与 float、字符串与数字知道 None 的含义
知识点
变量就是贴标签
- age = 20 表示把 20 这个对象命名为 age,不是“把值放进盒子”。
- 同一个变量可以先后指向不同类型的对象,这叫动态类型。
- 命名用英文小写加下划线(student_name),不能以数字开头,不能用关键字。
五种常用类型
- int(整数)、float(小数)、str(字符串)、bool(True/False)、None(空值)。
- type(x) 看类型;int("18")、float("3.5")、str(18) 做转换。
- 布尔值参与运算时 True=1、False=0,但不要滥用。
可变与不可变
- 数字、字符串、元组是不可变的(改就生成新对象)。
- 列表、字典、集合是可变的(可以在原对象上增删改)。
- 理解这一点,后面“函数传参改不改得动”就通了。
代码示例
▶ 类型与转换
age = 20
score = 89.5
name = "张三"
passed = True
print(type(age), type(score), type(name), type(passed))
n = int("123") + 1
print(n)👀 运行结果
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> 124
▶ None 与判断
x = None
if x is None:
print("x 还没有值")👀 运行结果
x 还没有值
常见错误
⚠️ 踩坑与解决
TypeError: can only concatenate str (not "int") to str
→ 字符串 + 数字没转换;用 str(n) 或 f-string 拼接NameError: name 'age' is not defined
→ 变量名拼错或没定义;检查拼写,注意大小写
💡 判断空值用 is None,不要用 == None。
2.2
字符串的常用操作
字符串是数据分析里出现最多的类型:切片、方法、格式化三件事练熟就够了。
能用下标与切片取子串能用 split/join/replace/strip 处理文本能用 f-string 格式化输出
知识点
下标与切片
- 下标从 0 开始,s[0] 第一个字符,s[-1] 最后一个。
- s[1:4] 取下标 1、2、3(左闭右开);s[::-1] 反转字符串。
- 切片越界不会报错,只会返回空串或到末尾为止。
常用方法
- split(",") 按分隔符切分;join 反过来拼接;strip() 去首尾空白。
- replace(a, b) 替换;find/index 查找位置;count 统计次数。
- upper/lower/title 改大小写;startswith/endswith 判断前后缀。
f-string 格式化
- f"{name} 考了 {score:.1f} 分" 可以指定小数位。
- f"{x:>8}" 右对齐宽度 8,f"{x:05d}" 补零到 5 位。
- 比 % 与 format() 更直观,推荐统一用 f-string。
代码示例
▶ 切片与反转
s = "Python编程"
print(s[0], s[-1])
print(s[:6])
print(s[::-1])👀 运行结果
P 程 Python 程编nohtyP
▶ 切分与拼接
line = " 张三,89.5,男 "
parts = line.strip().split(",")
print(parts)
print("-".join(parts))👀 运行结果
['张三', '89.5', '男'] 张三-89.5-男
▶ f-string 格式化
name, score = "李四", 92.456
print(f"{name} 的成绩:{score:.2f}")
print(f"|{name:>6}|{score:<8.1f}|")👀 运行结果
李四 的成绩:92.46 | 李四|92.5 |
常见错误
⚠️ 踩坑与解决
IndexError: string index out of range
→ 下标超出长度;先用 len(s) 看长度,或用切片AttributeError: 'str' object has no attribute 'append'
→ 字符串没有 append;用 s = s + "x" 或列表
💡 处理一行数据先 strip 再 split,能避免大量“明明有值却匹配不上”的问题。
2.3
运算符与输入输出
算术、比较、逻辑、赋值四类运算符,加上 input/print 就够写小程序了。
能区分 / 与 //、== 与 is能用逻辑运算符组合条件能处理 input 读到的字符串并转成数字
知识点
算术与比较
- / 结果是 float(10/2=5.0),// 是整除(10//3=3),% 取余,** 幂。
- 比较运算符返回 bool;链式写法 0 <= x < 100 在 Python 里合法。
- == 比较值是否相等,is 比较是不是同一个对象(小整数有缓存,别用 is 比数字)。
逻辑运算的短路
- and / or / not 组合条件;and 左边为假就不看右边。
- 常用写法:value = x or "默认值";name = n if n else "匿名"。
- 注意空字符串、0、[]、None 在布尔判断中都算假。
输入输出的坑
- input() 永远返回字符串,做算术要先 int()/float() 转换。
- 多值输入:a, b = input().split(),再逐个转换。
- print 默认换行,end=" " 可以同行输出。
代码示例
▶ 除法与取余
print(10 / 4, 10 // 4, 10 % 4, 2 ** 10)👀 运行结果
2.5 2 2 1024
▶ 输入两个数求和
a = int(input("第一个数:"))
b = float(input("第二个数:"))
print(f"和 = {a + b}")👀 运行结果
第一个数:3 第二个数:4.5 和 = 7.5
▶ 链式比较与逻辑
score = 85
if 60 <= score < 90:
print("及格且未优秀")👀 运行结果
及格且未优秀
常见错误
⚠️ 踩坑与解决
ValueError: invalid literal for int() with base 10: 'abc'
→ 把非数字字符串转 int;先判断 s.isdigit() 或 try/exceptTypeError: '<=' not supported between instances
→ 类型不可比较(如 None 和数字);先确认数据清洗干净
💡 写除法前先想清楚要整数还是小数:成绩、金额用 /,分页、取整用 //。