You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Type error: For循环中整数与列表比较报错的解决方法

错误根因

运行代码触发整数和列表比较的TypeError,是两个逻辑错误共同导致的:

  • 遍历passenger_time.values()得到的元素是两个完整列表:分别是存储所有乘客编号的passenger列表、存储所有对应耗时的timelist列表,直接用整数15、40和整个列表做大小比较,不符合Python语法规则,必然触发类型错误。
  • 循环内使用了从未定义的变量y,即便比较逻辑修复,运行到格式化输出步骤也会触发NameError。
修正方案

你的核心需求是将乘客编号和对应的耗时一一匹配,判断耗时是否落在(15,40)区间内,输出对应乘客的核验结果,直接用zip()将两个等长列表打包配对遍历即可,逻辑最简洁:

from random import randint

passenger = list(range(1, 51))
timelist = []
for i in range(1, 51):
    n = randint(15, 51)
    timelist.append(n)

# 同步遍历配对的乘客ID、对应耗时
for p_id, cost_time in zip(passenger, timelist):
    if 15 < cost_time < 40:
        print(f'passenger {p_id} accepted')
    else:
        print(f'passenger {p_id} not accepted')

如果需要保留你定义的passenger_time字典结构,也可以通过索引同步取两个列表的配对元素实现:

from random import randint

passenger = list(range(1, 51))
timelist = []
for i in range(1, 51):
    n = randint(15, 51)
    timelist.append(n)
    
passenger_time = {'passenger': passenger, 'timelist': timelist}

for idx in range(len(passenger_time['passenger'])):
    p_id = passenger_time['passenger'][idx]
    cost_time = passenger_time['timelist'][idx]
    if 15 < cost_time < 40:
        print('passenger {} accepted'.format(p_id))
    else:
        print('passenger {} not accepted'.format(p_id))

补充说明:不建议用from random import *的导入方式,会污染当前命名空间,直接导入需要用到的randint方法即可。

内容的提问来源于stack exchange,提问作者Han J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:42:13