feat: 初始化 Python 零基础教学课程

This commit is contained in:
zhiye.sun
2026-07-22 16:42:56 +08:00
commit 84d96caa6e
18 changed files with 3156 additions and 0 deletions

View File

@@ -0,0 +1,378 @@
# 第 1-3 课:输入与输出
## 一、本课目标
完成本课后,你应该能够:
1. 解释程序的输入、处理和输出;
2. 使用 `input()` 接收用户输入;
3. 理解 `input()` 得到的结果始终是字符串;
4. 将输入的数字文本转换成整数或浮点数;
5. 使用 f-string 输出包含变量的完整句子;
6. 使用 `print()``sep``end` 调整简单的输出格式;
7. 编写一个能与用户进行基础交互的小程序。
## 二、前置知识
开始本课前,你应该已经掌握:
- 使用 `print()` 输出内容;
- 创建和使用变量;
- 区分 `str``int``float``bool`
- 使用 `int()``float()``str()` 进行简单类型转换;
- 使用 f-string 将变量放入字符串。
## 三、程序的输入、处理和输出
很多程序都可以简化成三个阶段:
```text
输入Input → 处理Process → 输出Output
```
例如,一个计算明年年龄的程序:
1. 输入:用户输入当前年龄;
2. 处理:当前年龄加 `1`
3. 输出:显示明年的年龄。
第一课中的程序只有固定输出。学会输入后,程序就能根据不同用户提供的数据生成不同结果。
## 四、使用 `input()` 接收输入
最简单的输入代码如下:
```python
user_name = input("请输入你的名字:")
print(f"你好,{user_name}")
```
运行到 `input()` 时,程序会暂停并等待用户输入。用户输入内容并按下回车键后,程序才会继续向下执行。
`input()` 圆括号中的字符串称为提示语,用于告诉用户应该输入什么。
执行过程如下:
```text
程序显示:请输入你的名字:
用户输入Bruce
用户按下回车键
变量 user_name 保存字符串 "Bruce"
程序显示你好Bruce
```
## 五、`input()` 的结果始终是字符串
无论用户输入看起来像文字、整数还是小数,`input()` 返回的结果都是字符串 `str`
```python
age = input("请输入你的年龄:")
print(type(age))
```
如果输入 `18`,类型仍然是:
```text
<class 'str'>
```
这是因为终端接收到的是用户键入的一串字符。Python 不会擅自判断这串字符应该表示姓名、年龄、电话号码还是其他内容。
## 六、输入数字后进行类型转换
如果输入内容需要参与数学计算,就要先进行类型转换。
### 6.1 转换为整数
```python
age_text = input("请输入你的年龄:")
age = int(age_text)
next_year_age = age + 1
print(f"明年你将 {next_year_age} 岁。")
```
这里特意使用两个变量:
- `age_text` 保存用户输入的原始字符串;
- `age` 保存转换后的整数。
这样命名能清楚表达数据转换前后的区别。
也可以写成:
```python
age = int(input("请输入你的年龄:"))
```
这种写法更短,但初学阶段不容易观察每一步。建议先掌握分步写法,理解后再使用组合写法。
### 6.2 转换为浮点数
如果用户可能输入小数,可以使用 `float()`
```python
daily_hours_text = input("你计划每天学习多少小时:")
daily_hours = float(daily_hours_text)
weekly_hours = daily_hours * 7
print(f"按照计划,你每周将学习 {weekly_hours} 小时。")
```
## 七、转换失败时会发生什么
如果程序执行 `int("十八")`Python 无法把中文“十八”直接转换成整数,会产生类似错误:
```text
ValueError: invalid literal for int()
```
`ValueError` 可以理解为“数据的值不适合当前操作”。
本课练习时,请按照提示输入正确格式的数据。以后学习异常处理时,我们会让程序在用户输入错误后给出友好提示,而不是直接结束。
## 八、使用 f-string 组织输出
从用户取得数据后,常常要把多个变量组合成容易阅读的结果:
```python
user_name = "Bruce"
learning_days = 3
daily_hours = 2.5
print(f"{user_name} 已学习 Python {learning_days} 天,每天计划学习 {daily_hours} 小时。")
```
f-string 中:
- 引号内的普通文字会原样显示;
- 花括号中的变量会替换成变量保存的数据;
- 花括号中也可以放简单计算。
例如:
```python
print(f"一周计划学习 {daily_hours * 7} 小时。")
```
为了让代码更容易阅读,较重要或较复杂的计算通常先保存到变量中,再进行输出。
## 九、一次接收多个输入
程序可以连续调用多次 `input()`
```python
user_name = input("请输入你的名字:")
learning_goal = input("请输入你的学习目标:")
print(f"学习者:{user_name}")
print(f"学习目标:{learning_goal}")
```
每次遇到 `input()`,程序都会等待一次输入。输入顺序必须与程序询问顺序一致。
## 十、进一步认识 `print()`
### 10.1 一次输出多个内容
`print()` 可以接收多个内容,中间使用英文逗号分隔:
```python
print("Python", "FastAPI", "Django")
```
默认输出:
```text
Python FastAPI Django
```
注意:代码中的英文逗号负责分隔多个数据,默认显示结果会使用空格连接它们。
### 10.2 使用 `sep` 设置分隔符
`sep` 是 separator 的缩写,表示多个输出内容之间的分隔符:
```python
print("Python", "FastAPI", "Django", sep=" -> ")
```
输出:
```text
Python -> FastAPI -> Django
```
`sep` 不是需要显示的普通内容,而是传给 `print()` 的命名参数。函数和参数将在后续课程系统讲解,本课先掌握这种常用写法。
### 10.3 使用 `end` 设置结尾
`print()` 默认在输出结束后换行。可以通过 `end` 改变结尾:
```python
print("正在学习", end="")
print("Python")
```
输出:
```text
正在学习Python
```
第一条 `print()` 没有立即换行,因此第二条内容接在后面。
现阶段不要过度使用 `sep``end`。只有当它们能让输出格式更清楚时才使用。
## 十一、空字符串
如果用户看到输入提示后没有输入任何内容,直接按下回车键,`input()` 会返回空字符串:
```python
""
```
空字符串是一个长度为零的字符串。它不是 `0`,也不是 `False` 本身。
以后学习条件判断时,我们会检查用户是否输入了内容。本课练习时,请按提示提供非空数据。
## 十二、运行本课示例
在 PowerShell 中执行:
```powershell
cd D:\Code\Python\01_python基础\1_3_输入与输出
python input_output.py
```
程序会依次要求你输入:
1. 姓名或称呼;
2. 已学习 Python 的天数;
3. 每天计划学习的小时数;
4. 学习目标。
可以参考以下输入:
```text
Bruce
3
2.5
开发 LLM Agent
```
输入整数和小数时暂时不要使用中文数字或附加单位。例如输入 `3`,不要输入 `3天`
## 十三、示例程序执行过程
`input_output.py` 大致完成以下步骤:
1. 接收姓名并保存为字符串;
2. 接收学习天数的原始文本;
3. 把学习天数转换为整数;
4. 接收每天学习小时数的原始文本;
5. 把学习小时数转换为浮点数;
6. 接收学习目标;
7. 计算每周计划学习时间;
8. 使用 f-string 输出个人学习计划。
请对照源代码,找出每一步对应的代码。
## 十四、常见错误
### 14.1 程序像是停止了
如果最后显示输入提示但没有出现新的 PowerShell 提示符,程序通常不是卡住,而是在等待你输入内容并按回车键。
### 14.2 数字后添加了单位
输入:
```text
3天
```
不能直接通过 `int()` 转换。提示要求输入数字时,应只输入:
```text
3
```
单位由程序在输出时添加。
### 14.3 把 `input` 写成大写
Python 区分大小写。正确名称是 `input`,不是 `Input``INPUT`
### 14.4 忘记保存输入结果
```python
input("请输入名字:")
print(user_name)
```
上面的输入没有赋给 `user_name`,之后使用该变量会产生 `NameError`
正确写法:
```python
user_name = input("请输入名字:")
```
### 14.5 字符串不能直接与整数相加
```text
age_text = input("请输入年龄:")
next_year_age = age_text + 1
```
`age_text` 是字符串,必须先使用 `int()` 转换后再参与加法计算。
## 十五、课堂练习
打开 `practice.py`编写一个“Agent 开发学习计划生成器”。程序需要接收用户输入,完成简单计算,并输出一份格式清晰的学习计划。
运行命令:
```powershell
python practice.py
```
请至少使用一次:
- `input()`
- `int()`
- `float()`
- f-string
- 有明确含义的英文变量名。
## 十六、思考题
1. 为什么用户输入 `18` 后,`input()` 返回的仍然是字符串?
2. 什么时候应使用 `int()`,什么时候应使用 `float()`
3. 如果用户输入 `2.5`,能否使用 `int()` 直接转换?
4. `print("A", "B", sep="-")` 会输出什么?
5. 为什么输入数字时不建议让用户同时输入“天”“小时”等单位?
## 十七、本课小结
- 许多程序都包含输入、处理和输出三个阶段;
- `input()` 会显示提示并等待用户输入;
- `input()` 返回的数据始终是字符串;
- 数字文本参与计算前,通常需要使用 `int()``float()` 转换;
- f-string 可以将用户输入、计算结果和固定文字组合起来;
- `print()` 可以一次输出多个数据;
- `sep` 可以设置多个数据之间的分隔符;
- `end` 可以设置输出结尾;
- 转换数字时,输入内容必须符合对应格式。
## 十八、验收标准
- [ ] 能使用 `input()` 接收并保存用户输入;
- [ ] 能证明 `input()` 返回的是字符串;
- [ ] 能把数字文本转换为整数或浮点数;
- [ ] 能使用输入的数据进行简单计算;
- [ ] 能使用 f-string 输出完整句子;
- [ ] 能使用 `sep``end` 调整一次输出;
- [ ] 能完成并运行 `practice.py`
- [ ] 能回答五道思考题。

