Python列表多值匹配输入120报错,期望输出Progress的问题排查
解决Python列表匹配时的TypeError及逻辑错误问题
问题根源
- TypeError报错原因:代码中
elif Pass_Input in Pass[0]这一行,Pass[0]是整数0,而in运算符仅能作用于可迭代对象(如列表、字符串),整数不属于可迭代对象,因此触发类型错误。 - 逻辑错误导致预期输出失效:输入
120时,Pass[5:6]是左闭右开切片,仅包含索引5的元素100,120不在该切片范围内,因此无法触发Progress输出分支。
修正后的代码
以下是修正了错误并符合预期逻辑的代码:
Pass = [0, 20, 40, 60, 80, 100, 120] while True: Pass_Input = int(input("Enter : ")) # 匹配100和120,对应原列表索引5、6的元素 if Pass_Input in Pass[5:7]: print("Progress") # 若输入0需要优先触发Exclude,需将此条件移至此处之前 elif Pass_Input in Pass[0:2]: print("Progress Module Trailer") # 直接判断单个值相等,而非用in操作符 elif Pass_Input == Pass[0]: print("Exclude")
关键修正点
- 调整切片范围:将
Pass[5:6]改为Pass[5:7],确保包含120;也可直接写Pass_Input in [100, 120],逻辑更直观。 - 修复类型错误:将
in Pass[0]改为== Pass[0],直接判断输入值与目标整数相等。 - 可选逻辑调整:如果输入
0时预期输出Exclude而非Progress Module Trailer,需要将elif Pass_Input == Pass[0]这一分支移至elif Pass_Input in Pass[0:2]之前,避免被提前匹配。
测试验证
输入120时,代码会进入第一个条件分支,输出Progress,符合预期要求。
内容的提问来源于stack exchange,提问作者Anjana Dep
相关产品推荐
相关产品推荐

