
你是不是觉得编程很难?其实,用几行代码就能画出漂亮的图形。今天我们就用Python的for循环,从最简单的直角三角形开始,一步步画出复杂的菱形和心形图案。
基础篇:直角三角形
规律:第1行1个星,第2行2个星……第5行5个星。
n=5 # 行数 for i in range(1, n+1): # i从1到5 print("*" * i) # 打印i个星(默认换行) |
运行输出:

进阶一:倒直角三角形
规律:第1行5个星,逐行减少。
n = 5 for i in range(n, 0, -1): # i从5递减到1 print("*" * i) # 打印i个星 |
运行输出:

range(5,0,-1)生成5,4,3,2,1,实现倒序打印。
进阶二:等腰三角形(居中)
规律:第i行有n-i个空格和2*i-1个星。
n = 5 for i in range(1, n+1): spaces = " " * (n - i) # 前导空格数 = 总行数 - 当前行号 stars = "*" * (2*i - 1) # 星号数 = 2×行号 - 1 print(spaces + stars) # 空格+星号,同行输出 |
运行输出:

等腰三角形每行比上一行多2个星,通过空格居中对齐。
进阶三:空心菱形
规律:菱形由上下两部分组成。上半部分行数n,下半部分n-1行。每行星和空格交替构成空心效果。
n = 5 # 菱形一半高度 # 上半部分(含中间行) for i in range(1, n+1): # 左边空格 print(" " * (n - i), end="") # 打印左侧星和右侧星(中间用空格填充) if i == 1: print("*") # 第一行只有一个星 else: print("*" + " " * (2*i-3) + "*") # 两侧星,中间空格 # 下半部分 for i in range(n-1, 0, -1): print(" " * (n - i), end="") if i == 1: print("*") else: print("*" + " " * (2*i-3) + "*") |
运行输出:

其中2*i-3是中间空格的个数(第一行无中间空格)
end=""使打印不换行,便于拼接
下半部分倒序循环,对称构造
进阶四:彩色心形图案(turtle库)
如果想打印更震撼的图形,可以用turtle绘图。下面是一个动态心形代码:
import turtle as t t.speed(0) # 最快速度 t.pensize(2) # 笔粗2像素 t.color("red") # 红色 t.penup() # 抬笔 t.goto(0, -150) # 移动到起始位置 t.pendown() # 落笔 t.begin_fill() # 开始填充 t.left(50) # 左转50度 t.forward(133) # 前进133像素 t.circle(50, 200) # 画圆弧(半径50,角度200) t.right(140) # 右转140度 t.circle(50, 200) # 画另一个圆弧 t.forward(133) # 前进133 t.end_fill() # 结束填充 t.hideturtle() # 隐藏海龟 t.done() # 保持窗口 |
运行输出:

这段代码利用圆弧和直线绘制标准心形,并填充红色。
从简单的星号三角形到复杂的菱形和心形,我们只用了几行循环代码。for循环的魅力在于:把重复劳动交给计算机,你只需描述规律。
字符串乘法:"*" * n 快速生成重复字符
range():灵活控制循环次数与方向
end=""控制输出不换行,实现同行拼接
动手试试
练习1:打印一个高为7的实心菱形。
练习2:将等腰三角形的星号改为其他字符(如`@`),做成圣诞树效果。
下一期我们将用循环解决猜数字游戏,敬请期待!
练习1:修改程序,增加一个“忘记密码”选项,提示“请联系管理员”。
# 预设正确的用户名和密码 correct_username = "admin" correct_password = "123456" print("=== 登录系统 ===") username = input("请输入用户名:") # 增加“忘记密码”选项 print("如果忘记密码,请输入 'forget'") choice = input("继续登录请按回车,忘记密码请输入 'forget':") if choice == "forget": print("请联系管理员重置密码!") else: password = input("请输入密码:") # 去除首尾空格(防止用户不小心按空格) username = username.strip() password = password.strip() if username == correct_username: if password == correct_password: print("登录成功!欢迎回来。") else: print("密码错误!") else: print("用户名不存在!") |

其他两题请读者们自行完成,也可以在留言区回复索取答案。
精彩回顾:
一起学Python(009):从零开始学绘图@turtle库使用
一起学Python(008):站在巨人的肩膀上编程@Python库引用
一起学Python(007):Python赋值语句轻松入门@每日饮水记录器
一起学Python(006):分支控制结构让程序学会“做选择”@成绩评定案例
一起学Python(004):Python程序三种控制结构:顺序、分支和循环
一起学Python(003):Python代码书写规则:那些让程序崩溃的“小细节”
一起学Python(002):计算机的“数字秘密”——0和1如何统治世界?
一起学Python(001):为什么文科生也要学Python?
欢迎【点赞】+【转发】❤️
