Python字符串三角打印图案多词输入异常问题求助
修复带空格字符串的三角打印问题
你的判断完全正确——str.replace()会替换字符串中所有匹配的字符,而不是只删除最后一个。比如输入"Elvis Presley"时,第一次调用replace删除末尾空格,会把字符串里所有空格都删掉,直接变成"ElvisPresley",后续删除其他重复字符时也会误删,自然输出异常。
修复方案
用字符串切片替代replace来操作末尾字符,切片string[:-1]可以精准获取原字符串去掉最后一个字符的子串,不会影响其他位置的相同字符。同时调整下半部分的循环逻辑,避免冗余执行。
修改后的完整代码
string = input("Please enter your word: ") # 打印上半三角 printable = "" for char in string: printable += char print(printable) # 打印下半三角(跳过完整字符串本身) current = string[:-1] while current: print(current) current = current[:-1]
代码说明
- 上半部分:直接遍历输入字符串的每个字符,逐步拼接并打印,逻辑和原代码一致但更简洁易读。
- 下半部分:从原字符串去掉最后一个字符开始,每次打印后再截掉当前字符串的最后一个字符,直到字符串为空停止。用切片
[:-1]精准操作,彻底解决了replace的误删问题。
测试输入"Elvis Presley",输出会是符合预期的三角图案:
E El Elv Elvi Elvis Elvis Elvis P Elvis Pr Elvis Pre Elvis Pres Elvis Presl Elvis Presle Elvis Presley Elvis Presle Elvis Presl Elvis Pres Elvis Pre Elvis Pr Elvis P Elvis Elvis Elvi Elv El E
内容的提问来源于stack exchange,提问作者ddoch003
相关产品推荐
相关产品推荐

