第12讲的这个打印星号三角形是如何
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
看了半天没看懂是如何实现打印三角形的,请高手逐句解释一下代码,谢谢! 本帖最后由 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 个 '*' 有行有列,我们叫它二维。比如打印三角形,正方形,这都是2维。
打印2维就离不开双层循环嵌套(你也可以叫2层循环嵌套),
外层控制换行,内层打印一行的内容。
jackz007 发表于 2022-8-30 12:19
试试这个简化版的代码:
简化版的确实更优雅,赞!
我还是要先把原来的这个版本彻底搞明白,虽然都加了注释,但是作为一个刚开始学习python的小鱼油而言,还是有些没搞懂05-07、09-12这两个循环分别是实现什么?怎么实现的?
见笑,求教{:5_109:} minliang320 发表于 2022-8-30 22:08
简化版的确实更优雅,赞!
我还是要先把原来的这个版本彻底搞明白,虽然都加了注释,但是作为一个刚开 ...
抱歉,如果连这个都看不懂,那就没办法了,这两个循环要干什么我已经交代清楚了,而且,语法结构也很单一,无法进一步解释,因为,1 + 1 = 2 没办法解释。 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结束程序
#最后写给二哥,谢谢你在火车上专门拿出电脑给我做了这么认真仔细的解释,如果有一天你无意间逛了这个论坛,看到这个帖子,你要知道我真的真的感谢你。
页:
[1]