7 个 Python 基础实战案例:从字符串到图形绘制,手把手教你搞懂逻辑与原理

部署运行你感兴趣的模型镜像

Python 入门阶段,最容易陷入 “看懂代码却写不出来” 的困境 —— 核心原因是没吃透 “代码逻辑” 和 “底层原理”。今天我整理了 7 个超实用的 Python 基础案例,覆盖字符串处理、循环计算、图形绘制、组合搭配等高频场景,每个案例都会拆解代码、讲解原理,帮你把基础打扎实。

案例 1:个性化字符串输出 —— 学会灵活拼接内容

需求

让用户输入名字和国家,输出 “世界这么大,XX 想去 XX 看看” 的个性化句子。

修正后代码(原代码有格式化语法小问题)

python

运行

# 获取用户输入:input()函数接收控制台输入,返回字符串类型
str1 = input("请输入一个人的名字:")
str2 = input("请输入一个人的国家:")

# 字符串格式化:用format()替换占位符,实现动态内容拼接
print("世界这么大, {}想去{}看看。".format(str1, str2))

关键原理

  1. input () 函数:用于获取用户从控制台的输入,无论输入数字还是文字,返回结果都是字符串类型(如果需要数字,后续需用 int ()/float () 转换)。
  2. 字符串格式化{}是占位符,format(str1, str2)会按顺序将 str1、str2 填入占位符。
    也可以用更简洁的f-string写法:print(f"世界这么大, {str1}想去{str2}看看。"),效率更高且易读。

运行结果

plaintext

请输入一个人的名字:小王
请输入一个人的国家:中国
世界这么大, 小王想去中国看看。

案例 2:1 到 n 求和 —— 掌握循环与累加逻辑

需求

让用户输入整数 n,计算并输出 1+2+3+...+n 的结果。

修正后代码(原代码有变量大小写错误:S 和 s 混用)

python

运行

# 获取用户输入并转换为整数(input返回字符串,需用int()转成数字)
n = int(input("请输入整数n:"))
# 初始化累加器:sum_total用于存储最终和,初始值为0
sum_total = 0

# 循环遍历1到n:range(int(n))生成0~n-1的序列,所以用i+1得到1~n
for i in range(n):
    sum_total += i + 1  # 等价于 sum_total = sum_total + (i+1)

# 输出结果
print("1到n求和结果:", sum_total)

关键原理

  1. range () 函数range(n)生成[0, 1, 2, ..., n-1]的整数序列,若要生成 1~n,可写range(1, n+1)(更直观)。
  2. 累加器逻辑:先定义一个初始值为 0 的变量(如 sum_total),每次循环将当前数字(i+1)加到变量中,循环结束后变量就是总和。
  3. 变量大小写敏感:Python 中sum_totalSum_Total是两个不同变量,原代码中Ss混用会导致报错,需注意命名规范。

运行结果

plaintext

请输入整数n:12
1到n求和结果:78

案例 3:打印九九乘法表 —— 理解嵌套循环与格式化对齐

需求

输出整齐的九九乘法表(每行显示 1×i 到 i×i 的算式)。

修正后代码(原代码有格式符错误:* 号位置不对)

python

运行

# 外层循环控制“行数”:i从1到9(对应乘法表的第1行到第9行)
for i in range(1, 10):
    # 内层循环控制“每行的列数”:j从1到i(第i行有i个算式)
    for j in range(1, i + 1):
        # 格式化输出:{:2}让结果占2个字符位置,保证对齐;end=''表示不换行
        print(f"{j}×{i}={j*i:2}", end=' ')
    # 每一行的列打印完后,主动换行(否则所有内容会在一行)
    print()

