编程练习

18 道题,覆盖十章核心能力。每题给解题思路、参考代码和运行结果,复制到本机跑一遍就能对照。

18 道题基础/进阶/高阶可直接运行
怎么用① 先自己写;② 卡住看思路,还不懂再看代码;③ 跑通后改改输入再试,才算真会。

第1章 Python 入门与环境

01

输出你的姓名、年龄和一句座右铭。 基础

解题思路print 三次,或一次用 sep/end 控制格式。
查看参考代码与运行结果
PYTHON
print("姓名:张三")
print("年龄:20")
print("座右铭:每天进步一点点")
👀 运行结果
姓名:张三
年龄:20
座右铭:每天进步一点点

第2章 变量、类型与运算

02

输入两个数,输出和、差、积、商(保留 2 位小数)。 基础

解题思路input 读进来是字符串,先转 float;商用 /。
查看参考代码与运行结果
PYTHON
a = float(input("a="))
b = float(input("b="))
print(f"和={a+b}, 差={a-b}, 积={a*b}, 商={a/b:.2f}")
👀 运行结果
a=10
b=4
和=14.0, 差=6.0, 积=40.0, 商=2.50
03

把字符串 "2025-07-01" 拆成 年/月/日 三个变量并输出。 基础

解题思路split("-") 得到列表,再解包。
查看参考代码与运行结果
PYTHON
s = "2025-07-01"
y, m, d = s.split("-")
print(f"{y}年{m}月{d}日")
👀 运行结果
2025年07月01日

第3章 流程控制

04

判断输入的整数是奇数还是偶数。 基础

解题思路取余 % 2。
查看参考代码与运行结果
PYTHON
n = int(input("n="))
print("偶数" if n % 2 == 0 else "奇数")
👀 运行结果
n=7
奇数
05

输出 1~100 中所有能被 3 整除但不能被 5 整除的数。 基础

解题思路for 遍历 + 两个条件用 and。
查看参考代码与运行结果
PYTHON
for i in range(1, 101):
    if i % 3 == 0 and i % 5 != 0:
        print(i, end=" ")
👀 运行结果
3 6 9 12 18 21 24 27 33 36 39 42 48 51 54 57 63 66 69 72 78 81 84 87 93 96 99 
06

打印九九乘法表。 进阶

解题思路双层循环,内层控制到 i 为止。
查看参考代码与运行结果
PYTHON
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}x{i}={i*j}", end="\t")
    print()
👀 运行结果
1x1=1	
1x2=2	2x2=4	
……(共 9 行)
07

猜数字:随机生成 1~100,循环猜直到猜中,提示大了或小了。 进阶

解题思路while True + input + 比较;random.randint。
查看参考代码与运行结果
PYTHON
import random

target = random.randint(1, 100)
while True:
    g = int(input("猜一个 1~100:"))
    if g > target:
        print("大了")
    elif g < target:
        print("小了")
    else:
        print("猜对了!")
        break
👀 运行结果
猜一个 1~100:50
大了
猜一个 1~100:25
小了
…猜对为止

第4章 四大容器

08

求一个整数列表的最大值、最小值、平均值。 基础

解题思路内置 max/min/sum/len,或先排序。
查看参考代码与运行结果
PYTHON
nums = [88, 92, 76, 95, 60]
print(max(nums), min(nums), round(sum(nums) / len(nums), 1))
👀 运行结果
95 60 82.2
09

统计一段文本里每个单词出现的次数(按空格切分)。 进阶

解题思路split 切词 + 字典计数 get(k, 0) + 1。
查看参考代码与运行结果
PYTHON
text = "java is easy and java is powerful"
cnt = {}
for w in text.split():
    cnt[w] = cnt.get(w, 0) + 1
