使用字符串ABCDEFGHIJKLM
我试图实现以下目标:
ABCDEFGHIJKLM
0123456789012
第一个if
语句有效,但else
语句中断:
position.append(str(x[1]))
TypeError:'int'
对象不可订阅
这是代码:
number = []
count = 0
for x in range(string):
if count <= 9:
number.append(str(x))
else:
number.append(str(x[1]))
count = count+1
number = ''.join(map(str, number))
print(number)
我该如何解决这个问题?
答案 0 :(得分:1)
执行操作
str(x[1])
您尝试在整数x上执行子字符串,然后将其转换为字符串。
字符串是字符的容器,子字符串函数允许我们从该集合中检索一个或多个字符。
整数不是其他对象的容器,因此不被归类为可订阅对象(它不实现__getitem__()
方法)。我们无法从中检索特定字符。
解决方案是颠倒您的操作顺序 - 将整数转换为字符串 first ,然后在其上执行子字符串以检索第二个字符。
str(x)[1]
我们可以通过仅使用最后一个字符来改善这一点,这可以容纳大于99的数字:
str(x)[-1]
答案 1 :(得分:0)
您可以使用此 hack :int(str(s)[1])
或(str(s)[1])
,具体取决于您的意愿:
>>> s = 12
>>> int(str(s)[1])
2
>>> (str(s)[1])
'2'
答案 2 :(得分:0)
或者你可以这样做并摆脱if else
语句......并且可以用于任何长度的字符串。
number = []
for x in range(string):
number.append(str(x % 10))
number = ''.join(map(str, number))
print(number)