Python如何检查元组列表中的指定元素并修复错误输出问题
Python判断元组列表指定元素存在性的代码修改方案
错误原因
你当前代码的核心问题是把单条元组的匹配判断结果当成了全局的存在性结果:每遍历到一个不匹配的元组就立刻打印未找到提示,没有等完整遍历整个列表确认不存在后再输出,才会出现匹配到第二个元素时,第一个元素不匹配已经先报错的问题。
修改方案
你可以通过标记位或者Python特有的for-else语法解决该问题,以下是两种实现方式:
方式1:标记位写法(兼容性更强,逻辑易理解)
horselist = [(1,"horse A","owner of A"), (2,"horse B", "owner of B")] horsename_check = input("输入马的名称: ") # 定义标记位,默认未找到 found_flag = False for horse in horselist: if horse[1] == horsename_check: found_flag = True treatment = input("输入治疗方案: ") print("{0} 已找到,治疗方案为 {1}".format(horsename_check,treatment)) # 找到后直接跳出循环,无需继续遍历 break # 遍历完全部元素后,只有标记位仍为False时才打印未找到提示 if not found_flag: print("{0} 的档案不在数据库中。(添加用药记录前必须先录入马的档案)".format(horsename_check))
方式2:for-else语法写法(更简洁)
Python中for循环附带的else代码块,只有当循环正常执行结束、没有被break打断时才会运行,刚好适配该场景:
horselist = [(1,"horse A","owner of A"), (2,"horse B", "owner of B")] horsename_check = input("输入马的名称: ") for horse in horselist: if horse[1] == horsename_check: treatment = input("输入治疗方案: ") print("{0} 已找到,治疗方案为 {1}".format(horsename_check,treatment)) break else: print("{0} 的档案不在数据库中。(添加用药记录前必须先录入马的档案)".format(horsename_check))
内容的提问来源于stack exchange,提问作者Bảo Vương
相关产品推荐
相关产品推荐

