Python代码打印字母N时末尾出现多余*的问题求助
问题解决:打印字母N时末尾多出*的修复
你的代码中字母N的图案构造逻辑有误,导致最后一行多了一个多余的*。具体问题出在以下两点:
- 循环范围包含了
size-1(即最后一行),此时size-i-2计算结果为负数,Python中空字符串乘负数会得到空值,导致该行额外多了一个*。 - 每行末尾多余的
+ " "会让字符串长度超出预期,进一步放大格式问题。
修复后的代码
def is_valid_word(word): valid_letters = set("ABNOTY") return all(letter in valid_letters for letter in word) size=7 def get_pattern(letter, size): # Define patterns for each letter based on the specified size patterns = { 'N': [ " *" + " "*(size-2) + "*", # 第一行 *[" *" + " "*(i-1) + "*" + " "*(size-i-2) + "*" for i in range(1, size-1)], # 中间行 " *" + " "*(size-2) + "*" # 最后一行 ] } return patterns.get(letter, ["Invalid"]) def main(): while True: word = input("Enter a valid word (or 'END' to stop): ") if word.upper() == "END": break if not is_valid_word(word): print("Error: Invalid input. Please enter a valid word.") continue letter_patterns = [get_pattern(letter, size) for letter in word] for i in range(size): for pattern in letter_patterns: print(pattern[i], end=" ") print() if __name__ == "__main__": main()
修复说明
- 拆分N的图案为三部分:第一行、中间行(从第2行到倒数第2行)、最后一行,确保每行长度一致且符合N的形状。
- 中间行的循环范围改为
range(1, size-1),避免处理最后一行时出现负数空格的情况。 - 移除了原代码中每行末尾多余的
+ " ",保证图案的紧凑性。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