关键原理

  1. 嵌套循环:外层循环(i)控制 “行”,内层循环(j)控制 “每行的列”。比如 i=3 时,j 会取 1、2、3,对应 “1×3=3”“2×3=6”“3×3=9”。
  2. 格式化对齐{j*i:2}中,2表示让结果占 2 个字符位置 —— 若结果是 1 位数字(如 3),会自动补一个空格;若是 2 位数字(如 12),刚好占满,避免表格错乱。
  3. end 参数:print () 默认结尾是换行符(\n),end=' '让每次打印后用空格分隔,直到内层循环结束,再用print()主动换行。

运行结果

plaintext

1×1= 1 
1×2= 2 2×2= 4 
1×3= 3 2×3= 6 3×3= 9 
1×4= 4 2×4= 8 3×4=12 4×4=16 
1×5= 5 2×5=10 3×5=15 4×5=20 5×5=25 
1×6= 6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36 
1×7= 7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49 
1×8= 8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64 
1×9= 9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81 

案例 4:1 到 10 阶乘求和 —— 搞懂阶乘计算与叠加

需求

计算 1! + 2! + 3! + ... + 10! 的结果(阶乘定义:n! = n×(n-1)×...×1,0! = 1)。

代码实现

python

运行

# 初始化两个变量:sum_total存总和(初始0),tmp存当前阶乘(初始1,因为1! = 1)
sum_total, tmp = 0, 1

# 循环遍历1到10:计算每个数的阶乘,并累加到总和
for i in range(1, 11):
    tmp *= i  # 等价于 tmp = tmp × i,每次更新当前i的阶乘(如i=2时,tmp=1×2=2!)
    sum_total += tmp  # 把当前阶乘加到总和中

# 输出结果
print("运算结果为: {}".format(sum_total))

关键原理

  1. 阶乘计算逻辑:用tmp存储 “当前阶乘”——i=1 时,tmp=1×1=1!;i=2 时,tmp=1!×2=2!;i=3 时,tmp=2!×3=3!,以此类推,避免重复计算。
  2. 累加逻辑:每次计算出 i! 后,立即加到sum_total中,循环结束后sum_total就是 1! 到 10! 的总和。

运行结果

plaintext

运算结果为: 4037913

案例 5:倒序循环与位运算 —— 小众但高效的计算方式

需求

通过倒序循环和位运算,计算初始值 n=1 经过 4 次运算后的结果。

代码实现

python

运行

# 初始值n=1
n = 1

# 倒序循环:range(4, 0, -1)生成4、3、2、1的序列(start=4,stop=0,step=-1,不包含stop)
for i in range(4, 0, -1):
    # 位运算:<<1 表示左移1位,等价于乘以2;先算(n+1),再左移
    n = (n + 1) << 1

# 输出最终结果
print(n)

关键原理

  1. 倒序 rangerange(start, stop, step)中,step=-1 表示 “从 start 往 stop 递减”,且不包含 stop。range(4,0,-1)的实际序列是 [4,3,2,1],共 4 次循环。
  2. 位运算左移<<1是二进制左移 1 位,比如数字 4(二进制 100)左移 1 位变成 8(1000),等价于×2,但位运算比乘法运算效率更高。
  3. 分步计算过程
    • 第 1 次循环(i=4):n=(1+1)×2=4
    • 第 2 次循环(i=3):n=(4+1)×2=10
    • 第 3 次循环(i=2):n=(10+1)×2=22
    • 第 4 次循环(i=1):n=(22+1)×2=46

运行结果

plaintext

46

案例 6:用 turtle 画五角星 —— 轻松上手图形绘制

需求

使用 Python 内置的 turtle 库,绘制一个红色填充的五角星。

代码实现

python

运行

# 导入turtle库(Python内置,无需额外安装,用于绘制图形)
from turtle import *

# 设置填充颜色为红色
fillcolor("red")
# 开始填充(后续绘制的闭合图形会被填充颜色)
begin_fill()

