Python 大数据分析基础 · 第2次课

第2章 Python语言基础

常量与变量 · 运算符与表达式 · 数据类型 · 内置函数 · 基本输入输出 · 模块 · 综合应用

中华女子学院4学时 · 180分钟授课人:孙琪翔AI渗透式教学设计

本章导览

Chapter Overview · 先看整体,再逐个模块学习

上节回顾:第1次课要点

  • Python是一门简洁、易学、功能强大的编程语言,广泛应用于数据分析、人工智能、Web开发等领域。
  • Python的安装与环境配置:Anaconda集成环境、IDLE编辑器、命令行运行方式。
  • 第一个Python程序:print()输出、注释的使用、代码的基本结构。
  • Python的特点:解释型、跨平台、开源免费、丰富的第三方库。

本次课将深入学习Python的核心语法:变量、运算符、数据类型、输入输出和模块

配套课堂演示网页 · 演示Demo
7 大模块的现场演示代码 · 可交互的运算符计算、输入输出与 AI 概率采样演示 · AI 渗透点讲解 · 推荐视频
打开演示Demo →

本课地图:7个模块

本次课分为7个模块,每个模块都融入了AI渗透点,用当前所学语法解释AI内部机制。点击卡片可跳转到对应模块。

第2章知识点总览(图2-5 第2章小结)

下图是教材中第2章小结的思维导图,本网页全部知识点均以它为依据展开。右侧是可交互的知识树,点击节点即可跳转到对应讲解模块,点击三角可展开/收起分支。

图2-5 第2章小结思维导图
图2-5 第2章小结:Python语言基础思维导图
Python语言基础
变量2.1
存储程序执行过程中的信息
遵循命名规则
数据类型2.3
基本数据类型
数字型:整数(int)、浮点数(float)
布尔型:True、False
字符串类型:使用引号作为定界符
查看数据类型:type()
不同的数据类型可以存储不同形式的数据,支持不同的操作
动态类型
变量类型由值决定,且类型检查严格
变量的值和数据类型可以在运行时动态改变
运算符与表达式2.2
算术运算符、关系运算符、逻辑运算符、成员测试运算符等
表达式:运算符、操作对象及其他语法元素的组合,通过运算产生一个确定的值
运算符优先级:使用()可以显式指定优先级
函数2.4
调用格式:函数名(参数1,参数2,…)
内置函数
input()输入函数,返回值都是字符串类型
print()输出函数——格式化输出
模块2.6
导入:import、from…import
提示:点击三角展开/收起分支,点击节点文字跳转到对应模块。本页所有代码示例均可点击“运行”查看结果。
2.1

常量与变量

怎么让电脑记住数据 · 变量是贴在值上的便利贴

1. 核心概念

变量的创建:变量是通过赋值方式创建的,并通过变量名标识。格式:变量名 = 值。程序代码按照书写顺序依次执行,所有变量必须先定义后使用,否则会输出报错信息。
演示:变量的创建与使用
# 变量通过赋值方式创建,格式:变量名 = 值
name = "Zhang San"
age = 18
print(name)
print(age)
type(age)    # 查看变量的数据类型
演示:变量必须先定义后使用(否则报错)
print(name)    # 还没有定义 name,直接使用会报错

2. 变量的命名规则

  1. 必须以字母或下划线开头,不能以数字开头;其余部分可以是字母、下划线或者数字。
  2. 不能有空格和标点符号(如括号、引号、逗号、斜线、反斜线、冒号、句号、问号等)。
  3. 不能使用Python的关键字、标识符、内置函数名等系统保留字。
  4. Python变量名对字母大小写敏感Namename是不同的变量。
【注意】变量名称应见名知义,推荐使用 snake_case 命名风格,例如 number_of_studentsmax_score
变量名是否正确说明
num_student合法,推荐见名知义,snake_case风格
sName合法,推荐大小写敏感,sName 与 sname 是两个变量
true合法但不可取True 是关键字,true(小写)不是,但极易混淆
sum不推荐与内置函数 sum() 重名,会覆盖其功能
2month不合法以数字开头
x$2不合法包含标点符号 $
and不合法是Python关键字

关键字(保留字)

关键字是指已被Python使用的标识符,用来表达特定的语义,不允许通过任何方式改变它们的含义。可以用 keyword 模块查看全部关键字:

演示:查看Python全部关键字
import keyword
print(keyword.kwlist)    # 输出全部关键字列表

内置函数名不能作为变量名

内置函数是Python解释器自带的函数,如果变量名与内置函数重名,则会覆盖函数原来的功能。例如写了 sum = 0 之后,再调用 sum([1,2,3]) 就会报错,可用 del sum 恢复。

演示:查看内置函数(__builtins__)
dir(__builtins__)    # 查看内置模块中所有的名字(含内置函数)

3. 变量的存储

