Python报错Expected type 'SupportsIndex', got 'str' instead问题排查
报错原因分析
报错提示:
Expected type 'SupportsIndex', got 'str' instead
含义:代码中需要传入支持索引的整数类型参数的位置,实际传入了字符串类型的值
- 原代码错误地对月份列表执行了
str()类型转换,导致变量n是字符串类型 range()函数仅接受整数作为入参,用来指定循环的起止/步长,无法识别字符串参数,因此触发类型报错
修复方案
根据常见的开发需求,提供3种可用的修改方案:
- 方案1:直接遍历月份列表,适用于仅需要获取每个月份值的场景
import random month_list = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"] for month in month_list: # 此处补充后续业务逻辑 pass
- 方案2:用
enumerate同时遍历索引和月份值,适用于需要用到索引编号的场景
import random month_list = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"] for index, month in enumerate(month_list): # 此处补充后续业务逻辑 pass
- 方案3:保留
range写法,先取列表长度作为入参,适用于必须按索引访问的特殊场景
import random month_list = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"] n = len(month_list) for index in range(n): current_month = month_list[index] # 此处补充后续业务逻辑 pass
内容的提问来源于stack exchange,提问作者user17206558
相关产品推荐
相关产品推荐

