Python中TypeError: 'int' object is not subscriptable错误解决咨询
修复信用卡号隐藏函数的整数下标错误
原代码:
def get_hidden_card(credit_number, star_count=4): short_credit_number = str(credit_number[12:16]) return str('*' * star_count + short_credit_number) print(get_hidden_card(2034399002125581))
运行报错:
Traceback (most recent call last): File "C:\Users\Ivan\PycharmProjects\pythonProject\main.py", line 10, in <module> print(get_hidden_card(2034399002125581)) File "C:\Users\Ivan\PycharmProjects\pythonProject\main.py", line 4, in get_hidden_card short_credit_number = str(credit_number[12:16]) TypeError: 'int' object is not subscriptable
修复方案
核心问题是整数类型不支持下标切片操作,必须先把整数转为字符串再处理,同时优化切片逻辑让代码更健壮:
def get_hidden_card(credit_number, star_count=4): # 先将整数转为字符串 credit_str = str(credit_number) # 截取卡号最后4位,用[-4:]适配不同长度的卡号(比如15位/16位) last_four_digits = credit_str[-4:] # 直接拼接星号与最后四位,返回字符串结果 return '*' * star_count + last_four_digits print(get_hidden_card(2034399002125581))
关键修改说明:
- 先转换类型再切片:把
credit_number转为字符串后,才能正常使用下标操作 - 切片逻辑优化:
[-4:]可以兼容不同长度的信用卡号,比固定的[12:16]适用性更强 - 简化返回值:星号与字符串拼接后本身就是字符串类型,无需额外套
str()
内容的提问来源于stack exchange,提问作者kont
相关产品推荐
相关产品推荐