Python语言中的变量存储的是其值在内存的地址。赋值语句的执行过程:首先把等号右侧表达式的值计算出来,然后在内存中寻找一个位置把值存放进去,最后创建变量并指向这个内存地址。变量的值是可以改变的——重新赋值时,变量会改指向新的内存位置。

x = 3:内存中存放 3,变量 x 指向它

x → 3

x = 6:内存中存放 6,变量 x 改指向它(3仍在内存中)

x → 6

4. 动态类型特性

演示:动态类型——同一个变量存放不同类型的数据
x = 3          # 此时x是整数
type(x)
x = "Python"   # 重新赋值为字符串
type(x)
x = True       # 再赋值为布尔值
type(x)

5. 例题:例2-1 员工月薪计算(变量与常量)

假设一个员工每小时的工作薪酬为50元,每天工作8小时,每月工作22天。计算其每月薪酬为多少?如果每小时薪酬上调为80元,每月薪酬又是多少?

例2-1:员工月薪计算
# 例2-1:员工月薪计算(变量与常量)
# 每小时50元,每天工作8小时,每月工作22天
hourly_salary = 50                      # 变量:时薪
month_salary = hourly_salary * 8 * 22   # 表达式:月薪 = 时薪×每天小时×每月天数
print(month_salary)

hourly_salary = 80                      # 时薪上调为80元(变量值可改变)
month_salary = hourly_salary * 8 * 22
print(month_salary)
AI渗透 · AI-01变量 = 模型参数
AI的学习,本质就是一大堆变量不断被重新赋值。w 是模型参数(就是一个变量),每次根据误差调整 w,就是一次学习。GPT有几千亿个这样的 w。全程没有循环、没有AI库,只有赋值 + 算术
AI训练最小演示:一个参数 w 的学习(梯度下降的本质)
# AI训练最小演示:一个参数w的学习
x, y_true = 2.0, 10.0
w = 1.0        # 初始猜测
lr = 0.1       # 学习率

# 第1次学习:预测 - 误差 - 调整w
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

# 正确答案 w = 5.0(因为 5*2=10)
print("正确答案 w = 5.0")
核心洞察:AI的学习 = 变量 w 被反复赋值。没有循环、没有AI库,只有赋值 + 算术。思考:如果学习率 lr 太大或太小,会发生什么?
本节小结变量是"便利贴",不是"盒子"——它存的是值的地址,重新赋值就是换一张便利贴。命名记四条:字母/数字/下划线、数字不开头、区分大小写、不用关键字与内置函数名。变量类型跟着值走(动态类型),age = 18 之后写 age = "十八" 不会报错,但会让人看不懂。先赋值后使用,否则 NameError
2.2

运算符与表达式

怎么让电脑算题目 · 算术/关系/逻辑/赋值/成员

1. 基本概念

2. 算术运算符

运算符名称示例说明
+7 + 2 = 9数值相加,字符串拼接
-7 - 2 = 5数值相减
*7 * 2 = 14数值相乘,字符串重复
/7 / 2 = 3.5结果永远是float
//整除7 // 2 = 3向下取整,余数永远非负
%取余7 % 2 = 1取除法的余数
**2 ** 3 = 8乘方,不是 ^
注意:Python中 / 结果永远是float(7/2=3.5),// 是向下取整(7//2=3),^ 是位异或不是幂!
演示:算术运算符
# 算术运算符:+ - * / // % **
7 / 2       # 除法,结果永远是float
7 // 2      # 整除,向下取整
7 % 2       # 取余
2 ** 3      # 幂运算
-7 // 2     # 向下取整,结果是-4而不是-3!
2 ^ 3       # ^ 是位异或,不是幂运算!

3. 关系运算符

关系运算符比较两个对象的值的大小,结果为布尔值(True / False)。关系运算符可以连用,例如 1 < 3 < 5 等价于 1 < 3 and 3 < 5

运算符含义示例结果
==等于(比较,不是赋值 =)"abc" == "abc"True
!=不等于3 != 5True
> <大于 / 小于3 > 5False
>= <=大于等于 / 小于等于5 >= 5True
演示:关系运算符(结果为布尔值)
# 关系运算符:== != > < >= <=
3 > 5
3 < 5
1 < 3 < 5        # 关系运算符可以连用
"abc" == "abc"
"abc" == "ABC"   # 字符串比较大小写敏感
5 >= 5

4. 逻辑运算符

逻辑运算符主要用于连接条件表达式从而构成更复杂的表达式,运算结果为布尔值(True / False)andor 具有惰性求值(短路)的特点,连接多个表达式时只计算必须要计算的值。

aba and ba or bnot a
TrueTrueTrueTrueFalse
TrueFalseFalseTrueFalse
FalseTrueFalseTrueTrue
FalseFalseFalseFalseTrue
演示:逻辑运算符与惰性求值(短路)
# 逻辑运算符:and or not
3 > 5 and 1 / 0      # 左边为False,右边压根没算!(短路)
3 > 5 or "hello"     # 左边为False,返回右边的值
not True

