第2章 变量、类型与运算

变量与动态类型、数字与字符串、输入输出、运算符与类型转换——写程序的最小积木。

语法第2-3周3 讲8 段示例代码

本章学习目标

  • 能正确命名变量并判断其类型
  • 能熟练操作字符串(切片、格式化、常用方法)
  • 能用 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,但不要滥用。

可变与不可变

  • 数字、字符串、元组是不可变的(改就生成新对象)。
  • 列表、字典、集合是可变的(可以在原对象上增删改)。
  • 理解这一点,后面“函数传参改不改得动”就通了。

代码示例

▶ 类型与转换
PYTHON
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 与判断
PYTHON
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。

代码示例

▶ 切片与反转
PYTHON
s = "Python编程"
print(s[0], s[-1])
print(s[:6])
print(s[::-1])
👀 运行结果
P 程
Python
程编nohtyP
▶ 切分与拼接
PYTHON
line = " 张三,89.5,男 "
parts = line.strip().split(",")
print(parts)
print("-".join(parts))
👀 运行结果
['张三', '89.5', '男']
张三-89.5-男
▶ f-string 格式化
PYTHON
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=" " 可以同行输出。

代码示例

▶ 除法与取余
PYTHON
print(10 / 4, 10 // 4, 10 % 4, 2 ** 10)
👀 运行结果
2.5 2 2 1024
▶ 输入两个数求和
PYTHON
a = int(input("第一个数:"))
b = float(input("第二个数:"))
print(f"和 = {a + b}")
👀 运行结果
第一个数:3
第二个数:4.5
和 = 7.5
▶ 链式比较与逻辑
PYTHON
score = 85
if 60 <= score < 90:
    print("及格且未优秀")
👀 运行结果
及格且未优秀

常见错误

⚠️ 踩坑与解决
  • ValueError: invalid literal for int() with base 10: 'abc'
    → 把非数字字符串转 int;先判断 s.isdigit() 或 try/except
  • TypeError: '<=' not supported between instances
    → 类型不可比较(如 None 和数字);先确认数据清洗干净

💡 写除法前先想清楚要整数还是小数:成绩、金额用 /,分页、取整用 //。