字母兰戈利(Alphabet Rangoli)代码隐藏测试用例问题求助
问题排查与修复
核心问题1:字母顺序颠倒
你的代码生成的字母片段是从小到大排列(如b-c),但字母兰戈利要求每一行的字母从最大的目标字母向中间递减(如c-b),这导致镜像后的行结构错误。
比如当size=2时,你的代码生成中间行为a-b-a,但正确结果应为b-a-b。
修复方式:在生成字母字符串时,将切片得到的字母列表反转:
# 原代码行 string = '-'*dash + '-'.join(alphalist[iter-1:size]) # 修改为 letters = alphalist[iter-1:size] string = '-'*dash + '-'.join(letters[::-1])
核心问题2:输入提示语干扰在线测试
你的代码使用input('enter size:')添加了提示文本,但在线测试平台仅期望输出兰戈利图案,额外的提示语会被判定为输出错误。
修复方式:移除提示语,直接读取输入:
# 原代码行 size = int(input('enter size:')) # 修改为 size = int(input())
其他潜在问题:循环冗余
原循环条件while not (dash<0 and iter <0)会多执行一次无意义的循环(当iter和dash都为负数时才停止),可以优化为更清晰的条件:
# 原循环 while not (dash<0 and iter <0): dash -=2 string = '-'*dash + '-'.join(alphalist[iter-1:size]) if string != '': list_reverse.append(string) iter -=1 # 修改为(循环size次即可,因为需要生成size行上半部分) for i in range(size): dash = 2*(size - i -1) letters = alphalist[i:size] string = '-'*dash + '-'.join(letters[::-1]) list_reverse.append(string)
修复后的完整代码
alphabet = 'abcdefghijklmnopqrstuvwxyz' alphalist = list(alphabet) size = int(input()) list_reverse = [] rangoli_final = [] for i in range(size): dash = 2*(size - i -1) letters = alphalist[i:size] string = '-'*dash + '-'.join(letters[::-1]) list_reverse.append(string) for rangoli in list_reverse: rangoli_final.append(rangoli[:-1] + rangoli[::-1]) for val in rangoli_final[:len(rangoli_final)-1]: print(val) for mirror in rangoli_final[::-1]: print(mirror)
内容的提问来源于stack exchange,提问作者vighnesh Sathya
相关产品推荐
相关产品推荐