View File

@@ -0,0 +1,52 @@
# 第 1-3 课示例:输入与输出
#
# 这个程序会暂停并等待用户依次输入四项数据。
# 输入数字时请只输入数字本身,不要添加“天”或“小时”等单位。
# 一、接收字符串输入
# input() 会先显示提示语,再等待用户输入并按下回车键。
# 用户输入的内容会以字符串形式保存到 user_name 变量中。
user_name = input("请输入你的名字或称呼:")
# 二、接收整数输入
# input() 得到的 learning_days_text 是字符串。
# 这里分成两步编写,方便观察类型转换前后的数据。
learning_days_text = input("请输入你已经学习 Python 的天数:")
learning_days = int(learning_days_text)
# 三、接收浮点数输入
# 每天学习时间可能包含小数,因此使用 float() 进行转换。
daily_hours_text = input("请输入你计划每天学习的小时数:")
daily_hours = float(daily_hours_text)
# 四、继续接收字符串输入
learning_goal = input("请输入你的 Python 学习目标:")
# 五、处理输入的数据
# 一周有 7 天,因此每天学习时间乘以 7 可以得到每周计划时间。
weekly_hours = daily_hours * 7
# 六、输出分隔线
# print() 接收三个字符串sep="" 表示它们之间不添加默认空格。
print("=", "个人 Python 学习计划", "=", sep="")
# 七、使用 f-string 输出变量和计算结果
print(f"学习者:{user_name}")
print(f"已学习:{learning_days}")
print(f"每天计划学习:{daily_hours} 小时")
print(f"每周计划学习:{weekly_hours} 小时")
print(f"学习目标:{learning_goal}")
# 八、演示 end 参数
# 第一条 print() 使用 end="",输出后不换行,而是以中文冒号结尾。
# 第二条 print() 会紧接着输出学习状态,之后恢复默认换行。
print("当前状态", end="")
print("持续学习中")

