Python实现自定义ASCII字体与彩色终端输出详解

Finn
Finn
发布时间:2026-10-14| 5人浏览过
原创

本文详细介绍如何在Python中通过代码逻辑定义并打印自定义的ASCII字符字体,涵盖从字母映射到字符串输出的完整实现。同时,文章扩展讲解了利用Windows API和ctypes模块实现终端彩色文字打印的方法,包括前景色、背景色及高亮效果的配置,为开发者提供实用的终端交互美化方案。

Python自定义ASCII字体实现原理

首先,通过定义26个英文字母对应的ASCII字符图案,构建用户所需的自定义字体库。


name = "RUNOOB"
 
# 接收用户输入
# name = input("输入你的名字: \n\n") 
 
lngth = len(name) 
l = "" 
 
for x in range(0, lngth): 
  c = name[x] 
  c = c.upper() 
   
  if (c == "A"): 
    print("..######..\n..#....#..\n..######..", end = " ") 
    print("\n..#....#..\n..#....#..\n\n") 
     
  elif (c == "B"): 
    print("..######..\n..#....#..\n..#####...", end = " ") 
    print("\n..#....#..\n..######..\n\n") 
     
  elif (c == "C"): 
    print("..######..\n..#.......\n..#.......", end = " ") 
    print("\n..#.......\n..######..\n\n") 
     
  elif (c == "D"): 
    print("..#####...\n..#....#..\n..#....#..", end = " ") 
    print("\n..#....#..\n..#####...\n\n") 
     
  elif (c == "E"): 
    print("..######..\n..#.......\n..#####...", end = " ") 
    print("\n..#.......\n..######..\n\n") 
     
  elif (c == "F"): 
    print("..######..\n..#.......\n..#####...", end = " ") 
    print("\n..#.......\n..#.......\n\n") 
     
  elif (c == "G"): 
    print("..######..\n..#.......\n..#.####..", end = " ") 
    print("\n..#....#..\n..#####...\n\n") 
     
  elif (c == "H"): 
    print("..#....#..\n..#....#..\n..######..", end = " ") 
    print("\n..#....#..\n..#....#..\n\n") 
     
  elif (c == "I"): 
    print("..######..\n....##....\n....##....", end = " ") 
    print("\n....##....\n..######..\n\n") 
     
  elif (c == "J"): 
    print("..######..\n....##....\n....##....", end = " ") 
    print("\n..#.##....\n..####....\n\n") 
     
  elif (c == "K"): 
    print("..#...#...\n..#..#....\n..##......", end = " ") 
    print("\n..#..#....\n..#...#...\n\n") 
     
  elif (c == "L"): 
    print("..#.......\n..#.......\n..#.......", end = " ") 
    print("\n..#.......\n..######..\n\n") 
     
  elif (c == "M"): 
    print("..#....#..\n..##..##..\n..#.##.#..", end = " ") 
    print("\n..#....#..\n..#....#..\n\n") 
     
  elif (c == "N"): 
    print("..#....#..\n..##...#..\n..#.#..#..", end = " ") 
    print("\n..#..#.#..\n..#...##..\n\n") 
     
  elif (c == "O"): 
    print("..######..\n..#....#..\n..#....#..", end = " ") 
    print("\n..#....#..\n..######..\n\n") 
     
  elif (c == "P"): 
    print("..######..\n..#....#..\n..######..", end = " ") 
    print("\n..#.......\n..#.......\n\n") 
     
  elif (c == "Q"): 
    print("..######..\n..#....#..\n..#.#..#..", end = " ") 
    print("\n..#..#.#..\n..######..\n\n") 
     
  elif (c == "R"): 
    print("..######..\n..#....#..\n..#.##...", end = " ") 
    print("\n..#...#...\n..#....#..\n\n") 
     
  elif (c == "S"): 
    print("..######..\n..#.......\n..######..", end = " ") 
    print("\n.......#..\n..######..\n\n") 
     
  elif (c == "T"): 
    print("..######..\n....##....\n....##....", end = " ") 
    print("\n....##....\n....##....\n\n") 
     
  elif (c == "U"): 
    print("..#....#..\n..#....#..\n..#....#..", end = " ") 
    print("\n..#....#..\n..######..\n\n") 
     
  elif (c == "V"): 
    print("..#....#..\n..#....#..\n..#....#..", end = " ") 
    print("\n...#..#...\n....##....\n\n") 
     
  elif (c == "W"): 
    print("..#....#..\n..#....#..\n..#.##.#..", end = " ") 
    print("\n..##..##..\n..#....#..\n\n") 
     
  elif (c == "X"): 
    print("..#....#..\n...#..#...\n....##....", end = " ") 
    print("\n...#..#...\n..#....#..\n\n") 
     
  elif (c == "Y"): 
    print("..#....#..\n...#..#...\n....##....", end = " ") 
    print("\n....##....\n....##....\n\n") 
     
  elif (c == "Z"): 
    print("..######..\n......#...\n.....#....", end = " ") 
    print("\n....#.....\n..######..\n\n") 
     
  elif (c == " "): 
    print("..........\n..........\n..........", end = " ") 
    print("\n..........\n\n") 
     
  elif (c == "."): 
    print("----..----\n\n")

