2017-11-22 10 views
0

私はPython文字列の最後の桁を返す関数を作成しようとしています。文字列に数字がない場合、結果として-5が返されます。 これは私が得たものですが、文字列が数字でない場合、または文字列の最後の文字が数字でない場合は0を返します。 たとえば、LastNum("1*2*3*")3LastNum("****")-5を返す必要があります。ヘルプは非常に高く評価されます。Python - 最後の番号を見つける関数

def LastNum(st): 
    Result = 0 
    for i in (st): 
     if i.isdigit(): 
      Result = Result + int(max(st[-1::])) 
    return Result 
+0

べきではない 'LastNum(「** ** ")' return '-5'? –

+0

私の謝罪、タイプミス。 -5にする必要があります。 – Jason

答えて

0

私はあなたのコードの後ろに意図したロジックを理解していないが、このシンプルな1は動作するはずです:

def LastNum(st): 
    Result = -5 
    for i in st: 
     if i.isdigit(): 
      Result = int(i) 
    return Result 
3

はそれを逆から検索を開始するには良いでしょう

def lastNum(st): 
    # st[::-1] is reverse of st 
    for s in st[::-1]: 
     if s.isdigit(): 
      return int(s) 

    return -5 
+0

もちろん、さらに簡単です! – Julien

0

次のようにregexを使用することもできます。

import re 

def LastNum(st): 
    result = -5 
    regex_res = re.findall('\d+', st) 
    if regex_res: 
     result = regex_res[-1] 
    return result 

print LastNum("1*2*3*") 

出力:

3 
0

素敵なワンライナー(おそらくないが、それを行うには、最も読みやすい方法)

import re 

def LastNum(st, default=-5): 
    return int((re.findall(r'\d', st) or [default])[-1]) 
関連する問題