当前位置:首页>python>小学生Python:输入与推导式 —— 让代码更简洁

小学生Python:输入与推导式 —— 让代码更简洁

  • 2026-09-19 08:24:07
小学生Python:输入与推导式 —— 让代码更简洁

之前我们写的程序,数据都是直接写在代码里的。今天学两个让程序「活起来」的技能:用 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()

九、今天学到了什么?

  1. input():接收用户输入,返回字符串
  2. int() / float():把字符串转成数字
  3. print() 进阶:end、sep 参数
  4. 列表推导式:[表达式 for 变量 in 序列 if 条件]
  5. 字典推导式:{k: v for k, v in ...}

十、下期预告

🎉 Python 基础 12 篇全部完结!

下节课我们正式进入 AI 时代 —— 用 Python 调用 AI 接口,让你的程序会思考、会对话!

敬请期待:《小学生Python进阶:用代码召唤AI》

喜欢这篇文章吗?点个「在看」,一起迎接 AI 编程新时代!

最新文章

随机文章