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

int类型不支持索引错误:16位卡号偶位乘2实现问题

解决'int' does not support indexing错误及实现偶位数字乘2需求

错误原因

你将处理后的卡号转为整数类型后,尝试用cardNumber[i]索引访问单个数字,但整数不支持索引操作,这就是触发'int' does not support indexing错误的直接原因。

解决方案

要处理单个数字,需将卡号保持为字符串(或转为字符列表),因为字符串/列表支持索引访问每个字符,处理后再按需转换类型。

修正后的代码

cardNumber = input("Enter a 16-digit card number:")
# 去除空格,保留字符串类型
card_str = cardNumber.replace(" ", "")
# 转为列表方便修改(字符串不可变,无法直接修改单个字符)
card_list = list(card_str)

# 处理索引0、2、4...的位置(对应从左数第1、3、5...位)
# 若需处理从左数第2、4、6...位,改为range(1, 16, 2)即可
for i in range(0, 16, 2):
    # 字符转整数计算,结果转回字符串存回列表
    digit = int(card_list[i])
    card_list[i] = str(digit * 2)

# 合并为字符串输出
processed_card = ''.join(card_list)
print("处理后的卡号:", processed_card)
# 如需整数形式,可再转换:
# processed_card_int = int(processed_card)
# print(processed_card_int)

关键说明

  • 字符串是不可变类型,直接修改card_str[i]会报错,因此转为列表操作更灵活
  • 每个字符需先转为整数才能执行乘法运算,运算结果要转回字符串才能存入列表
  • 偶位的定义需明确:代码中默认处理的是索引为偶数的位置(从0开始计数),若你的需求是“位置编号为偶数”(比如第2、4位),调整循环的range参数即可

内容的提问来源于stack exchange,提问作者Xavi Lopez Ponte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:25:22