# 优先级:not > and > or;记不住就加括号!
True or False and False
(True or False) and False

5. 赋值运算符与复合赋值

复合赋值运算符:+= -= *= /= //= %= **=。例如 x += 3 等价于 x = x + 3

Python没有 ++-- 运算符!x++ 是语法错误,自增要写成 x += 1
演示:复合赋值运算符
# 复合赋值:x op= 值 等价于 x = x op 值
x = 5
x += 3      # x = x + 3 = 8
x *= 2      # x = x * 2 = 16
x //= 4     # x = x // 4 = 4
x **= 3     # x = x ** 3 = 64
print(x)

6. 成员测试运算符

成员测试运算符:测试一个对象是否为另一个对象的元素,结果为布尔值

演示:in / not in 成员测试
# 成员测试运算符:in / not in
"th" in "Python"              # 子串是否在字符串中
"Py" not in "Python"
3 in [1, 2, 3]                # 元素是否在列表中
"北京" in "中华人民共和国首都北京"  # 中文也可以

7. 运算符优先级

表达式中运算符优先级的规则为:算术运算符的优先级最高,其次是位运算符、成员测试运算符、关系运算符、逻辑运算符。为了避免优先级错误,最好使用圆括号 () 显式指定优先级,同时也能提高代码的可读性。

优先级运算符说明
1(高)**幂运算
2* / // %乘、除、整除、取余
3+ -加、减
4== != > < >= <=比较(关系)运算
5not逻辑非
6and逻辑与
7(低)or逻辑或
演示:运算符优先级与括号
# 先乘除后加减,幂最高;加括号最稳妥
2 + 3 * 4       # 先算 3*4,再 +2
(2 + 3) * 4     # 括号显式指定优先级
2 ** 3 ** 2     # 幂运算从右向左结合:2**9
(2 ** 3) ** 2   # 加括号后:(2**3)**2
最佳实践:复杂表达式一律加括号,不要依赖记忆优先级。代码是写给人看的,顺便让机器执行。
AI渗透 · AI-02/03神经元 = 加权求和 + 阈值
AI最核心的代码只有加减乘除:神经元 = 加权求和 y = w1*x1 + w2*x2 + w3*x3 + b,权重不同 = 模型不同 = 判断标准不同。置信度就是 float 表示的概率 + 阈值判断(prob > 0.5 → 是猫)。
神经元计算演示:加权求和 + 激活 + 阈值判断
# 神经元计算演示
# 输入:耳朵尖度、胡须长度、眼睛颜色
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 "不是猫")
AI渗透 · AI-04规则引擎 = and / or / not
在深度学习之前,AI的核心是规则引擎——用 and/or/not 组合条件来做决策。即使在今天,很多AI系统的前置过滤仍然是规则引擎。
规则引擎:贷款审批AI(组合简单条件表达复杂规则)
# 规则引擎:贷款审批AI(早期AI的核心逻辑)
def loan_approve(age, income, credit_score, has_job):
    # 规则1:年龄必须在18-65岁
    age_ok = (age >= 18) and (age <= 65)
    # 规则2:有工作 且 月收入 > 5000
    income_ok = has_job and (income > 5000)
    # 规则3:信用分 > 600
    credit_ok = (credit_score > 600)
    # 最终决策:所有条件都满足
    approve = age_ok and income_ok and credit_ok
    return approve

# 这就是 and/or/not 的力量——组合简单条件表达复杂规则
result = loan_approve(25, 8000, 700, True)
print("审批结果:", "通过" if result else "拒绝")
本节小结:① //向下取整% 的余数符号跟除数一致-7 // 2 = -4-7 % 2 = 1(不是 -3 和 -1);② and / or 返回的是操作数本身而不是 True/False:0 or 'x' 得到 'x';③ 它们惰性求值False and 1/0 不报错,因为右边压根没算;④ 优先级记不住就加括号
2.3

数据类型

数字·字符串·布尔 · 类型转换与浮点精度陷阱

1. 数据类型总览

数据类型是用来解决不同形式的数据在程序中的表达、存储和操作问题。Python支持的基本数据类型包括:数字、字符串、列表、元组、字典、集合。使用 type() 函数可以查看对象的数据类型。不同类型的对象可以存储不同形式的数据,支持不同的操作

【注意】Python解释器会根据赋值结果自动推断变量类型(动态类型)。
类型示例说明常见运算
int 整数42, -10整数,无大小限制+ - * // % **
float 浮点数3.14, 1.5e10浮点数,有精度限制+ - * / **
str 字符串"hello", "你好"字符串,用引号包裹+ * in len()
bool 布尔True, False布尔值,只有两个and or not
list 列表[1, 2, 3]有序、可修改的序列索引、切片、len()
tuple 元组(1, 2)有序、不可修改的序列索引、切片、len()
dict 字典{"name": "Tom"}键值对映射按键访问
set 集合{1, 2, 3}无序、不重复成员测试、集合运算
演示:type() 查看数据类型
# 使用type()函数可以查看对象的数据类型
age = 20
type(age)
type(0.3)
type(1e-6)
type(True)
type("Python")

