循环嵌套打印三角形星星阵 | Python从入门到开发:入门篇之十七

简介: 本章节讲授如何进行循环的嵌套使用。

先来回顾一下上节课讲过的while语句的循环方式以及它的实际应用。
第十六节:while语句习题课
下面就跟着老师一起来走进循环的“高阶”版本吧~

循环嵌套

按照数学老师的惯例,讲授新知识之前先来看一道例题:
在控制台中打印如下图形:
image.png
打印一个5*5的星星阵。有同学就会想到,写五个输出语句就好啦:

print('* * * * *')
print('* * * * *')
print('* * * * *')
print('* * * * *')
print('* * * * *')

执行结果如下:
image.png
那如果老师要你打印100*51000*58848*5呢。。
此时就可以利用咱们上节课讲过的循环语句来实现:

i=0
while i<5 :
    print('* * * * *')
    i+=1

执行结果也是一样的。而且只需要修改条件表达式i<5中的数字,就可以实现打印100*51000*58848*5。。等等这些,那老师又提要求了,我现在想打印10列,我觉得5列太少了,你的第一想法是修改print语句里面的* 数量就可以实现,那么同样的问题来了,我想打印8848*8848怎么办呢?
用同样的思路:同样对列使用循环,这就形成了一个循环的嵌套。具体怎么嵌套,跟着老师往下看:
首先在里面加一个内层循环,控制列数:

i=0
while i<5 :
    j=0
    while j<5:
        print('* ')
        j+=1
    i+=1

结果会发现执行结果变成了:
image.png
这是为什么呢?在python中,print函数是默认有一个n来控制换行的,也就是说每打印一次*之后就执行了一次换行,那这显然是不行的,我们是想让他打印五次再换行嘛,就需要在后面加一个end=''使得这个换行的功能用空格换掉,再来看一下效果:
image.png
结果发现它全都变成了横向的,这是因为内层的循环再执行一次5列之后还是执行了end=''所以就没有进行换行操作,此时就需要在内层循环结束加一个空的print语句,让其换行即可。

i=0
while i<5 :
    j=0
    while j<5:
        print('* ',end=' ')
        j+=1
    print()
    i+=1

执行结果为:
image.png
这就是咱们想要的结果了。
综上:循环嵌套时,外层循环执行一次,内层循环就执行了一圈(在这里就是5次)。内层循环控制图形的宽度,外层循环控制图形的高度。
此时,我的需求又要变化啦,我不想打印“矩形”了,我想打印一个“三角形”。
image.png
那该怎么来实现呢?
刚刚打印“矩形”的时候老师说了,外层循环控制图形的高度,内层循环控制图形的宽度,现在图形的高度依然是5,所以外层循环是不变的,那么内层循环该怎么变化呢?
如果j的值是固定的,那么就是宽度是固定的,但是这个“三角形”的宽度是变化的,那咱们来分析一下,
当i执行第一次i=0,图形宽度为1,那么j就是小于1;
当i执行第二次i=1,图形宽度为2,j就是小于2;
当i执行第三次i=2,图形宽度为3,j就是小于3。。。
有同学就发现了,j的值是根据i来变化的,j就是小于i+1的值。程序如下:

i=0
while i<5 :
    j=0
    while j<i+1:
        print('* ',end=' ')
        j+=1
    print()
    i+=1

执行结果为:
image.png
这样美丽的“三角形”就绘制出来啦~
大家在理解一下这个逻辑:外层循环执行一次,内层循环就执行一圈,外层i的值在变化,就控制了内层j的值。也就控制了图形的宽度。
练习1
打印99乘法表

1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
...9*9=81

练习2
求100以内所有的质数
下节课来公布答案。
第十八节:打印九九乘法表

视频学习:阿里云大学之Python进阶必看

配套Python进阶文章点击此处获取

相关文章
|
27天前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
235 7
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
302 1
|
1月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
Python API接口实战指南:从入门到精通
|
1月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
419 1
|
2月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
396 7
|
2月前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
170 5
|
2月前
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。
|
2月前
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
145 0
|
2月前
|
存储 缓存 安全
Python字典:从入门到精通的实用指南
Python字典如瑞士军刀般强大,以键值对实现高效数据存储与查找,广泛应用于配置管理、缓存、统计等场景。本文详解字典基础、进阶技巧、实战应用与常见陷阱,助你掌握这一核心数据结构,写出更高效、优雅的Python代码。
80 0
|
3月前
|
数据挖掘 数据处理 C++
Python Lambda:从入门到实战的轻量级函数指南
本文通过10个典型场景,详解Python中Lambda匿名函数的用法。Lambda适用于数据处理、排序、条件筛选、事件绑定等简洁逻辑,能提升代码简洁性和开发效率。同时提醒避免在复杂逻辑中过度使用。掌握Lambda,助你写出更高效的Python代码。
197 0