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

Python代码打印字母N时末尾出现多余*的问题求助

问题解决:打印字母N时末尾多出*的修复

你的代码中字母N的图案构造逻辑有误,导致最后一行多了一个多余的*。具体问题出在以下两点:

  1. 循环范围包含了size-1(即最后一行),此时size-i-2计算结果为负数,Python中空字符串乘负数会得到空值,导致该行额外多了一个*。
  2. 每行末尾多余的+ " "会让字符串长度超出预期,进一步放大格式问题。

修复后的代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:10:58