如何用Python实现输入数字匹配数组指定字符串的校验功能
实现数字输入转颜色并匹配验证
核心思路是建立数字与颜色代码、名称的统一映射,通过该映射完成输入转换与匹配检查,同时修正原代码中颜色代码与单词可能不对应的问题。
修改后的完整代码
import random from colorama import * # 初始化colorama,确保Windows系统颜色输出正常 init(autoreset=True) # 建立数字→(颜色代码, 颜色名称)的映射字典 color_map = { "1": (Fore.RED, "Red"), "2": (Fore.BLUE, "Blue"), "3": (Fore.LIGHTBLUE_EX, "Light Blue"), "4": (Fore.GREEN, "Green"), "5": (Fore.CYAN, "Cyan"), "6": (Fore.YELLOW, "Yellow"), "7": (Fore.MAGENTA, "Magenta"), } # 打印随机颜色的提示语 start_colors = [item[0] for item in color_map.values()] print(random.choice(start_colors) + "Type the number, not the color!\n") # 遍历映射字典打印数字-颜色对应表 for num, (color_code, color_name) in color_map.items(): print(f"{color_code}{num} = {color_name}") # 随机生成目标颜色(确保颜色代码与名称对应) target_color_code, target_color_name = random.choice(list(color_map.values())) print(f"\n{target_color_code}{target_color_name}") # 处理用户输入与匹配检查 user_input = input("\n请输入对应数字:").strip() if user_input not in color_map: print(Fore.RED + "输入无效,请输入1-7之间的数字!") else: _, user_selected_color = color_map[user_input] if user_selected_color == target_color_name: print(Fore.GREEN + "回答正确!") else: print(Fore.RED + f"回答错误,正确答案是{target_color_name}!")
关键改进点
- 统一映射管理:用字典集中存储数字、颜色代码、颜色名称的对应关系,避免原代码中手动打印选项与实际逻辑脱节的问题,后续扩展颜色更高效。
- 颜色与单词匹配:随机生成目标时直接从映射中取对应的数据,确保打印的颜色代码和单词是匹配的(原代码存在颜色代码与随机单词不对应的bug)。
- 输入有效性检查:判断输入是否在合法范围内,给出明确的错误提示,提升程序健壮性。
- 匹配逻辑清晰:通过映射直接获取用户输入对应的颜色名称,与目标名称对比即可完成验证。
内容的提问来源于stack exchange,提问作者AJ8
相关产品推荐
相关产品推荐

