如何使用Python打印逐行幂次递增的三角数字图案
原代码问题定位
- 内层循环中直接把循环变量
columns赋值为rows**rows,既覆盖了原本代表列位置的索引值,计算逻辑也完全偏离图案规则:固定用行号做底数、行号做指数,同一行的所有位置都会输出同一个数,根本不会随列位置变化。 - 按当前代码运行的实际输出,第3行会打印
27 27 27,和目标中的3 9 27完全不符。
目标图案的数值生成规律
逐行拆解目标输出的核心规则:
- 第n行(n从1开始计数)共有n个数字
- 该行第k个位置的数字,是n的k次方,即
n ** k- 例如第5行,k从1遍历到5,依次计算51、52、53、54、5^5,正好对应目标中的
5 25 125 625 3125
- 例如第5行,k从1遍历到5,依次计算51、52、53、54、5^5,正好对应目标中的
正确实现逻辑与代码
基础可运行版本:
for rows in range(1, 6): for col_idx in range(1, rows + 1): current_num = rows ** col_idx print(current_num, end=' ') print()
如果需要消除每行末尾残留的多余空格,可以用列表拼接的方式优化输出:
for rows in range(1, 6): row_content = [str(rows ** col_idx) for col_idx in range(1, rows + 1)] print(' '.join(row_content))
代码核心调整点
- 不再覆盖循环变量的原始语义,把列位置的遍历值单独作为幂次计算依据,不再固定用行号当指数
- 幂次的取值跟着当前列的位置走,每行的数字从1次方开始逐步计算到与当前行号相等的次方,完全匹配图案规则
内容的提问来源于stack exchange,提问作者marabi
相关产品推荐
相关产品推荐

