0

指定された文字列で、特定の文字に最後に遭遇したときの位置を出力する必要があります。どうすればいいですか?すなわち。この文字列 "alahambra" について、文字 "a" が最後に出現した時刻を見つける必要があるため、結果は 8 になります。

私はこのコードを試しましたが、常にうまくいくとは限りません:

def find_last(search, target):
    first=search.find(search)
    last=len(search)
    result=search.find(target,last-1)
    return result   

例:

print find_last('aaaaa', 'aa')

3 を出力するはずなのに、代わりに -1 を出力します。それは間違っています!

print find_last('aaaa', 'b')

-1 を出力する必要があり、-1 を出力します。これは正しいです。

print find_last("111111111", "1")

8 を出力する必要があり、8 が出力されます。これは正しいです。

print find_last("222222222", "")

9 と表示されるはずなのに、代わりに 8 と表示されます。これは間違っています。

print find_last("", "3")

-1 を出力する必要があり、-1 を出力します。これは正しいです。

print find_last("", "")

0 を出力する必要があり、0 を出力します。これは正しいです。

コードの何が問題で、どのように変更すればよいですか? ありがとう!

4

3 に答える 3

6
>>> "alahambra".rindex('a')
8
>>> 

部分文字列が見つからない場合、これによりエラーが発生します。この場合、 Userfindは -1 を返します。

>>> "alahambra".rfind('a')
8
>>> 
>>> ''.rfind('b')
-1
>>> 
于 2013-07-20T19:04:14.197 に答える
1

rindexまたはrfind- http://docs.python.org/2/library/string.htmlを使用できます

"alahambra".rfind('a')

それらの違いはrindex、部分文字列が見つからない場合にエラーが発生し、rfind-1 が返されることです。

于 2013-07-20T19:06:14.813 に答える
0

コードは次のようになります。

>>> def find_last(A,q):
...     k = -1
...     while k < len(A):
...             i = A.find(q,k+1)
...             if i == -1: return k
...             else: k = i
...     return k
...
>>> find_last('aaaaa','aa')
3
>>> find_last("222222222", "")
9
>>> find_last("", "")
0
>>> find_last("", "3")
-1
于 2013-07-20T19:23:52.157 に答える