2. 数字类型

Python中内置的数字类型有整型(int)、浮点型(float)、复数型(complex)

演示:int没有大小限制,float有精度陷阱
# int:无大小限制(2的1000次方,一个302位的大数)
2 ** 1000

# float:精度陷阱!
0.1 + 0.2
0.1 + 0.2 == 0.3

# 正确做法:用差值判断
abs(0.1 + 0.2 - 0.3) < 1e-9

# 科学计数法
1.5e10
浮点数比较永远不要用 ==,要用 abs(a - b) < 1e-9。整数精确,浮点数近似。
AI渗透 · AI-08AI幻觉 = 浮点精度
AI的所有计算都是浮点数运算。0.1+0.2≠0.3 这种微小误差,经过几千亿次运算后被放大,导致AI有时会给出看似合理但错误的答案——这就是AI幻觉的数学根源之一。

3. 数字类型之间的转换(强制转换)

数字类型之间可以强制转换int()float()str()bool()。转换失败会报 ValueError

演示:类型转换函数
# int():转整数
int("123")      # 字符串→整数
int(3.99)       # 浮点数→整数,截断不是四舍五入!
# float():转浮点数
float("3.14")
# str():转字符串
str(123)
# bool():转布尔值
bool(0)         # 0是空值 → False
bool(1)         # 非0 → True
bool("")        # 空字符串 → False
bool("hello")   # 非空字符串 → True
bool(None)      # None → False
# 转换失败会报错
int("abc")

4. 布尔型

布尔型:只有 TrueFalse 两个值,对应 1 和 0,主要用于逻辑判断。

演示:布尔型
# 布尔型:只有True和False两个值,对应1和0
3 > 5      # 不成立就是False
3 < 5      # 成立就是True

5. 例题:例2-2 三位数的拆位(整除与取余)

例2-2:计算并输出三位自然数的百位、十位和个位
# 例2-2:定义三位自然数,拆出百位、十位、个位
number = 123
a = number // 100       # 百位:整除100
b = number // 10 % 10   # 十位:先整除10再取余
c = number % 10         # 个位:取余10
print(a, b, c)

6. 字符串类型

字符串的本质是字符序列,在Python中用引号括起来的一个或一串字符就是字符串。引号称为定界符:单引号、双引号、三单引号、三双引号;不同形式的引号可以嵌套;三引号主要用于表示多行字符串

演示:字符串定义、定界符与嵌套
# 字符串:用引号括起来的字符序列,引号称为定界符
name = 'Linda'
type(name)
phone = "123456"      # 双引号,仍然是字符串
type(phone)
phone = 123456        # 去掉引号,变成数字
type(phone)

# 三引号表示多行字符串
str1 = '''Hello everyone!
Hello world!'''
print(str1)

# 引号嵌套
str2 = "I'm 18 years old."
print(str2)

Python3中的字符默认为Unicode编码,可以表示世界上任何书面语言的字符,包括中文。

字符串的索引与切片

字符Python
正索引012345
负索引-6-5-4-3-2-1
演示:字符串索引、切片与常用操作
# 索引:从0开始,负数从后往前
s = "Python"
s[0]         # 第一个字符
s[-1]        # 最后一个字符
# 切片:[start:end],含start不含end
s[0:3]       # 取第0~2个字符
s[:3]        # start省略 = 从0开始
s[3:]        # end省略 = 到末尾
# 常用操作
len(s)       # 长度
s.upper()    # 转大写
s.lower()    # 转小写
"th" in s    # 成员判断
s.replace("P", "J")   # 替换
切片 s[1:3] 取的是第 1 到 2 个字符(含start不含end),不是第1到第3个!

7. 列表、元组、字典和集合

列表、元组、字典、集合和字符串,都是Python中常用的序列数据结构。很多复杂的程序设计都要使用这些数据结构。

演示:查看复合数据结构的类型
# 列表、元组、字典、集合的类型
type([1, 2, 3])          # 列表 list
type((1, 2))             # 元组 tuple
type({"name": "Tom"})    # 字典 dict
type({1, 2, 3})          # 集合 set
AI渗透 · AI-05Prompt = 字符串
你给AI的提示词Prompt,本质就是一个字符串。AI接收字符串、输出字符串;字符串拼接 = 组合Prompt,字符串替换 = 修改Prompt参数。
本节小结:本章打交道的就四类——int、float、str、bool。转换要防坑int('3.5') 直接报 ValueError,得先 float('3.5') 再取整;bool 是 int 的子类,所以 True + 1 等于 2;字符串用引号定界,可以用索引和切片取子串——含头不含尾'abc'[0:2] 得到 ab'abc'[-1] 得到 c
2.4

内置函数

