Python代码遍历数组时循环变量[i]无法识别的问题如何解决?
问题修复方案
错误原因
- 你编写的for循环存在逻辑错误:执行
for i in access[courtindexacc][i]时,变量i还未完成初始化赋值,Python解释器无法识别未定义的索引变量,因此抛出变量未识别报错。 - 你对列表遍历的逻辑理解有误:如果要通过下标
i同步获取对应位置的预约状态和时间,需要先遍历所有合法下标,而不是直接在in后接未定义索引的列表片段。
修复后的完整代码
times = { "times1": ["8","9","10","11","12","13","14","15","16","17"], "times2": ["8","9","10","11","12","13","14","15","16","17"], "times3": ["8","9","10","11","12","13","14","15","16","17"], "times4": ["8","9","10","11","12","13","14","15","16","17"], "times5": ["8","9","10","11","12","13","14","15","16","17"], "times6": ["8","9","10","11","12","13","14","15","16","17"], "times7": ["8","9","10","11","12","13","14","15","16","17"], "times8": ["8","9","10","11","12","13","14","15","16","17"] } access = { "access1": [True,False,False,True,True,False,False,False,True,True], "access2": [False,False,True,True,False,False,False,False,True,True], "access3": [False,False,False,True,True,False,True,False,True,False], "access4": [True,True,False,True,True,True,False,False,True,True], "access5": [True,False,False,True,True,False,False,False,True,False], "access6": [True,False,False,True,True,False,True,True,False,True], "access7": [True,True,True,True,True,False,False,False,True,True], "access8": [True,False,True,True,False,False,False,False,True,True] } askcourt = input("你想预约哪个场地?(1-8) ") courtindextime = "times" + askcourt courtindexacc = "access" + askcourt # 核心修改:遍历列表长度对应的下标,i会从0依次赋值到列表长度-1 for i in range(len(access[courtindexacc])): if access[courtindexacc][i]: print("场地 %s %s点可预约" %(askcourt, times[courtindextime][i]))
优化写法
使用enumerate可以直接同时获取下标和对应的预约状态,代码更简洁:
for i, is_available in enumerate(access[courtindexacc]): if is_available: print(f"场地 {askcourt} {times[courtindextime][i]}点可预约")
内容的提问来源于stack exchange,提问作者Raphael Costa
相关产品推荐
相关产品推荐

