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

如何实现指定字符串对称图案?解决末行字符重复问题

解决Python对称图案末行字符重复问题

需求是接收用户输入的字符串,生成指定的对称图案,但当前尝试的代码存在问题:最后一行会出现字符重复(比如输入包含R的字符串时,末行的R会打印两次),不符合图案要求。

尝试的问题代码如下:

S=input("Enter a String! ")
for i in range(len(S)):
  print(" "*i,end="")
  print(S[i],end="")
  print(" "*2*(len(S)-(i+1)),end="")
  print(S[i])

问题原因

这段代码的逻辑是每一行都固定打印两次当前字符S[i],但对称图案的最后一行(对应字符串的最后一个字符)只需要显示单个字符,不需要重复。当循环到最后一个索引i = len(S)-1时,中间空格的长度为2*(len(S)-(i+1)) = 0,所以会直接连续打印两次S[i],导致重复。

修正方案

通过判断当前是否为最后一行,调整打印内容:非最后一行时打印字符+中间空格+字符,最后一行只打印单个字符。

修正后的代码:

S = input("Enter a String! ")
str_length = len(S)
for i in range(str_length):
    # 打印前置缩进空格
    print(" " * i, end="")
    # 打印当前字符
    print(S[i], end="")
    # 非最后一行时,打印中间空格和对称字符
    if i != str_length - 1:
        print(" " * 2 * (str_length - i - 1), end="")
        print(S[i])
    else:
        # 最后一行仅打印单个字符
        print()

代码说明

  1. 前置空格:每一行的缩进空格数等于当前索引i,实现图案的左对齐递进效果。
  2. 字符打印:非最后一行时,在打印当前字符后,添加对应长度的中间空格,再打印一次当前字符,形成对称结构;最后一行直接打印单个字符,避免重复。

内容的提问来源于stack exchange,提问作者Piyush Baweja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:40:36