Python自带的工具箱 · type/len/print/abs/round/max/min

1. 函数的概念

函数是一段封装好的、可以实现某种特定功能的Python程序。用户不用关心程序实现的细节,通过函数名及其参数直接调用即可。

【调用格式】函数名(参数1, 参数2, ……)
  • 调用函数时,函数名后必须加一对圆括号 "()"
  • 每个函数都有一个返回值,表示调用的结果。
  • 不同函数的参数个数不同,有的是必选的,有的是可选的。
  • 函数的参数值必须符合要求的数据类型
  • 函数可以嵌套调用,即一个函数可以作为另一个函数的参数。

Python内置了丰富的函数资源,封装在内置模块 __builtins__ 中,在程序中可以直接使用,不需要import(共70多个内置函数)。

2. 常用内置函数

函数示例说明
type()type(3) → int查看数据类型
len()len("abc") → 3求长度(字符串/列表等)
print()print("hi") → hi输出到屏幕
input()input("名:")从键盘输入(返回字符串)
abs()abs(-5) → 5求绝对值
round()round(3.14159, 2) → 3.14四舍五入(可指定位数)
max() / min()max(3, 7, 2) → 7求最大值/最小值
int / float / strint("3") → 3类型转换函数
pow()pow(2, 10) → 1024幂运算
help()help(print)查看对象的联机帮助
演示:函数的调用(type / round / int)
# 调用格式:函数名(参数1, 参数2, ……)
name = 'Linda'
type(name)          # 查看对象类型函数
price = 32.58
round(price, 1)     # 四舍五入函数:保留1位小数
int(price)          # 数据类型转换函数:浮点数转换为整数
演示:常用内置函数练习
abs(-5)              # 绝对值
round(3.14159, 2)    # 四舍五入,保留2位小数
max(3, 7, 2)         # 最大值
min(3, 7, 2)         # 最小值
len("abc")           # 长度
pow(2, 10)           # 幂运算

3. 查看帮助:help()

使用 help() 函数可以查看某个对象的联机帮助信息。

演示:help(round) 查看round函数的帮助
help(round)    # 查看round函数的帮助信息
本节小结:函数的调用格式永远是 函数名(参数);本章高频的是 type / len / print / input / int / float / str / bool / abs / round / max / min。help() 是最好的老师——不会用的先 help(函数名),再问人。最容易翻车的一条:别用内置函数名当变量名,写了 sum = 0 之后,sum([1,2,3]) 就再也用不了了。
2.5

基本输入输出

怎么和用户对话 · print()输出与input()输入

1. 输入函数 input()

【语法】input([prompt])
prompt:提示文本,该参数是可选的,类型为字符串。input() 从键盘接收的任何输入,都被作为字符串类型。使用 int()float() 可转换为数字。

初学者最常见的错误:input() 返回的是字符串,不能直接做数学运算("20" + 1 会报 TypeError)。必须先用 int()float() 转换。
演示:input()的返回值永远是字符串
# input()从键盘接收的任何输入,都被作为字符串类型
a = input("Please input: ")
type(a)          # 此时a是字符串
a = int(a)       # 用int()转换为整型数
type(a)
例2-3:输入名字,显示 “Hello XXX” 问候语(可交互)
# 例2-3:使用input从键盘输入名字,显示"Hello XXX"形式的问候语
name = input('Please input your name: ')
print('Hello ' + name)
(此处用网页模拟 input() 输入)
例2-4:输入两个整数,计算两数之和(可交互)
# 例2-4:从键盘输入两个整数,计算这两个数字之和
num1 = int(input('num1: '))    # 将输入的数据转换为整数
num2 = int(input('num2: '))
print(num1 + num2)

2. 输出函数 print()

【语法】print(value, ..., sep=' ', end='\n', file=sys.stdout)

演示:print()的多个值、sep与end参数
a = 'www'
b = 163
c = 'com'
print(a, b, c)             # 输出多个对象,默认用空格分隔
print(a, b, c, sep='.')    # sep设置分隔符
print(a, end=',')          # end指定结尾符,不换行
print("完成")

3. 格式化输出(三种方式)

(1)使用 “%” 运算符设置格式

格式符含义示例结果
%s字符串'%s' % 'Python'Python
%d整数'%d' % 9090
%f浮点数(默认6位小数)'%f' % 88.588.500000
演示:% 运算符格式化
# 使用%运算符设置格式:'%s %d %f' % (值1, 值2, 值3)
subject = "Python"
score1 = 90
score2 = 88.5
print('%s %d %f' % (subject, score1, score2))

(2)使用 format 方法设置格式

演示:format方法格式化
# format方法:{}占位,{0}{1}按下标引用,:.2f保留2位小数,<10s左对齐 >10s右对齐
print('{:<10s} and {:>10s}'.format('hello', 'world'))
x, y = 4.123, 7.1563
print('x={0}, y={1:.2f}'.format(x, y))    # y保留2位小数

