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
相关产品推荐
相关产品推荐

