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

Python使用while循环实现菱形图案:修正半菱形代码问题

修正后的Python菱形打印代码(仅用while循环)

你的代码上半部分逻辑正确,但下半部分的星号数量计算和变量处理有误,导致无法正确输出下半菱形。以下是修正后的完整代码:

n = int(input())
h = 1
k = 1
rows_upper = (n + 1) // 2

# 打印上半部分(包括中间行)
while h <= rows_upper:
    b = 1
    # 打印前置空格
    while b <= rows_upper - h:
        print(' ', end='')
        b += 1
    j = 1
    # 打印星号
    while j <= k:
        print('*', end='')
        j += 1
    k += 2
    print()
    h += 1

# 打印下半部分
rows_lower = n // 2
# 从中间行的前一行星号数开始递减
k = k - 4
h = 1
while h <= rows_lower:
    b = 1
    # 打印前置空格
    while b <= h:
        print(' ', end='')
        b += 1
    j = 1
    # 打印星号
    while j <= k:
        print('*', end='')
        j += 1
    k -= 2
    print()
    h += 1

关键修正点:

  • 用整数除法//替代浮点数除法,避免因浮点数导致的循环判断误差
  • 单独计算上半部分和下半部分的行数,逻辑更清晰
  • 下半部分的星号数从k-4开始(上半部分最后一次循环后k多增加了2,需要回退两次),每次递减2,保证星号数量正确
  • 下半部分的空格数从1开始递增,与上半部分的空格数递减逻辑对应

测试输入5时,输出如下:

*
 ***
*****
 ***
  *

内容的提问来源于stack exchange,提问作者Nabeeha Siddiqui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:45:24