(3)使用 f-string 格式化(Python 3.6+ 推荐)

演示:f-string 格式化
# f-string:在字符串前加f,用{变量名}直接引用
name = "张三"
age = 20
print(f"姓名:{name},年龄:{age}")
print(f"明年年龄:{age + 1}")      # f-string中可以做运算
pi = 3.1415926
print(f"π ≈ {pi:.2f}")            # 保留2位小数
AI渗透 · AI-07单轮对话 = input() + print()
AI对话的本质就是 input()print() 的循环——接收用户输入(字符串),处理后输出结果(字符串)。区别在于:ChatGPT内部是几千亿参数的神经网络,而不是 if-else,但输入输出的接口完全一样
AI单轮对话的最小实现(可交互):根据关键词回复
# AI单轮对话的最小实现
def simple_ai(user_input):
    """极简AI:根据关键词回复"""
    if "你好" in user_input:
        return "你好!我是AI助手,有什么可以帮你的?"
    elif "名字" in user_input:
        return "我叫SimpleAI,是一个用Python写的极简对话模型。"
    elif "天气" in user_input:
        return "抱歉,我还没有联网,无法查询天气。"
    elif "谢谢" in user_input:
        return "不客气!随时为你服务。"
    else:
        return "我还在学习中,暂时无法理解这个问题。"

# 单轮对话:input + print
user_input = input("你:")
response = simple_ai(user_input)
print(f"AI:{response}")
AI渗透 · AI-10Prompt四要素 = print参数化
高质量Prompt包含四要素:角色、任务、上下文、输出格式。用 f-string 把这四个要素参数化,就能灵活生成各种Prompt——这就是AI应用开发的核心。
Prompt四要素参数化生成器(可交互)
# Prompt四要素参数化生成器
def build_prompt(role, task, context, output_format):
    """构建高质量Prompt"""
    prompt = f"""你是一位{role}。
请完成以下任务:{task}
背景信息:{context}
输出要求:{output_format}"""
    return prompt

# 示例:数据分析助手
prompt = build_prompt(
    role="资深数据分析师",
    task="分析这份销售数据并给出建议",
    context="数据包含2024年1-6月的月度销售额,1月100万,6月200万",
    output_format="用表格展示趋势,最后给出3条具体建议"
)
print(prompt)
本节小结input() 拿到的一定是字符串——这是零基础第一号错误源,要数字就得用 int() / float() 转换;print()sep 控制分隔、end 控制结尾;格式化三种写法里 f-string 最推荐f"{score:.2f}" 顺手就把小数位控制住了。
2.6

模块的使用

怎么调用别人写好的工具 · import与random模块

1. 模块的概念与分类

模块是一组程序代码,包含了多个函数、对象及其方法。Python模块分为三类:

在代码中使用这些模块,必须通过 import 语句导入当前程序
部分内置模块说明
math数学计算
datetime日期操作
statistics计算列表中数字的平均值或者常见统计数据
random随机操作
time时间相关
os操作系统接口
jsonJSON数据处理

2. 导入模块的三种方式

方法一:import 模块名

直接导入该模块的所有内容,使用模块中的某个具体函数时,要在函数名前加上模块的名字

演示:import math
# 方法一:import 模块名
import math
math.sin(0.5)    # 使用函数时要加模块名前缀
math.cos(0.5)

方法二:from 模块名 import 函数名

导入模块中的某个具体函数,可以在程序中直接使用函数名

演示:from math import sin, cos
# 方法二:from ... import ...
from math import sin, cos
sin(0.5)     # 可以直接使用函数名
cos(0.5)

方法三:from 模块名 import 函数 as 别名

为模块或者函数定义一个别名

演示:from math import sin as ms
# 方法三:from ... import ... as ...
from math import sin as ms
ms(0.5)

3. random随机数模块

函数说明示例
random.randint(a, b)[a, b]范围内的随机整数random.randint(1, 100)
random.random()[0.0, 1.0)范围内的随机浮点数random.random()
random.uniform(a, b)[a, b]范围内的随机浮点数random.uniform(1.5, 3.5)
random.choice(seq)从序列中随机选一个元素random.choice([1, 2, 3])
random.shuffle(seq)打乱列表的顺序random.shuffle([1, 2, 3])
random.seed(n)设置随机种子(结果可复现)random.seed(42)
例2-5:random模块的随机选择操作(可交互,每次结果不同)
# 例2-5:使用random模块的函数进行随机选择操作
from random import choice
direction = choice(['N', 'S', 'E', 'W'])
print(direction)
网页用JS模拟random.choice:每次点击结果不同
演示:random常用函数(可交互,体会随机性)
# random常用函数
import random
random.randint(1, 100)      # 1-100的随机整数
random.random()             # 0-1的随机浮点数
random.uniform(1.5, 3.5)    # 1.5-3.5的随机浮点数
random.choice([1, 2, 3])    # 从列表随机选一个
random.seed(42)             # 设置随机种子(可复现)
random.randint(1, 100)      # 种子相同,结果相同
前4行每次运行随机;设置seed(42)后结果固定为82
AI渗透 · AI-06生成式AI = 概率词语接龙
生成式AI的本质:根据概率随机选择下一个词random.choice() 就是最简单的“生成”;AI的每一步输出都是一次加权随机选择,temperature(温度参数)控制随机性大小。
生成式AI最小演示:随机词语接龙(可交互)
# 生成式AI的最小演示:随机选择下一个词
from random import choice
word = choice(["机器", "学习", "深度", "模型", "数据"])
print(word)
每次点击,随机“生成”一个词
本节小结:模块 = 别人写好的工具箱,用之前必须先导入。三种方式:import 模块名(调用要写 模块名.函数())、from 模块名 import 函数名(直接写函数名)、import 模块名 as 别名(名字太长时用)。本课最常用 random.randint()math.sqrt()随机数每次运行结果不同是正常的,想复现就固定随机种子。
2.7

