restofwaterimpのぎじゅつMemo

SIerに所属。企画から運用まで幅広くやってます。C#中心に書いてます。

最後の値の検索【メモ】

Udacityでの講義の一つ

strに文字、targetに検索したい文字を入力して、

対象の文字が最後に発見されたときの文字の位置を出力するもの。

 

自分の回答

def find_last(str,target):

    if str.find(target) == -1:

        return -1

    n = 1

    while str.find(target, n) > 0:

        n = n + 1

    return n - 1

 

模範解答

def find_last(str , target):

    last_pos = -1

   while True:

      pos = str.find(target ,  last_pos + 1)

     if pos == -1:

        return last_pos

     last_pos = pos

 

改めて見ると、自分のはマジックナンバーはあるしな・・・。

Whileもこうやって書くのはよくないね・・・。

簡易なことなのかもしれないが、実装者のスキルで見やすさが変わるのは事実だな・・。