当前位置:首页>python>一起学Python(013):从思路到代码@循环打印图案

一起学Python(013):从思路到代码@循环打印图案

  • 2026-10-11 08:37:00
一起学Python(013):从思路到代码@循环打印图案

你是不是觉得编程很难?其实,用几行代码就能画出漂亮的图形。今天我们就用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(012):从思路到代码@登录验证器

一起学Python(011):从思路到代码@出租车计费

一起学Python(010):画同心圆的想与写

一起学Python(009):从零开始学绘图@turtle库使用

一起学Python(008):站在巨人的肩膀上编程@Python库引用

一起学Python(007):Python赋值语句轻松入门@每日饮水记录器

一起学Python(006):分支控制结构让程序学会“做选择”@成绩评定案例

一起学Python(005):从斐波那契数列看循环控制结构

一起学Python(004):Python程序三种控制结构:顺序、分支和循环

一起学Python(003):Python代码书写规则:那些让程序崩溃的“小细节”

一起学Python(002):计算机的“数字秘密”——0和1如何统治世界?

一起学Python(001):为什么文科生也要学Python?

欢迎【点赞】+【转发】❤️

最新文章

随机文章