# 循环绘制五角星的5条边:直到回到起点才停止
while True:
    forward(200)  # 向前移动200像素(绘制一条边)
    right(144)    # 向右转144度(五角星的每个外角是144度)
    # 判断是否回到起点:pos()返回当前坐标,abs(pos())<1表示坐标接近(0,0)
    if abs(pos()) < 1:
        break  # 回到起点,退出循环

# 结束填充(完成颜色填充)
end_fill()
# 保持绘图窗口,直到手动关闭
done()

关键原理

  1. turtle 库基础:turtle 是 Python 内置的绘图库,通过 “移动画笔” 绘制图形 ——forward(d)向前移 d 像素,right(angle)向右转 angle 度,pos()返回当前坐标(x,y)。
  2. 五角星的角度规律:五角星有 5 条边,每个外角是 144 度(360°/5×2=144°),所以每次右转 144 度,循环 5 次后会回到起点。
  3. 颜色填充fillcolor(color)设置填充色,begin_fill()end_fill()之间的闭合图形会被填充 —— 这里 while 循环绘制的五角星是闭合的,所以会被填成红色。

运行结果

会弹出一个绘图窗口,显示一个红色填充的五角星,关闭窗口后程序结束。

案例 7:饮食搭配组合 —— 生成不重复的两两组合

需求

有 5 种食材(西红柿、花椰菜、黄瓜、牛排、虾仁),生成 “不同食材” 的两两搭配(如 “西红柿花椰菜”,排除 “西红柿西红柿” 这种重复)。

修正后代码(原代码有格式符错误:{{} 应改为 {}+{})

python

运行

# 定义食材列表:存储5种食材
diet = ['西红柿', '花椰菜', '黄瓜', '牛排', '虾仁']

# 外层循环:遍历列表索引(0~4,对应5种食材)
for x in range(0, 5):
    # 内层循环:再次遍历列表索引(0~4)
    for y in range(0, 5):
        # 条件判断:排除x==y(同一食材重复搭配)
        if not (x == y):
            # 输出搭配:diet[x]是第一个食材,diet[y]是第二个食材
            print(f"{diet[x]}{diet[y]}")

关键原理

  1. 嵌套循环遍历索引:x 和 y 分别遍历列表的 5 个索引(0~4),理论上会生成 5×5=25 种组合。
  2. 去重逻辑if not (x == y)排除了 “同一索引对应的食材”(如 x=0、y=0 对应 “西红柿西红柿”),最终保留 5×4=20 种不重复搭配。
  3. 列表索引访问diet[x]通过索引 x 获取列表中的食材 —— 列表索引从 0 开始,所以 x=0 是 “西红柿”,x=1 是 “花椰菜”。

运行结果

plaintext

西红柿花椰菜
西红柿黄瓜
西红柿牛排
西红柿虾仁
花椰菜西红柿
花椰菜黄瓜
花椰菜牛排
花椰菜虾仁
黄瓜西红柿
黄瓜花椰菜
黄瓜牛排
黄瓜虾仁
牛排西红柿
牛排花椰菜
牛排黄瓜
牛排虾仁
虾仁西红柿
虾仁花椰菜
虾仁黄瓜
虾仁牛排

总结:从案例中提炼的 Python 入门核心

这 7 个案例看似简单,却覆盖了 Python 入门的高频知识点:

  • 基础语法:变量定义、输入输出(input/print)、条件判断(if)、循环(for/while)、嵌套循环;
  • 数据类型:字符串(格式化)、列表(索引访问);
  • 特殊技巧:位运算(<<)、第三方库(turtle)、累加 / 阶乘逻辑;
  • 避坑点:变量大小写敏感、range () 序列范围、print () 的 end 参数。

建议大家把代码复制到 PyCharm 或 IDLE 中运行,再试着修改参数(比如把乘法表改成 10 阶,把五角星边长改成 150)——“动手改代码” 比 “光看代码” 更能理解原理。Python 入门没有捷径,多敲、多试、多思考,就能慢慢掌握!

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小辉编程充电站

技术路有你,打赏助我分享

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值