Python报错TypeError: 'int' object is not subscriptable原因咨询
错误复现
对应出错代码如下,运行后输入两位数27时,预期输出数位相加结果9,实际抛出TypeError: 'int' object is not subscriptable错误:
two_digit_number = input("Type a two digit number: ") new_two_digit_number = int(two_digit_number) print(new_two_digit_number[0] + new_two_digit_number[1])
错误原因
这个报错的核心是对不支持下标访问的对象使用了下标取值操作:
- 代码中
[0]、[1]属于下标索引语法,仅能作用在字符串、列表、元组这类由多个元素按顺序组成的序列类型对象上,用来按位置取出对应位置的元素。 int(整数)类型是单个数值实体,不是多个元素组成的序列,不存在“第0位”“第1位”的位置属性,本身不支持下标访问操作。
结合代码执行逻辑具体看:
input()函数获取的用户输入默认是字符串类型,输入27时,two_digit_number存储的是字符串值"27",这时候对它做下标访问可以正常拿到第一位字符"2"、第二位字符"7"。- 通过
int(two_digit_number)将字符串转换为整数类型的数值27后,new_two_digit_number存储的是数学意义上的整数27,不再是两个字符拼接成的序列,此时再对它用下标取数位就会触发该类型错误。
内容的提问来源于stack exchange,提问作者vitomoon
相关产品推荐
相关产品推荐

