菱形打印(Python)

news2025/2/12 0:53:27

“以块组合块”,以行凝结循环打印。


(笔记模板由python脚本于2024年11月30日 19:55:22创建,本篇笔记适合正在学习python循环的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


“以块组合块”
菱形打印
(以行凝结循环打印)


本文质量分:

97 97 97

本文地址: https://blog.csdn.net/m0_57158496/article/details/144159785

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 菱形打印
    • 零、题目描述
    • 一、引言
    • 二、代码概览
    • 三、逻辑分析
    • 四、简单拓展:简单沙漏
    • 五、高阶练习:numpy“画图”
    • 六、完整源码(Python)


◆ 菱形打印


零、题目描述


  • 题目描述截屏图片
    在这里插入图片描述

题目来源于 CSDN 问答社区提问“错位菱形打印”



回页目录


一、引言


  在编程学习中,打印图案是一种有趣且富有教育意义的活动。它不仅锻炼了我们的逻辑思维能力,还加深了对循环和字符串操作的理解。本文将详细分析一个使用 Python 打印菱形图案的代码,并解释其背后的逻辑。


  • 错位菱形、标准菱形、沙漏
    在这里插入图片描述
    我用.换前导空格,是让空格显形,让我们可以看清空格,理解算法逻辑,帮助阅读代码。



回页目录


二、代码概览


菱形打印代码


n = 21  # n 是菱形的最大宽度

# 上半部分:打印逐渐增加的星号行
for i in range(1, n+1, 2):  # 以2为步长遍历
    print(f"{'.'*(n-i)}{' '.join('*'*i)}")  # 生成并打印当前行

# 下半部分:打印逐渐减少的星号行
for i in range(n-2, -1, -2):  # 以-2为步长遍历(最多的行已打印,从第二行起)
    print(f"{'.'*(n-i)}{' '.join('*'*i)}")  # 生成并打印当前行
 

  • 运行效果
    上一节屏幕截图的中间那个,标准菱形。



回页目录


三、逻辑分析


  • 初始化宽度 n
    n 被设定为菱形的最大宽度,并且是一个奇数。这是为了确保菱形的顶部和底部都有一个单独的星号,从而保持图案的对称性。

  • 上半部分打印
    • for i in range(1, n+1, 2): 这个循环从 1 开始,到 n 结束,步长为 2。这样,i 的值将始终是奇数,从而保证每一行星号的数量也是奇数,保持对称。
    • '.'*(n-i): 这部分生成当前行左侧的空格。随着 i 的增加,空格的数量逐渐减少,使得星号向中心靠拢。
    • ' '.join('*'*i): 这部分生成当前行的星号。'*'*i 生成一个由 i 个星号组成的字符串,然后 ' '.join(...) 将这些星号用空格连接起来,形成一行。
    • print(...): 打印当前行。

  • 下半部分打印

    • for i in range(n-2, -1, -2): 这个循环从 n-2 开始,到 0 结束,步长为 -2。这样,i 的值将逐渐减小,从而每一行星号的数量也逐渐减少,直到回到最底部的一行。

    • '.'*(n-i): 这部分与上半部分相同,生成当前行左侧的空格。

    • ' '.join('*'*i): 这部分也与上半部分相同,生成当前行的星号。

    • print(...): 打印当前行。


  通过上述分析,我们可以看到,该代码巧妙地利用了两个循环来分别打印菱形的上半部分和下半部分。通过控制循环的起始值、结束值和步长,代码能够生成一个完美的菱形图案。这种编程技巧不仅实用,而且对于学习循环和字符串操作非常有帮助。



回页目录


四、简单拓展:简单沙漏


  • 沙漏一
    在这里插入图片描述

我的学习笔记

  • 根据给定字符数和字符,打印输出“沙漏”和剩余数
    地址:https://blog.csdn.net/m0_57158496/article/details/126012269
    浏览阅读:1.641k
    点赞:8 收藏:9 评论:7
    (本篇笔记于2022-07-27 12:50:52首次发布,最后修改于2022-08-04 00:01:30)
    • 沙漏二
      在这里插入图片描述



    回页目录


    五、高阶练习:numpy“画图”


    我的学习笔记

    • numpy矩阵画框框
      地址:https://blog.csdn.net/m0_57158496/article/details/133979292
      浏览阅读:443
      (本篇笔记于2023-10-22 22:55:02首次发布,最后修改于2023-10-26 12:42:10)
    • 效果截屏
      在这里插入图片描述



    回页目录


    六、完整源码(Python)


    • 效果截屏
      在这里插入图片描述

    (源码较长,点此跳过源码)
    Python 脚本

    #!/usr/bin/env python3
    
    
    n = 21 # 菱形最大宽度
    
    
    print("\n错位菱形")
    
    for i in range(1, n+1, 2): # 以2为步长遍历
        print(f"{'.'*(n-i-1)}{' '.join('*'*i)}") # 生成并打印当前行
    
    for i in range(n-2, -1, -2): # 以-2为步长遍历(最多的行已打印,从第二行起)
        print(f"{'.'*(n-i-1)}{' '.join('*'*i)}") # 生成并打印当前行
    
    
    print("\n标准菱形")
    for i in range(1, n+1, 2): # 以2为步长遍历
        print(f"{'.'*(n-i)}{' '.join('*'*i)}") # 生成并打印当前行
    
    for i in range(n-2, -1, -2): # 以-2为步长遍历(最多的行已打印,从第二行起)
        print(f"{'.'*(n-i)}{' '.join('*'*i)}") # 生成并打印当前行
    
    
    print("\n沙漏")
    for i in range(n, -1, -2): # 以-2为步长遍历(最多的行已打印,从第二行起)
        print(f"{'.'*(n-i)}{' '.join('*'*i)}") # 生成并打印当前行
    
    for i in range(3, n+1, 2): # 以2为步长遍历
        print(f"{'.'*(n-i)}{' '.join('*'*i)}") # 生成并打印当前行
    
    



    回页首


    上一篇:  启源Q05,“纯油耗二毛五”/km?(这汽车“喝水能跑”,查证后却是同事“美丽”的谎言)
    下一篇: 



    我的HOT博:

      本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k的有 9 9 9篇。

    1. 让QQ群昵称色变的神奇代码
      地址:https://blog.csdn.net/m0_57158496/article/details/122566500
      浏览阅读:6.2w
      点赞:25 收藏:89 评论:17
      (本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)

    2. Python列表(list)反序(降序)的7种实现方式
      地址:https://blog.csdn.net/m0_57158496/article/details/128271700
      浏览阅读:1.3w
      点赞:9 收藏:40 评论:8
      (本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)

    3. pandas 数据类型之 DataFrame
      地址:https://blog.csdn.net/m0_57158496/article/details/124525814
      浏览阅读:1.0w
      点赞:7 收藏:40 
      (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)

    4. 个人信息提取(字符串)
      地址:https://blog.csdn.net/m0_57158496/article/details/124244618
      浏览阅读:1.0w
      点赞:3 收藏:20 
      (本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)

    5. 罗马数字转换器|罗马数字生成器
      地址:https://blog.csdn.net/m0_57158496/article/details/122592047
      浏览阅读:8.2k
      收藏:3 
      (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

    6. 统计字符串字符出现的次数
      地址:https://blog.csdn.net/m0_57158496/article/details/130517025
      浏览阅读:8.1k
      点赞:5 收藏:24 
      (本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)

    7. Python字符串居中显示
      地址:https://blog.csdn.net/m0_57158496/article/details/122163023
      浏览阅读:8.0k
      点赞:1 收藏:12 评论:1
    8. 回车符、换行符和回车换行符
      地址:https://blog.csdn.net/m0_57158496/article/details/123109488
      浏览阅读:6.7k
      点赞:2 收藏:4 
      (本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)

    9. python清屏
      地址:https://blog.csdn.net/m0_57158496/article/details/120762101
      浏览阅读:6.1k
      点赞:1 收藏:10 

    推荐条件 阅读量突破6.00k
    (更多热博,请点击蓝色文字跳转翻阅)

    • 截屏图片
      在这里插入图片描述
        (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



    回页首


    老齐漫画头像

    精品文章:

    • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
    • OPP三大特性:封装中的property
    • 通过内置对象理解python'
    • 正则表达式
    • python中“*”的作用
    • Python 完全自学手册
    • 海象运算符
    • Python中的 `!=`与`is not`不同
    • 学习编程的正确方法

    来源:老齐教室


    ◆ Python 入门指南【Python 3.6.3】


    好文力荐:

    • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
    • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
    • 靠谱程序员的好习惯
    • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

    CSDN实用技巧博文:

    • 8个好用到爆的Python实用技巧
    • python忽略警告
    • Python代码编写规范
    • Python的docstring规范(说明文档的规范写法)

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2251042.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    【QT入门到晋级】QT项目打生产环境包--(Linux和window)

    前言 使用QTcreator完成正常编译后,在构建目录中有可执行程序生成,如果直接把可执行程序拷贝到干净的生产环境上是无法运行成功的,使用ldd(查看程序依赖包)会发现缺失很多QT的特性包,以及将介绍国产Linux桌…

    Super Vlan与Mux Vlan

    SuperVlan VLAN Aggregation, 也称 Super-VLAN : 指 在一个物理网络内,用多个 VLAN (称为 Sub-VLAN )隔离 广播域,并将这些 Sub-VLAN 聚合成一个逻辑的 VLAN (称为 Super-VLAN ),这…

    蓝牙定位的MATLAB程序,四个锚点、三维空间

    这段代码通过RSSI信号强度实现了在三维空间中的蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。代码涉及信号衰减模型、距离计算和最小二乘法估计等基本概念,并通过三维可视化展示了真实位置与估计位置的关系。 目录 程序描述 运…

    Hutool 秒速实现 2FA 两步验证

    前言 随着网络安全威胁的日益复杂,传统的用户名和密码认证方式已不足以提供足够的安全保障。为了增强用户账户的安全性,越来越多的应用和服务开始采用多因素认证(MFA)。基于时间的一次性密码(TOTP, Time-based One-Ti…

    【继承】—— 我与C++的不解之缘(十九)

    前言: 面向对象编程语言的三大特性:封装、继承和多态 本篇博客来学习C中的继承,加油! 一、什么是继承? ​ 继承(inheritance)机制是⾯向对象程序设计使代码可以复⽤的最重要的⼿段,它允许我们在保持原有类…

    【目标跟踪】Anti-UAV数据集详细介绍

    Anti-UAV数据集是在2021年公开的专用于无人机跟踪的数据集,该数据集采用RGB-T图像对的形式来克服单个类型视频的缺点,包含了318个视频对,并提出了相应的评估标准(the state accurancy, SA)。 文章链接:https://arxiv.…

    偏差-方差权衡(Bias–Variance Tradeoff):理解监督学习中的核心问题

    偏差-方差权衡(Bias–Variance Tradeoff):理解监督学习中的核心问题 在机器学习中,我们希望构建一个能够在训练数据上表现良好,同时对未见数据也具有强大泛化能力的模型。然而,模型的误差(尤其…

    Figma入门-原型交互

    Figma入门-原型交互 前言 在之前的工作中,大家的原型图都是使用 Axure 制作的,印象中 Figma 一直是个专业设计软件。 最近,很多产品朋友告诉我,很多原型图都开始用Figma制作了,并且很多组件都是内置的,对…

    Windows系统怎么把日历添加在桌面上用来记事?

    在众多电脑操作系统中,Windows系统以其广泛的用户基础和强大的功能,成为许多人的首选。对于习惯于在电脑前工作和学习的用户来说,能够直接在桌面上查看和记录日历事项,无疑会大大提高工作效率和生活便利性。今天,就为大…

    蓝桥杯备赛笔记(一)

    这里的笔记是关于蓝桥杯关键知识点的记录,有别于基础语法,很多内容只要求会用就行,无需深入掌握。 文章目录 前言一、编程基础1.1 C基础格式和版本选择1.2 输入输出cin和cout: 1.3 string以下是字符串的一些简介:字符串…

    大数据新视界 -- 大数据大厂之 Hive 数据压缩:优化存储与传输的关键(上)(19/ 30)

    💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

    RNN And CNN通识

    CNN And RNN RNN And CNN通识一、卷积神经网络(Convolutional Neural Networks,CNN)1. 诞生背景2. 核心思想和原理(1)基本结构:(2)核心公式:(3)关…

    求整数的和与均值

    求整数的和与均值 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 读入n&#xff08;1 < n < 10000&#xff09;个整数&#xff0c;求它们的和与均值。 输入 输入第一行是一个整数n&#xff0c;…

    配置idea环境进行scala编程

    这里用的jdk是jdk-8u161,scala版本是2.12.0 在d盘新建一个本地仓库用来存放下载的maven包&#xff0c;在里面创建如下两个文件 更改settings文件为下面的样子 点击左下角的设置&#xff0c;更改maven本地仓库的位置&#xff08;默认在c盘用户目录下的.m2文件中&#xff0c;更改…

    WSL简介与安装流程(Windows 下的 Linux 子系统)

    目录 1.wsl安装 1.1 WSL简介 1.1.1 WSL 的主要功能 1.1.2 WSL 的版本 1.1.3 为什么使用 WSL&#xff1f; 1.1.4 WSL 的工作原理 1.1.5 WSL 的常见使用场景 1.1.6 与虚拟机的区别 1.1.7 适合使用 WSL 的人群 1.2 启用 WSL 1.2.1 打开 PowerShell&#xff08;管理员模…

    【Java树】二叉树遍历的简单实现

    二叉树的遍历 二叉树的遍历是值按照一定顺序访问二叉树中所有结点的过程&#xff0c;确保每个结点被访问且仅被访问一次。遍历操作是对二叉树的基础操作&#xff0c;用于后续的查找、排序和路径计算等功能。 二叉树的遍历有以下几种常见方式&#xff1a;深度遍历&#xff08;…

    STL算法之set相关算法

    STL一共提供了四种与set(集合)相关的算法&#xff0c;分别是并集(union)、交集(intersection)、差集(difference)、对称差集(symmetric difference)。 目录 set_union set_itersection set_difference set_symmetric_difference 所谓set&#xff0c;可细分为数学上定义的和…

    鸿蒙ArkUI-X已更新适配API13啦

    ArkUI-X 5.0.1 Release版配套OpenHarmony 5.0.1 Rlease&#xff0c;API 13&#xff0c;新增适配部分API 13接口支持跨平台&#xff1b;框架能力进一步完善&#xff0c;支持Android应用非压缩模式&#xff0c;支持Android Fragment对接跨平台。ACE Tools工具易用性提升&#xff…

    rest-assured multiPart上传中文名称文件,文件名乱码

    rest-assured是一个基于java语言的REST API测试框架&#xff0c;在使用rest-assured的multipart 上传文件后&#xff0c;后端获取的文件名称乱码。截图如下&#xff1a; 原因是rest-assured multipart/form-data默认的编码格式是US-ASCII&#xff0c;需要设置为UTF-8。 Befo…

    前端页面或弹窗在线预览文件的N种方式

    需求&#xff1a;后端返回给前端一个地址后&#xff0c;在前端页面上或则在弹框中显示在线的文档、表格、图片、pdf、video等等&#xff0c;嵌入到前端页面 方式一&#xff1a; 使用vue-office 地址&#xff1a;vue-office简介 | vue-office 个人感觉这个插件是最好用的&#x…