print(cnt)
👀 运行结果
{&#39;java&#39;: 2, &#39;is&#39;: 2, &#39;easy&#39;: 1, &#39;and&#39;: 1, &#39;powerful&#39;: 1}
10

把两个列表合并成“姓名: 分数”的字典,并按分数降序输出。 进阶

解题思路zip 配对 + dict;sorted 按值排序。
查看参考代码与运行结果
PYTHON
names = ["张三", "李四", "王五"]
scores = [89, 92, 78]
d = dict(zip(names, scores))
for k, v in sorted(d.items(), key=lambda x: x[1], reverse=True):
    print(k, v)
👀 运行结果
李四 92
张三 89
王五 78
11

求两个列表的公共元素与差集(不用双重循环)。 进阶

解题思路转成集合做 & 和 -。
查看参考代码与运行结果
PYTHON
a = [1, 2, 3, 4]
b = [3, 4, 5]
print(sorted(set(a) & set(b)))
print(sorted(set(a) - set(b)))
👀 运行结果
[3, 4]
[1, 2]

第5章 函数与模块

12

写函数判断一个数是否为素数并调用测试。 进阶

解题思路从 2 试除到平方根。
查看参考代码与运行结果
PYTHON
def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

print(is_prime(29), is_prime(30))
👀 运行结果
True False
13

写函数接收任意个分数,返回最高分、最低分与平均分。 进阶

解题思路*args + max/min/sum。
查看参考代码与运行结果
PYTHON
def summary(*scores):
    return max(scores), min(scores), round(sum(scores) / len(scores), 1)

print(summary(88, 92, 76))
👀 运行结果
(92, 76, 85.3)

第6章 面向对象

14

定义 Student 类(姓名、分数),带一个判断是否及格的方法,创建两个对象输出。 进阶

解题思路__init__ 存属性,方法返回 bool;用 f-string 输出。
查看参考代码与运行结果
PYTHON
class Student:
    def __init__(self, name, score):
        self.name, self.score = name, score
    def passed(self):
        return self.score >= 60
    def __str__(self):
        return f"{self.name}: {self.score}"

for s in (Student("张三", 89), Student("李四", 52)):
    print(s, "及格" if s.passed() else "不及格")
👀 运行结果
张三: 89 及格
李四: 52 不及格

第7章 异常与文件

15

读一个文本文件,统计行数与字符数(文件不存在时提示)。 进阶

解题思路with open + for line;try/except FileNotFoundError。
查看参考代码与运行结果
PYTHON
try:
    with open("data.txt", encoding="utf-8") as f:
        lines = f.readlines()
    print(len(lines), sum(len(l) for l in lines))
except FileNotFoundError:
    print("文件不存在")
👀 运行结果
文件不存在(或输出行数与字符数)
16

把字典列表保存成 JSON,再读回来并打印第一条。 高阶

解题思路json.dump(ensure_ascii=False) / json.load。
查看参考代码与运行结果
PYTHON
import json

data = [{"name": "张三", "score": 89}]
with open("d.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False)
with open("d.json", encoding="utf-8") as f:
    print(json.load(f)[0]["name"])
👀 运行结果
张三

第8章 常用标准库

17

从字符串中提取所有手机号(11 位数字)。 高阶

解题思路re.findall(r"1\d{10}")。
查看参考代码与运行结果
PYTHON
import re

text = "联系 13812345678 或 13900001111,座机 010-12345678"
print(re.findall(r"1\d{10}", text))
👀 运行结果
['13812345678', '13900001111']

第9章 数据处理与可视化

18

用 matplotlib 画一个柱状图:三门课的平均分,并保存成 png。 高阶

解题思路plt.bar + title/ylabel + savefig(在 show 前)。
查看参考代码与运行结果
PYTHON
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

plt.bar(["语文", "数学", "英语"], [88, 95, 79])
plt.title("各科平均分")
plt.ylabel("分数")
plt.savefig("bar.png", dpi=150)
print("已保存 bar.png")
👀 运行结果
已保存 bar.png