运行上述代码后,终端将显示如下输出结果:

..######..
..#....#..
..#.##...
..#...#...
..#....#..


..#....#..
..#....#..
..#....#..
..#....#..
..######..


..#....#..
..##...#..
..#.#..#..
..#..#.#..
..#...##..


..######..
..#....#..
..#....#..
..#....#..
..######..


..######..
..#....#..
..#....#..
..#....#..
..######..


..######..
..#....#..
..#####...
..#....#..
..######..

接下来进行实例扩展,介绍另一种常见的终端美化技巧。

Python终端彩色文字输出方案

在Python中实现打印彩色字体的具体方法。


#################################################################
import ctypes
STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE = -11
STD_ERROR_HANDLE = -12
FOREGROUND_BLACK = 0x0
FOREGROUND_BLUE = 0x01 # text color contains blue.
FOREGROUND_GREEN = 0x02 # text color contains green.
FOREGROUND_RED = 0x04 # text color contains red.
FOREGROUND_INTENSITY = 0x08 # text color is intensified.
BACKGROUND_BLUE = 0x10 # background color contains blue.
BACKGROUND_GREEN = 0x20 # background color contains green.
BACKGROUND_RED = 0x40 # background color contains red.
BACKGROUND_INTENSITY = 0x80 # background color is intensified.
class Color:
''''''' See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_api_reference.asp
for information on Windows APIs.'''
std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
def set_cmd_color(self, color, handle=std_out_handle):
"""(color) -> bit
Example: set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY)
"""
bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)
return bool
def reset_color(self):
self.set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)
def print_red_text(self, print_text):
self.set_cmd_color(FOREGROUND_RED | FOREGROUND_INTENSITY)
print print_text
self.reset_color()
def print_green_text(self, print_text):
self.set_cmd_color(FOREGROUND_GREEN | FOREGROUND_INTENSITY)
print print_text
self.reset_color()
def print_blue_text(self, print_text):
self.set_cmd_color(FOREGROUND_BLUE | FOREGROUND_INTENSITY)
print print_text
self.reset_color()
def print_red_text_with_blue_bg(self, print_text):
self.set_cmd_color(FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_BLUE | BACKGROUND_INTENSITY)
print print_text
self.reset_color()
clr = Color()
# clr.print_red_text('red')
# clr.print_green_text('green')
# clr.print_blue_text('blue')
# clr.print_red_text_with_blue_bg('background')
###########################################################

至此,关于Python打印自定义字体及彩色文字的实例讲解完毕。如需了解更多相关Python技术内容,建议查阅本站往期文章或继续浏览后续教程,感谢大家的支持与关注。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。