You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS50 Pset6:Python版Mario金字塔代码优化求助(初学者)

优化你的Python版Mario金字塔代码

作为刚接触Python的CS50初学者,从C转过来觉得代码反而啰嗦太正常了——毕竟Python的核心优势就是用更简洁、更贴近自然语言的语法实现逻辑,咱们来把这段Mario代码改得更Pythonic!

先看看你的原代码:你用了n和m两个变量分别跟踪每行的空格数和#数量,还嵌套了两层循环逐个打印字符,确实有点冗余。其实Python的字符串特性可以帮我们彻底简化这部分逻辑。

优化后的代码

from cs50 import get_int

# 获取符合要求的金字塔高度
while True:
    height = get_int("Height: ")
    if 0 < height < 9:
        break

# 遍历生成每一行
for i in range(1, height + 1):
    # 第i行需要(height - i)个空格,i个#,直接用字符串乘法拼接后打印
    print(" " * (height - i) + "#" * i)

为什么这样更简洁?

  • 去掉冗余变量:不再需要n和m来维护空格和#的数量,直接通过循环变量i推导——第i行(从1开始计数)的空格数是height - i,#的数量就是i,逻辑一目了然。
  • 利用Python字符串乘法:" " * (height - i)会直接生成对应数量的空格字符串,"#" * i同理生成对应数量的#字符串,省去了嵌套循环逐个打印字符的麻烦,这正是Python提升编码效率的体现。
  • 结构更清晰:每行的打印逻辑浓缩成一行代码,整体代码行数减少,可读性反而更高,和你之前写的C语言版本比,完全不会显得冗余。

测试一下,输入高度4的话,输出和你预期的完全一致:

$ ./mario
Height: 4

内容的提问来源于stack exchange,提问作者C.5314

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:07:49