语言基础综合应用

串起来写完整小程序 · 闰年判断 / 圆面积 / 猜数字 / BMI

综合应用把本章的变量、运算符、数据类型、内置函数、输入输出、模块等所有知识点串起来,是检验学习效果的最佳案例。

例2-6 判断某个年份是否为闰年(可交互)

闰年规则:能被4整除但不能被100整除,能被400整除。

例2-6:闰年判断
# 例2-6:判断某个年份是否为闰年
# (能被4整除 且 不能被100整除) 或 能被400整除
year = int(input('year = '))
print((year % 4 == 0 and year % 100 != 0) or (year % 400 == 0))
想一想:2000年是闰年吗?1900年呢?——2000能被400整除,是闰年;1900能被4整除但不能被100整除这个条件不满足(它还能被400整除吗?不能),所以1900不是闰年。

例2-7 输入x,计算表达式的值(可交互)

计算 y = sin(x) + 2×sqrt(x + e⁴) − (x+1)³,结果保留2位小数。

例2-7:表达式计算(综合应用 math 模块与运算符)
# 例2-7:输入x,计算并显示表达式的值,结果保留2位小数
import math
x = input('input x: ')
x = float(x)
y = math.sin(x) + 2 * math.sqrt(x + math.exp(4)) - pow((x + 1), 3)
y = round(y, 2)
print('y =', y)

例2-8 输入圆的半径,求圆的面积(可交互)

例2-8:圆的面积(格式化输出,保留2位小数)
# 例2-8:从键盘输入圆的半径,求圆的面积,并格式化输出结果
import math
r = input('请输入半径: ')
r = float(r)
s = math.pi * pow(r, 2)
print('圆的面积:{:.2f}'.format(s))

综合应用1:猜数字游戏(整合所有知识点,可交互)

这个小游戏整合了变量、运算符、数据类型、内置函数、输入输出、模块等所有知识点。

猜数字游戏:完整Python代码
# 猜数字游戏:整合本次课所有知识点
import random

# 变量 + 模块 + 运算符
secret = random.randint(1, 100)   # 随机生成1-100的秘密数字
count = 0                         # 计数变量

print("=== 猜数字游戏 ===")
print("我想了一个1到100之间的数字,你来猜!")

# 游戏循环(下节课学while,这里先体验)
while True:
    # input + 类型转换
    guess = int(input("请输入你的猜测:"))
    count += 1                    # 复合赋值运算符

    # 关系运算符 + 逻辑运算符
    if guess == secret:
        print(f"恭喜你猜对了!答案就是{secret}")
        print(f"你一共猜了{count}次")
        break                     # 跳出循环
    elif guess < secret:
        print("太小了,再大一点!")
    else:
        print("太大了,再小一点!")

网页模拟版:我已经想好了一个 1~100 之间的数字,你来猜!(逻辑与上面Python代码完全一致)

综合应用2:BMI健康计算器(可交互)

BMI(身体质量指数)= 体重(kg) / 身高(m)的平方。整合了输入输出、类型转换、算术运算、条件判断和格式化输出

BMI健康计算器:完整Python代码
# BMI健康计算器
print("=== BMI健康计算器 ===")

# 输入 + 类型转换
weight = float(input("请输入体重(kg):"))
height = float(input("请输入身高(m):"))

# 算术运算符 + 幂运算
bmi = weight / (height ** 2)

# 格式化输出
print(f"你的BMI指数为:{bmi:.1f}")

# 条件判断(关系运算符 + 逻辑运算符)
if bmi < 18.5:
    category = "偏瘦"
    advice = "建议增加营养摄入,适当增肌"
elif 18.5 <= bmi < 24:
    category = "正常"
    advice = "恭喜!请保持健康的生活方式"
elif 24 <= bmi < 28:
    category = "偏胖"
    advice = "建议控制饮食,增加有氧运动"
else:
    category = "肥胖"
    advice = "建议咨询医生,制定科学减重计划"