View File

@@ -0,0 +1,54 @@
# 第 1-3 课课堂练习Agent 开发学习计划生成器
#
# 完成要求:
# 1. 根据注释依次接收用户输入。
# 2. 对需要计算的数字文本进行类型转换。
# 3. 使用有明确含义的英文蛇形变量名。
# 4. 使用 f-string 输出最终学习计划。
# 5. 不要删除题目注释。
# 6. 完成后运行python practice.py
# 练习一:使用 input() 接收用户的名字或称呼。
# 将输入结果保存到变量 user_name。
# 练习二:使用 input() 接收用户计划学习 Python 的总天数。
# input() 返回字符串,请使用 int() 转换为整数并保存到 total_days。
# 建议分成“接收原始文本”和“转换类型”两个步骤。
# 练习三:使用 input() 接收用户每天计划学习的小时数。
# 使用 float() 转换为浮点数并保存到 daily_hours。
# 练习四:使用 input() 接收用户想重点学习的 Agent 方向。
# 例如Agent 应用开发、提示词工程、RAG 或模型训练。
# 将结果保存到 learning_direction。
# 练习五:计算总计划学习小时数。
# 计算公式:总天数 * 每天学习小时数。
# 将计算结果保存到 total_hours。
# 练习六:使用 print() 和 sep 参数输出标题。
# 标题可以由 "="、"Agent 开发学习计划"、"=" 三部分组成。
# 尝试使用 sep="",让三部分之间不出现默认空格。
# 练习七:使用 f-string 分行输出以下信息:
# 1. 学习者;
# 2. 计划学习总天数;
# 3. 每天学习小时数;
# 4. 预计总学习小时数;
# 5. 重点学习方向。
# 练习八:使用两条 print() 输出最终状态。
# 第一条使用 end="" 输出“计划状态”,使它暂时不换行。
# 第二条输出“准备开始”。
# 完成后进行自查:
# 1. 输入整数时是否只输入了数字;
# 2. 输入小数时是否使用了英文小数点;
# 3. total_days 的类型是否为 int
# 4. daily_hours 和 total_hours 的类型是否为 float
# 5. 最终输出是否包含全部输入信息和计算结果。