之前我们写的程序,数据都是直接写在代码里的。今天学两个让程序「活起来」的技能:用 input() 让程序和用户对话,用推导式让代码更简洁优雅!
一、input() —— 接收用户输入
name = input("请输入你的名字:")
print("你好," + name + "!")请输入你的名字:小明
你好,小明!
⚠️ 注意:input() 返回的永远是字符串,需要数字时要转换:
age = int(input("请输入年龄:")) # 转成整数
price = float(input("请输入价格:")) # 转成小数
print(f"明年你 {age + 1} 岁")二、input() + 循环 —— 持续对话
while True:
word = input("输入单词(输入q退出):")
if word == "q":
print("再见!")
break
print(f"你输入的是:{word},共 {len(word)} 个字母")输入单词(输入q退出):hello
你输入的是:hello,共 5 个字母
输入单词(输入q退出):python
你输入的是:python,共 6 个字母
输入单词(输入q退出):q
再见!
三、print() 进阶 —— 格式化输出
# 不换行打印
print("加载中", end="")
print(".", end="")
print(".", end="")
print(". 完成!")
# 自定义分隔符
print("苹果", "香蕉", "橘子", sep=" | ")
# 打印分隔线
print("-" * 30)加载中... 完成!
苹果 | 香蕉 | 橘子
------------------------------
四、列表推导式 —— 一行代码生成列表
普通写法 vs 推导式写法:
# 普通写法:生成1到10的平方
squares = []
for x in range(1, 11):
squares.append(x * x)
# 推导式写法:一行搞定!
squares = [x * x for x in range(1, 11)]
print(squares)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100][1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
格式:[表达式 for 变量 in 序列]
五、带条件的推导式
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 只保留偶数
evens = [x for x in nums if x % 2 == 0]
print(evens) # [2, 4, 6, 8, 10]
# 只保留大于5的数,并乘以2
big = [x * 2 for x in nums if x > 5]
print(big) # [12, 14, 16, 18, 20]
# 把成绩列表里不及格的换成0
scores = [95, 42, 88, 55, 76, 38]
fixed = [s if s >= 60 else 0 for s in scores]
print(fixed) # [95, 0, 88, 0, 76, 0]
[2, 4, 6, 8, 10]
[12, 14, 16, 18, 20]
[95, 0, 88, 0, 76, 0]
六、字典推导式
names = ["小明", "小红", "小刚"]
scores = [95, 88, 72]
# 把两个列表合成一个字典
grade_dict = {name: score for name, score in zip(names, scores)}
print(grade_dict)
# {'小明': 95, '小红': 88, '小刚': 72}
# 只保留及格的同学
pass_dict = {k: v for k, v in grade_dict.items() if v >= 60}
print(pass_dict)
# {'小明': 95, '小红': 88, '小刚': 72}{'小明': 95, '小红': 88, '小刚': 72}
{'小明': 95, '小红': 88, '小刚': 72}七、实战:互动成绩统计器
print("===== 成绩统计器 =====")
n = int(input("请输入学生人数:"))
scores = []
for i in range(n):
while True:
try:
s = int(input(f"请输入第{i+1}个学生的成绩:"))
if 0 <= s <= 100:
scores.append(s)
break
else:
print("成绩必须在0-100之间!")
except ValueError:
print("请输入数字!")
# 用推导式统计
passing = [s for s in scores if s >= 60]
excellent = [s for s in scores if s >= 90]
print(f"\n共 {n} 人,及格 {len(passing)} 人,优秀 {len(excellent)} 人")
print(f"平均分:{sum(scores)/len(scores):.1f}")
print(f"最高分:{max(scores)},最低分:{min(scores)}")===== 成绩统计器 =====
请输入学生人数:3
请输入第1个学生的成绩:95
请输入第2个学生的成绩:abc
请输入数字!
请输入第2个学生的成绩:72
请输入第3个学生的成绩:55
共 3 人,及格 2 人,优秀 1 人
平均分:74.0
最高分:95,最低分:55
八、推导式 vs 普通循环
| 场景 | 推荐写法 |
| 简单转换/过滤 | ✅ 推导式,简洁 |
| 逻辑复杂、多步骤 | ✅ 普通循环,清晰 |
| 需要用户交互 | ✅ 普通循环 + input() |
九、今天学到了什么?
-
- input():接收用户输入,返回字符串
-
- int() / float():把字符串转成数字
-
- print() 进阶:end、sep 参数
-
- 列表推导式:[表达式 for 变量 in 序列 if 条件]
-
- 字典推导式:{k: v for k, v in ...}
-
十、下期预告
🎉 Python 基础 12 篇全部完结!
下节课我们正式进入 AI 时代 —— 用 Python 调用 AI 接口,让你的程序会思考、会对话!
敬请期待:《小学生Python进阶:用代码召唤AI》
喜欢这篇文章吗?点个「在看」,一起迎接 AI 编程新时代!