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

Python字符水平打印与可缩放输出实现技术咨询

字符打印程序优化方案

需求概述

  • 输入仅包含ABNOTY的单词,将字符从垂直打印改为水平打印,字符间保留空格
  • 支持尺寸缩放(如5x5、8x8等),保证字符显示正常
  • 实现高效的多字符合并输出
  • 运行环境:Jupyter Notebook 6.5.4,且禁止使用多行字符串

核心解决方案

1. 水平打印实现

将每个字符的点阵按行存储为字符串列表,打印时按行遍历所有字符的对应行,拼接后输出,确保字符横向排列。

2. 尺寸缩放实现

通过缩放函数将基础7x7点阵转换为目标尺寸,按比例选取原点阵的行和列,保证字符形态不变。

3. 多字符合并输出

按行拼接每个字符的对应行是最优方式,避免多次换行和格式混乱,效率更高。

完整代码

def is_valid_word(word):
    # 验证输入是否仅包含有效字符
    valid_letters = set("ABNOTY")
    return all(letter.upper() in valid_letters for letter in word)

def scale_pattern(pattern, target_size):
    """将指定尺寸的字符点阵缩放到目标尺寸"""
    original_size = len(pattern)
    scaled_pattern = []
    # 处理高度缩放:按比例选取原行
    for row_idx in range(target_size):
        original_row = pattern[int(row_idx * original_size / target_size)]
        # 处理宽度缩放:按比例选取原列字符
        scaled_row = ""
        for col_idx in range(target_size):
            scaled_row += original_row[int(col_idx * original_size / target_size)]
        scaled_pattern.append(scaled_row)
    return scaled_pattern

# 基础7x7字符点阵(每行单独定义,避免多行字符串)
base_char_patterns = {
    'A': [
        "    *    ",
        "   * *   ",
        "  *   *  ",
        " ******* ",
        " *     * ",
        " *     * ",
        " *     * "
    ],
    'B': [
        " ******  ",
        " *     * ",
        " *     * ",
        " ******  ",
        " *     * ",
        " *     * ",
        " ******  "
    ],
    'N': [
        " *     * ",
        " **    * ",
        " * *   * ",
        " *  *  * ",
        " *   * * ",
        " *    ** ",
        " *     * "
    ],
    'O': [
        "   ***   ",
        "  *   *  ",
        " *     * ",
        " *     * ",
        " *     * ",
        "  *   *  ",
        "   ***   "
    ],
    'T': [
        " ******* ",
        "    *    ",
        "    *    ",
        "    *    ",
        "    *    ",
        "    *    ",
        "    *    "
    ],
    'Y': [
        " *     * ",
        "  *   *  ",
        "   * *   ",
        "    *    ",
        "    *    ",
        "    *    ",
        "    *    "
    ]
}

def main():
    while True:
        word = input("Enter a valid word (or 'END' to stop): ").upper()
        
        if word == "END":
            break
        
        if not is_valid_word(word):
            print("Error: Invalid input. Please enter a valid word.")
            continue
        
        # 询问缩放尺寸
        try:
            size = int(input("Enter desired character size (e.g., 5,7,8): "))
            if size < 1:
                raise ValueError
        except ValueError:
            print("Invalid size, using default 7x7.")
            size =7
        
        # 生成对应尺寸的字符点阵
        char_patterns = {char: scale_pattern(pattern, size) for char, pattern in base_char_patterns.items()}
        
        # 按行打印所有字符
        for row_idx in range(size):
            line = ""
            for letter in word:
                line += char_patterns[letter][row_idx] + "  "
            print(line)
    
if __name__ == "__main__":
    main()

代码说明

  • base_char_patterns:存储基础7x7的字符点阵,每行单独定义字符串,符合禁止多行字符串的要求
  • scale_pattern:通过比例映射将原点阵缩放到目标尺寸,保证字符形态一致
  • 水平打印逻辑:遍历每一行索引,拼接所有字符的对应行,实现横向排列
  • 输入验证:包含字符有效性和尺寸合法性检查

内容的提问来源于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 14:05:29