鱼C论坛

 找回密码
 立即注册
查看: 2811|回复: 5

[已解决]第12讲的这个打印星号三角形是如何

[复制链接]
发表于 2022-8-30 12:02:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
n = int(input("请输入三角形的层数:"))
i = 1
while i <= n :
    j = 0
    while j < n-i:
        print (" ", end="")
        j = j+1
    j = 0
    while j < 2*i-1:
        print("*", end="")
        j = j+1
    print("")
    i = i+1

看了半天没看懂是如何实现打印三角形的,请高手逐句解释一下代码,谢谢!
最佳答案
2022-8-30 12:19:45
本帖最后由 jackz007 于 2022-8-30 13:05 编辑
n = int(input("请输入三角形的层数:"))
i = 1                           # 行号 i 赋初值 1
while i <= n :                  # 循环 n 次,循环变量 i 的变化范围为 1、2... n
    j = 0                     
    while j < n-i:                  # 循环 n - i 次,在同一行连续打印 n - i 个空格,第1、2、3行将分别打印 n - 1、n - 2 、n - 3 个空格,第 n 行则没有空格。
        print (" ", end="")             # print(... , end = "") 代表不换行打印
        j = j+1
    j = 0                           
    while j < 2*i-1:                # 循环 2 * i - 1 次,在同一行连续打印 2 * i - 1 个星号,第1、2、3分别打印1、3、5 个星号
        print("*", end="")              # print(... , end = "") 代表不换行打印
        j = j+1 
    print("")                       # 换行,准备打印下一行
    i = i+1                         # 行号增加 1
        试试这个简化版的代码:
n = int(input("请输入三角形的层数:"))
for i in range(1 , n + 1):                        # 循环 n 次,每次打印 1 行,循环变量 i 是行号,变化范围 1 ~ n。
    print(' ' * (n - i) + '*' * (2 * i - 1))      # 打印 n - i 个 ' ' 和 2 * i - 1 个 '*'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-30 12:19:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-8-30 13:05 编辑
n = int(input("请输入三角形的层数:"))
i = 1                           # 行号 i 赋初值 1
while i <= n :                  # 循环 n 次,循环变量 i 的变化范围为 1、2... n
    j = 0                     
    while j < n-i:                  # 循环 n - i 次,在同一行连续打印 n - i 个空格,第1、2、3行将分别打印 n - 1、n - 2 、n - 3 个空格,第 n 行则没有空格。
        print (" ", end="")             # print(... , end = "") 代表不换行打印
        j = j+1
    j = 0                           
    while j < 2*i-1:                # 循环 2 * i - 1 次,在同一行连续打印 2 * i - 1 个星号,第1、2、3分别打印1、3、5 个星号
        print("*", end="")              # print(... , end = "") 代表不换行打印
        j = j+1 
    print("")                       # 换行,准备打印下一行
    i = i+1                         # 行号增加 1
        试试这个简化版的代码:
n = int(input("请输入三角形的层数:"))
for i in range(1 , n + 1):                        # 循环 n 次,每次打印 1 行,循环变量 i 是行号,变化范围 1 ~ n。
    print(' ' * (n - i) + '*' * (2 * i - 1))      # 打印 n - i 个 ' ' 和 2 * i - 1 个 '*'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-30 18:55:49 | 显示全部楼层
有行有列,我们叫它二维。比如打印三角形,正方形,这都是2维。
打印2维就离不开双层循环嵌套(你也可以叫2层循环嵌套),
外层控制换行,内层打印一行的内容。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-8-30 22:08:50 | 显示全部楼层
jackz007 发表于 2022-8-30 12:19
试试这个简化版的代码:

简化版的确实更优雅,赞!

我还是要先把原来的这个版本彻底搞明白,虽然都加了注释,但是作为一个刚开始学习python的小鱼油而言,还是有些没搞懂05-07、09-12这两个循环分别是实现什么?怎么实现的?

见笑,求教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-30 22:21:09 | 显示全部楼层
minliang320 发表于 2022-8-30 22:08
简化版的确实更优雅,赞!

我还是要先把原来的这个版本彻底搞明白,虽然都加了注释,但是作为一个刚开 ...

        抱歉,如果连这个都看不懂,那就没办法了,这两个循环要干什么我已经交代清楚了,而且,语法结构也很单一,无法进一步解释,因为,1 + 1 = 2 没办法解释。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-1 17:11:54 | 显示全部楼层
minliang320 发表于 2022-8-30 22:08
简化版的确实更优雅,赞!

我还是要先把原来的这个版本彻底搞明白,虽然都加了注释,但是作为一个刚开 ...

一个同样在学python的同学那里总算搞懂了,为了能帮到其他和我一样菜的鱼油,我把同学给我的释义整理后分享如下:
1、这是一个两层循环结构,第一层循环是判断i<=n

2、第二层循环有两个,依次执行。第一个子循环是打印空格(可以理解为是做格式控制的,你可以把语句里面的空格换为其他符号,比如A,就更好理解了);第二个子循环是在第一个子循环结束完之后执行,表现出来就是第一个循环打空格,第二个子循环在空格之后打*

以下是程序释义:

n = int(input("请输入三角形的层数:"))  #举个例子,比如n=5

i = 1   #初始赋值i=1
while i <= n  :  #判断i<5,
    j = 0      #初始赋值j=0
    while j < n-i:    # 判断j<5-1
        print (" ", end="")
#执行打印空格(end="")表示在一行里面打,就一直打空格,一直到j=4就不打了,(那么第一行就打印4个空格,分别是j=0,1,2,3的时候打印的)

        j = j+1
j = 0
#然后进入第二个子循环(这个时候i还是1,换言之还是在第一行,先赋值j=0
while j < 2*i-1:  
        print("*", end="")
        # j<2*i-1的时候就打印*,此时i=1(第一行),只有j=0时候会满足j<2i,j<2*i-1,所以只打印1个*;第二个子循环结束
        j = j+1
    print("")  # print(”“)执行换行
i = i+1   
#再赋值i=i+1,然后进入第二次循环,第二次循环i=2,如此……直到i=n=5结束程序

#最后写给二哥,谢谢你在火车上专门拿出电脑给我做了这么认真仔细的解释,如果有一天你无意间逛了这个论坛,看到这个帖子,你要知道我真的真的感谢你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 15:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表