我试图打印出字符串中给定子字符串的位置,但在第 18 行我一直收到错误
Traceback (most recent call last):
File "prog.py", line 18, in <module>
TypeError: 'int' object has no attribute '__getitem__'
我不知道为什么会这样,因为我是 python 的新手。但无论如何,这是我的程序:
sentence = "one two three one four one"
word = "one"
tracked = ()
n = 0
p = 0
for c in sentence:
p += 1
if n == 0 and c == word[n]:
n += 1
tracked = (p)
elif n == len(word) and c == word[n]:
print(tracked[1], tracked[2])
tracked = ()
n = 0
elif c == word[n]:
n += 1
tracked = (tracked[1], p)
else:
tracked = ()
n = 0
最佳答案
tracked = (p)
是一个整数,不是元组。括号不一定创建元组,因为它们也用于表达式中的运算符优先级。在这种情况下,它只是将其作为表达式进行评估,因此 (p)
被评估为 p
。如果你想让它成为一个元组,你需要添加一个逗号 (p,)
使其成为一个元组。
尽管在您的情况下,您尝试调用 tracked[1]、tracked[2]
,但它们都不适用于单个项目元组。目前还不清楚您要做什么,但元组显然是不可变的(意味着它们不会更改,不能附加到等等),而且列表似乎更可能是您需要的。
关于Python 认为我的元组是一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735091/