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

如何用更简单的Python代码实现带奇数校验的星号菱形打印功能

原代码逻辑拆解
  • 首先导入math库做上下取整运算,接收用户输入的高度值转成整数
  • 合法性校验:判断输入值是否为大于2的奇数,不满足就输出提示
  • 构造序列a:比如输入高度为7(奇数),a最终会变成[1,2,3,4,3,2,1],对应每行星号的“层级”,用来计算每行需要打印的星号数量
  • 循环遍历序列a的每一项:
    • 每行星号数量 = 2*层级 -1,比如层级1对应1个星,层级2对应3个星,以此类推
    • 每行左右两侧的空格数 =(总高度 - 星号数量)// 2,保证星号居中
    • 拼接空格+星号+空格后打印,就得到菱形效果
更简单的实现方案

不需要导入math库,逻辑更直观,直接拆分上下半部分打印即可,代码如下:

# 获取用户输入
height = int(input("Enter height - odd number: "))

# 合法性校验
if height > 2 and height % 2 == 1:
    mid = height // 2  # 中间行的索引,比如高度7的话mid是3(从0数第4行是中间)
    # 打印上半部分+中间行
    for i in range(mid + 1):
        star_num = 2 * i + 1
        space_num = mid - i
        print(" " * space_num + "*" * star_num + " " * space_num)
    # 打印下半部分(倒序,不包含中间行)
    for i in range(mid - 1, -1, -1):
        star_num = 2 * i + 1
        space_num = mid - i
        print(" " * space_num + "*" * star_num + " " * space_num)
else:
    print("The height must be a positve odd value")

这个实现的优势:

  • 不需要依赖math库,也不需要构造额外的列表,直接两次循环就完成打印,逻辑清晰好懂
  • 计算过程都是整数运算,没有类型转换的额外开销

内容的提问来源于stack exchange,提问作者Newbie Jeanette

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:54:00