print(f"健康等级:{category}")
print(f"健康建议:{advice}")

知识点回顾

知识点在综合应用中的体现
变量secret、count、weight、height、bmi 等
运算符== < > += **,以及逻辑组合(闰年判断)
数据类型int() / float() 类型转换
内置函数print()、input()、int()、float()、round()
模块import random / import math
控制流(下章)if / elif / else / while / break(第3章详学)
本节小结:综合题的标准骨架只有四步——输入 → 转换类型 → 计算 → 输出。本章所有例子(闰年判断、表达式求值、圆面积、猜数字、BMI)都是这个骨架套不同公式。检验自己有没有真懂:把输入的数字换成任意一个,能不能提前说出输出是什么?

本章小结 · 易错点 · 作业

Summary · 7大模块知识图谱 + 10个高频错误 + 课后任务

本课三句话收尾:① 变量是便利贴,不是盒子(存的是地址,不是值);② input() 拿到的一定是字符串("1020" 这个坑记一学期);③ 加括号不丢人——AI 最核心的那行代码也只有加减乘。

7大模块知识图谱

模块核心知识点AI渗透点
2.1 常量与变量赋值、命名规则、内存地址、动态类型AI-01 变量 = 模型参数
2.2 运算符与表达式算术 / 关系 / 逻辑 / 赋值 / 成员、优先级AI-02/03/04 神经元 / 置信度 / 规则引擎
2.3 数据类型int / float / str / bool、类型转换、字符串AI-05/08 Prompt = 字符串、AI幻觉 = 浮点精度
2.4 内置函数type / len / print / abs / round / max / helpAI-09 让AI解释报错(教师演示)
2.5 基本输入输出print(sep/end/格式化)、input()AI-07/10 单轮对话、Prompt四要素
2.6 模块的使用import / from...import、random随机数AI-06 生成式AI = 概率词语接龙
2.7 综合应用猜数字游戏、BMI计算器整合所有知识点
下次课预告:第3章 程序控制结构——if条件判断、for/while循环、循环控制语句(break/continue/pass)。建议预习教材第3章,尝试用if语句写一个简单的成绩等级判断程序。

易错点速查表:10个初学者高频错误

序号错误写法正确写法错误原因
1sum = 0total = 0覆盖内置函数 sum()
22name = "Tom"name2 = "Tom"变量名不能数字开头
30.1+0.2 == 0.3abs(0.1+0.2-0.3) < 1e-9浮点数精度问题
4age = input("年龄:")age = int(input("年龄:"))input返回字符串
52 ^ 3 = 82 ** 3 = 8^是位异或,**才是幂
6s[1:3] 取第1~3个s[1:3] 取第1~2个切片含start不含end
7x++(自增)x += 1Python没有++运算符
8if x = 5:if x == 5:=是赋值,==是比较
9int(3.99) = 4int(3.99) = 3int是截断不是四舍五入
10print nameprint(name)Python3函数必须加括号

上机任务(T2-01 ~ T2-13)

基础任务(必做)

  • T2-01 变量赋值与类型查看
  • T2-02 算术运算符练习
  • T2-03 关系与逻辑运算符
  • T2-04 字符串索引与切片
  • T2-05 类型转换练习
  • T2-06 内置函数综合练习
  • T2-07 print格式化输出
  • T2-08 input输入与转换

进阶任务(选做)

  • T2-09 random模块练习
  • T2-10 温度转换器(℃ ↔ ℉)
  • T2-11 简单计算器
  • T2-12 姓名生成器(random + str)
  • T2-13 AI Prompt生成器

提交要求:每道题写注释,保存为 .py 文件,命名:学号_姓名_T2-XX.py

作业布置

书面作业(下次课课前检查)

  1. 教材P45 习题2.1-2.5
  2. 默写变量命名4条规则
  3. 写出7种算术运算符及示例
  4. 简述浮点数精度问题及解决方法
  5. 用自己的话解释“AI幻觉”

上机作业(截止:下周三 23:59)

  • 完成 T2-01 ~ T2-08(基础必做),选做 T2-09 ~ T2-13(进阶)
  • 每道题写注释说明,命名:学号_姓名_T2-XX.py
  • 打包上传至课程平台
AI使用规范本课程鼓励学生了解AI原理,但对AI工具的使用有明确规范:基础阶段(第1-4次课)学生不使用AI写代码,仅观察教师演示。允许:观察教师AI演示、用AI解释报错、辅助理解概念、课后复习。禁止:用AI直接生成作业代码、复制粘贴AI答案提交、上机考试使用AI。核心理念:AI是工具不是替身,理解原理 > 写出代码

下讲预告

第 3 次课 · 第 3 章 程序控制结构
顺序结构 · 选择结构(if / elif / else / 嵌套)· 循环结构(while / for / range / break / continue / else)· 综合应用与 8 个 AI 渗透演示
进入第 3 次课 →