所以我想做这样的事#include
int main(void)
{
char string[] = "bobgetbob";
int i = 0, count = 0;
for(i; i < 10; ++i)
{
if(string[i] == 'b' && string[i+1] == 'o' && string[i+2] == 'b')
count++;
}
printf("Number of 'bobs' is: %d\n",count);
}
但用python术语来说count = 0
s = "bobgetbob"
for i in range(0,len(s)):
if s[i] == 'b' and s[i+1] == 'o' and s[i+2] == 'b':
count += 1
print "Number of 'bobs' is: %d" % count
每当我得到一个字符串,正好以“b”结尾,或者倒数第二个字符串是“b”,后跟“o”,我就会得到一个索引超出范围的错误。现在在c中这不是问题,因为它仍然会执行与垃圾值的比较,我假设垃圾值与c一起工作
如何在python中进行此操作而不超出范围?
我能像这样遍历字符串本身吗?for letter in s:
#compare stuff
如何使用上述方法比较字符串中的特定索引?如果我想用letter == 'b' and letter + 1 == 'o'
这在python中是无效的语法,我的问题是我在用c语言思考,我不完全确定是否有正确的语法来处理这种情况。
我知道像这样切绳子for i in range(0,len(s)):
if s[i:i+3] == "bob":
count += 1
这解决了这个特定的问题,但是,我觉得使用特定的索引位置来比较字符是一个非常强大的工具。如果没有像上面的第一个python示例那样出现一些破坏它的情况,我就不知道如何在python中正确地做到这一点。