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

如何修改仅用while循环的Python代码以正确打印指定图案?

修复仅用while循环打印交替图案的奇数行问题

问题场景

想要仅通过while循环打印*和#交替的图案,现有代码在列数h为偶数时正常运行,但h为奇数时无法输出完整的行(比如调用tapis_2(5,5)时,每行仅输出4个字符,预期是5个)。原代码如下:

def etoile():
    print('*',sep='',end='')
    
def diese() :
    print('#', sep='',end='')
    
def nouvelle_ligne() :
    print()

def tapis_2(l,h):
    
    i = 0
    
    
    while i<l:
        j = 0
        while j<h//2:
            etoile()
            diese()
            j += 1
        nouvelle_ligne()
        i += 1

问题原因

原代码通过h//2控制内层循环次数,每次循环打印1个*加1个#(共2个字符)。当h为奇数时,h//2会向下取整(比如5//2=2),内层循环仅输出4个字符,缺少最后1个*,导致每行长度不足。

修改方案

在每行的内层循环结束后,判断h是否为奇数,若是则额外调用一次etoile()补全最后一个字符。修改后的tapis_2函数如下:

def tapis_2(l,h):
    i = 0
    while i < l:
        j = 0
        while j < h // 2:
            etoile()
            diese()
            j += 1
        # 处理奇数列的情况,补一个*
        if h % 2 != 0:
            etoile()
        nouvelle_ligne()
        i += 1

修改说明

  • 内层循环保持原逻辑,处理h//2组*#,确保偶数列时刚好输出h个字符
  • 新增的奇偶判断语句,在h为奇数时补打一个*,补全该行的第h个字符
  • 全程仅使用while循环,且调用了指定的etoile()、diese()、nouvelle_ligne()三个函数,符合要求

内容的提问来源于stack exchange,提问作者Mohamed Nabassoua

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:57:43