第2章 Python 语言基础
本课地图 · 7大模块 + 10个AI渗透点
本次课分为7个模块,每个模块都融入了AI渗透点,用当前所学语法解释AI内部机制。基础阶段"基本不接入"AI,学生不动手用AI,仅观察教师演示。
2.1 常量与变量
核心概念
常量是固定不变的值(如3、"hello"),变量通过赋值创建,是贴在值上的"便利贴"——存的是内存地址,不是值本身。
# 常量 >>> 3 3 # 变量:通过赋值创建 >>> age = 18 >>> age 18 # 变量的值可以改变 >>> age = 20 >>> age 20 # 先定义后使用,否则NameError >>> print(name) NameError: name 'name' is not defined
sum = 0,之后 sum([1,2,3]) 就会报 TypeError。后悔药:del sumAI 渗透 · AI-01 变量 = 模型参数
三行代码看懂"训练"
AI的"学习",本质就是一大堆变量被不断重新赋值。w是模型参数(就是一个变量),每次根据误差调整w,就是一次"学习"。GPT有几千亿个这样的w。全程没有循环、没有AI库,只有赋值+算术。
x, y_true = 2.0, 10.0 w = 1.0 # 初始猜测 lr = 0.1 # 学习率 # 第1次学习 pred = w * x w = w - lr * (pred - y_true) * x print(w) # 2.6 # 第2次学习 pred = w * x w = w - lr * (pred - y_true) * x print(w) # 3.56 # 第3次学习 pred = w * x w = w - lr * (pred - y_true) * x print(w) # 4.136 print("正确答案 w = 5.0")
2.2 运算符与表达式
运算符全景与优先级
Python运算符分为算术、关系、逻辑、赋值、成员测试等。优先级从高到低:** > * / // % > + - > 位运算 > in/not in/is > 比较 > not > and > or。记不住怎么办?加括号!
>>> 7 / 2, 7 // 2, 7 % 2, 7 ** 2 (3.5, 3, 1, 49) >>> -7 // 3, -7 % 3 (-3, 2) # 向下取整,余数永远非负 >>> 2 ^ 3 1 # 位异或,不是8!
and返回第一个假值或最后一个真值;or返回第一个真值或最后一个假值。惰性求值:False and 1/0 不报错,因为右边压根没算!AI 渗透 · AI-02/03 神经元 = 加权求和
AI最核心的一行代码,只有加减乘
AI-02 神经元 = 加权求和:y = w1*x1 + w2*x2 + w3*x3 + b。权重不同=模型不同=判断标准不同。整个深度学习=很多个这样的表达式叠起来。
AI-03 置信度 = float + 阈值:AI不说"是猫",它说"是猫的概率0.83"。float表示概率,阈值判断分类。
# 输入:耳朵尖度、胡须长度、眼睛颜色 x1, x2, x3 = 0.9, 0.7, 0.8 # 权重(模型学到的参数) w1, w2, w3 = 0.5, 0.3, 0.2 b = -0.4 # 神经元 = 加权求和 y = w1*x1 + w2*x2 + w3*x3 + b print(f"加权和 = {y:.3f}") # sigmoid激活 → 概率 import math prob = 1 / (1 + math.exp(-y)) print(f"是猫的概率 = {prob:.2%}") print("判断:", "是猫" if prob > 0.5 else "不是猫")
2.3 数据类型
六大类型速览
| 类型 | 示例 | 说明 |
|---|---|---|
| int | 42, -10 | 整数,无大小限制 |
| float | 3.14, 1.5e10 | 浮点数,IEEE 754 |
| complex | 3+4j | 复数,本章了解 |
| bool | True, False | int的子类,True=1, False=0 |
| str | "hello" | 字符串,不可变 |
| NoneType | None | 空值 |
AI 渗透 · AI-08 浮点精度陷阱 = AI幻觉
本章最震撼的演示:0.1 + 0.2 ≠ 0.3
浮点数在计算机中用二进制表示,0.1和0.2都无法精确表示。这不是bug,是IEEE 754标准的特性。AI幻觉也一样:非常流畅、非常自信地给你一个错答案。所以:AI给的每一个关键结论,你都要能自己验证。
>>> 0.1 + 0.2 0.30000000000000004 >>> 0.1 + 0.2 == 0.3 False # 震惊全场 >>> round(0.1 + 0.2, 2) 0.3 >>> abs((0.1+0.2) - 0.3) < 1e-9 True # 正确比较姿势
2.4 内置函数
Python有150+个内置函数,本章最常用的包括:abs()、round()、pow()、divmod()、max()、min()、sum()、len()、type()、int()、float()、str()、bool()、id()、help()、dir()。用 dir(__builtins__) 可以查看全部。
help(print) 查看函数文档,dir(str) 查看字符串的所有方法。遇到不会的函数,先help()再问人。2.5 基本输入输出
input() 返回值铁律
input() 拿到的一定是字符串!即使输入的是数字,也需要用 int() 或 float() 转换。# 错误版本:input返回字符串,+变成拼接 a = input("a: ") b = input("b: ") print(a + b) # 输入10、20 → 输出 1020(字符串拼接!) # 正确版本:先转类型 a = float(input("a: ")) b = float(input("b: ")) print(a + b) # 输入10、20 → 输出 30.0
print() 的 sep 与 end
print("a", "b", "c")
a b c # 默认sep=' '
print("a", "b", "c", sep="-")
a-b-c
print("hello", end=" ")
print("world")
hello world # 默认end='\n'
name = "张三"; age = 20
print(f"{name}今年{age}岁") # f-string,推荐
print("{}今年{}岁".format(name, age)) # format()
2.6 模块的使用
模块是包含Python定义和语句的文件。使用模块可以复用代码、组织程序。Python有丰富的标准库模块,如math、random、datetime、os等。
# 方式1:导入整个模块 import random print(random.randint(1, 10)) # 方式2:导入特定函数 from random import randint, choice print(randint(1, 10)) print(choice(['A', 'B', 'C'])) # 方式3:导入并起别名 import random as rnd print(rnd.random())
random 模块
import random random.random() # 0~1随机小数 random.randint(1, 10) # 1~10随机整数(含两端) random.choice(['N','S','E','W']) # 随机选一个 random.sample(range(1,35), 7) # 彩票:7个不重复 random.shuffle([1,2,3,4,5]) # 洗牌:原地打乱
AI 渗透 · AI-06 生成式AI = 带概率的词语接龙
本场高潮:用random模块理解大模型怎么"说话"
生成式AI的本质,就是在每一步根据概率随机选择下一个词——就像"词语接龙",但每个候选词有不同的概率。random.choices()带weights参数,就是AI采样的最小模型。
import random # 简化版:给定"今天天气",AI预测下一个词的概率分布 words = ["很好", "不错", "很差", "一般"] probs = [0.6, 0.25, 0.05, 0.1] # 概率加起来=1 # 采样10次,看看AI每次会说什么 for i in range(10): next_word = random.choices(words, weights=probs, k=1)[0] print(f"第{i+1}次: 今天天气{next_word}") # 这就是大模型生成文本的基本原理: # 每一步都在做带概率的随机选择 # 温度(temperature)控制概率分布的尖锐程度
2.7 综合应用
例:闰年判断
year = int(input("请输入年份:"))
# 闰年规则:能被4整除但不能被100整除,或能被400整除
is_leap = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
if is_leap:
print(f"{year}年是闰年")
else:
print(f"{year}年是平年")
例:海伦公式求三角形面积
import math
a = float(input("边长a:"))
b = float(input("边长b:"))
c = float(input("边长c:"))
s = (a + b + c) / 2 # 半周长
area = math.sqrt(s * (s-a) * (s-b) * (s-c))
print(f"三角形面积 = {area:.2f}")
交互演示区
在浏览器中直接体验Python语法效果(JS模拟)。
演示1:变量赋值与类型
演示2:运算符计算
演示3:AI生成式采样(带概率的随机选择)
本章小结 · 三句话 + 10个AI渗透点
10个AI渗透点速查
| 编号 | 对应语法 | AI概念 |
|---|---|---|
| AI-01 | 变量与赋值 | 模型参数=变量,训练=不断重新赋值 |
| AI-02 | 算术表达式 | 神经元=加权求和 y=Σwᵢxᵢ+b |
| AI-03 | float+比较 | 置信度=float概率,阈值判断分类 |
| AI-04 | 逻辑运算符 | 规则引擎=and/or/not组合条件 |
| AI-05 | 字符串 | Prompt=字符串,AI的输入就是一段文字 |
| AI-06 | random模块 | 生成式AI=带概率的词语接龙 |
| AI-07 | input+print | 单轮对话=输入→处理→输出 |
| AI-08 | 浮点精度 | AI幻觉=机器会自信地犯错 |
| AI-09 | 异常处理 | 让AI解释报错(教师演示) |
| AI-10 | print格式化 | Prompt四要素=参数化模板 |
推荐视频与资源
以下链接均已逐个打开核对可用:前两项是本课程的配套视频与官方教程,其余是公开的优质拓展资源(供课后自学)。外部视频由第三方平台提供,若某个链接失效,复制标题到平台检索即可。
| 序号 | 资源 | 平台 | 适合内容 |
|---|---|---|---|
| 1 | Python编程与数据分析基础(本课程配套视频) | 学堂在线 | 跟随课程进度预习与复习,与教材章节对应 |
| 2 | Python 官方教程(中文版) | python.org | 权威语法参考,遇到疑问时的第一检索站 |
| 3 | 黑马程序员·Python零基础全套教程 | B站 | 系统补基础:变量、运算符、数据类型逐节讲解 |
| 4 | 尚硅谷·Python零基础教程 | B站 | 与上一套互为补充,选择一套跟完即可 |
| 5 | 3小时超快速入门Python(动画教学) | B站 | 时间紧时的快速通览、考前复习 |
| 6 | 深度学习之神经网络的结构(3Blue1Brown) | B站 | 理解“神经元=加权求和”,对应 AI-02/03 渗透点 |
| 7 | 从词向量到Transformer:AI大模型背后的原理 | B站 | 理解生成式AI=概率词语接龙,对应 AI-06 渗透点 |
| 8 | 浮点算术:问题和限制(Python 官方文档) | python.org | 0.1+0.2≠0.3 的原理,对应 AI-08 浮点精度 |
还想深入?“变量是内存中的引用”可在B站检索 python 变量 内存;“input 与 print 格式化”可检索 python input print 格式化,建议选择播放量高、更新时间近的版本。