如何用仅2个for循环在Python中生成指定数字金字塔并简化代码
简洁实现:仅用2个for循环生成数字金字塔
嘿,你当前的代码确实存在大量冗余——所有行都是硬编码打印的,完全没发挥循环的作用。其实我们可以利用数字金字塔的规律,只用两个for循环就轻松实现,而且代码简洁易维护:
实现代码
for x in range(1, 10): row = [] for y in range(1, x + 1): row.append(str(x * y)) print(' '.join(row))
或者更紧凑的写法(依然是两个for循环,只是把内层循环整合进了生成器表达式):
for x in range(1, 10): print(' '.join(str(x * y) for y in range(1, x + 1)))
代码逻辑说明
- 外层循环
for x in range(1, 10):控制金字塔的行数,从第1行到第9行(对应数字1到9)。 - 内层循环
for y in range(1, x + 1):控制每行的数字个数,第x行恰好有x个数字,每个数字是x * y(y从1到x)——这正好匹配你要的每行规律:第x行的第y个数字是x的y倍。 - 用
' '.join()把每行的数字字符串拼接成空格分隔的格式,最后打印整行。
这样的写法完全不需要硬编码任何一行内容,所有数字都通过逻辑生成,严格符合“仅用2个for循环”的要求,可读性和扩展性也强很多~
内容的提问来源于stack exchange,提问作者Jade Page
相关产品推荐
相关产品推荐

