如何按照星号模式循环替换消息字符实现指定格式化输出?
代码错误原因
- 分支逻辑错误:原代码将字符处理逻辑全部放在
c != 消息长度的else分支内,当c等于消息长度时,仅重置c的值,直接跳过了当前字符的处理,导致大量星号替换遗漏,最终输出不符合预期。 - 空格处理位置错误:空格判断被嵌套在else分支内,计数器到达边界时空格无法正常写入结果。
- 冗余的字符串预处理:
jstr = [x.strip(" ") for x in message]属于无效操作,直接遍历原消息字符串即可完成字符取值。
修正后的可运行代码
def main(): message = "123" pattern = "** *** **** * **" print(patterned_message(message, pattern)) def patterned_message(message, pattern): c = 0 res = "" msg_length = len(message) for char in pattern: if char == "*": # 按顺序取消息字符,超出长度自动循环 res += message[c] c = (c + 1) % msg_length else: # 非星号字符直接保留(含空格) res += char return res if __name__ == '__main__': main()
运行后输出结果为:12 312 3123 1 23,与预期一致。
内容的提问来源于stack exchange,提问作者Fluke
相关产品推荐
相关产品推荐

