1

2 つの文字列が与えられた場合、どちらかの文字列がもう一方の文字列の最後にある場合、大文字と小文字の違いを無視して True を返します (つまり、計算で「大文字と小文字を区別する」べきではありません)。

例/テスト:

>>> end_other('Hiabc', 'abc') 
True 
>>> end_other('AbC', 'HiaBc') 
True 
>>> end_other('abc', 'abXabc') 
True

私のコード:

def end_other(s1, s2):
    
    s1 = s1.upper()
    s2 = s2.upper()
    
    if s1[2:6] == s2:
        return True
    elif s2[2:6] == s1:
        return True
    elif s2 == s1:
        return True    
    else:
        return False

私が期待することは間違っています。

(注: これはCodingBatのコード プラクティスです。

4

2 に答える 2

7

組み込み関数を使用できない理由はありますか?

def end_other(s1, s2):
    s1 = s1.upper()
    s2 = s2.upper()
    return s1.endswith(s2) or s2.endswith(s1)

任意のスライスを含むコードはあまり意味がありません。

于 2012-11-17T19:15:14.570 に答える
0

を使用して、このようなものstr.rfind()

In [114]: def end(s1,s2):
    s1=s1.lower()
    s2=s2.lower()
    if s1 in s2 and s2.rfind(s1)+len(s1) == len(s2):
        return True
    elif  s2 in s1 and s1.rfind(s2)+len(s2) == len(s1):
        return True 
    return False
   .....: 

In [115]: end('Hiabc','abc')
Out[115]: True

In [116]: end('abC','HiaBc')
Out[116]: True

In [117]: end('abc','abxabc')
Out[117]: True

In [118]: end('abc','bc')
Out[118]: True

In [119]: end('ab','ab12')
Out[119]: False
于 2012-11-17T19:21:06.607 に答える