我想找到" a"的所有索引。我的字符串的项目,但它只打印第一个。这个程序有什么问题:
def str_lookup_reverse(s, c):
for index in range(len(s)-1):
if s[index] == c:
print(index)
s = "parisa"
str_lookup_reverse(s, "a")
答案 0 :(得分:4)
您是否尝试过这样:
for i, letter in enumerate(s):
if letter == c:
print(i)
答案 1 :(得分:2)
您正在使用http://localhost:18223/Login/Login
,它不会遍历字符串的整个长度。您应该使用len(s)-1
:
len(s)
为了说明问题,请比较:
def str_lookup_reverse(s, c):
for index in range(len(s)):
if s[index] == c:
print(index)
s = "parisa"
str_lookup_reverse(s, "a")
text='parisa'
for i in range(len(text)-1):
print("%s, %s") % (i, text[i])
使用:
0, p
1, a
2, r
3, i
4, s
for i in range(len(text)):
print("%s, %s") % (i, text[i])
答案 2 :(得分:2)
你正在删除字符串的长度......所以你要删除最后一个字符串#=' paris'
def str_lookup_reverse(s, c):
for index in range(len(s)-1):
if s[index] == c:
print(index)
s = "parisa"
str_lookup_reverse(s, "a")
这将解决您的问题:
def str_lookup_reverse(s, c):
for index in range(len(s)):
if s[index] == c:
print(index)
s = "parisa"
str_lookup_reverse(s, "a")
答案 3 :(得分:1)
非常接近。你的循环过早结束,你需要循环遍历整个字符串的索引:
for index in range(len(s))
而不是:
for index in range(len(s)-1)
循环除了最后一个字符之外的所有字符,其中出现第二个"a"
。这意味着您的第二个"a"
永远无法到达。
此外,更加pythonic的方式是使用enumerate()
:
def str_lookup_reverse(s, c):
for i, e in enumerate(s):
if e == c:
print(i)
s = "parisa"
str_lookup_reverse(s, "a")
哪个也输出你想要的东西:
1
5
答案 4 :(得分:1)
正如其他人提到的for index in range(len(s)-1):
问题,需要for index in range(len(s)):
。
现在,这是enumerate
的方法:
[i for(i, v) in enumerate(s) if v == 'a']
e.g。
In [54]: s = "parisa"
In [55]: [i for(i, v) in enumerate(s) if v == 'a']
Out[55]: [1, 5]
作为一项功能:
def findidx(string, char):
return [i for(i, v) in enumerate(string) if v == char]
e.g。
In [56]: def findidx(string, char):
....: return [i for(i, v) in enumerate(string) if v == char]
....:
In [57]: findidx(s, "a")
Out[57]: [1, 5]
答案 5 :(得分:1)
您可以通过index
包裹String(s)
来捕获enumerate()
,如下所示。
def str_lookup_reverse(s, c):
index_list = []
for index, char in enumerate(s):
if char == c:
index_list.append(index)
# print(index)
return index_list
s = "parisa"
index_list = str_lookup_reverse(s, "a")
print(index_list) ## PRINTS: [1, 5]
答案 6 :(得分:0)
您也可以浏览这样的字符 -
def str_lookup_reverse(s, c):
ind = 0
for eachChar in s:
ind += 1
if eachChar == c:
print(ind)
s = "parisa"
str_lookup_reverse(s, "a")