我认为这段代码应该被打破。 字符串"abc"中"c"的位置是-1,所以它应该中断,但为什么没有呢?
string = "abc"
print(string[-1])
while True:
position = string.find("c")
if position == -1:
break
string = string[:position] + "f" + string[position+len("c"):]
print(string)
我认为这段代码应该被打破。 字符串"abc"中"c"的位置是-1,所以它应该中断,但为什么不呢?
语法mystr[-1]
为您提供了mystr
的最后一个元素,但这是索引语法的便利。当您使用find()
时,您会得到一个从零开始计数的数字,因此在本例中为 2。返回值-1
表示未找到。
您过度概括了-1
约定:它不适用于find
。如果是这样,那么在这个例子中,string.find("c")
同样可以返回 -1 或 2,因为两者都是正确的。至少可以说,这将是不方便的。
str.find
给出一个正整数索引,所以在你的例子中position = 2
。
首选解决方案是简单地测试字符串的长度:
if position == len(string) - 1:
# do something
或者,对于负索引,您可以重新定义position
:
position = string.find('c') - len(string) # -1
但是,请注意:如果未找到您的角色,str.find
返回-1
。因此,首先首选正整数是有充分理由的。
有关负索引的工作原理图,请参阅此答案。