如何使用变量实现文本格式化并设置终端文本颜色?
需求可行性及实现方案
这个需求完全可行,通过ANSI转义序列可以轻松实现终端文本颜色的动态切换,你的代码思路没问题,只是在字符串变量嵌入的方式上有误。
原代码的问题
- 字符串中的
(colour)是字面量,不会被解析为变量值,导致颜色控制失效 - 将输入转为
float没必要,直接用int处理整数选择更合理 - 蓝色对应的ANSI代码错误:34才是蓝色,原代码中的35实际是紫色
修正后的实现代码
# 打印带样式的提问文本,末尾重置样式避免影响后续内容 print("\033[1;35m\033[1;4m What colour would you like the printed text to be?\033[0m") print(" 1. Red") print(" 2. Green") print(" 3. Blue") # 处理用户输入,增加异常捕获避免非数字输入崩溃 try: ans1 = int(input()) except ValueError: print("请输入有效的数字选项(1-3)") exit() # 根据选择设置颜色代码并输出对应颜色文本 if ans1 == 1: colour = 31 print(f"\033[1;{colour}m This text is red\033[0m") elif ans1 == 2: colour = 32 print(f"\033[1;{colour}m This text is green\033[0m") elif ans1 == 3: colour = 34 print(f"\033[1;{colour}m This text is blue\033[0m") else: print("请选择1-3之间的选项")
关键说明
- 使用f-string(
f"\033[1;{colour}m")将变量colour的值嵌入转义序列,这是Python 3.6+最简洁的字符串格式化方式 - 每次颜色输出后添加
\033[0m重置终端样式,避免后续文本继承当前颜色 - 增加输入异常处理,提升程序健壮性
内容的提问来源于stack exchange,提问作者Kian Murray
相关产品推荐
相关产品推荐

