2017-03-27 10 views
2

だから私は再帰で働いている、再帰を使用して文字列内の特定の部分を選択する方法は?

問題がある:

" Good(43) Morning"

私はこのようなかっこ内のすべての情報を印刷するために再帰を使用する必要があります。"(43)"

私のコード今のところis:

def extractor(myString): 
    if len(myString) == 0: 
     return "" 



    if myString[0] == "(": 
     return myString[0] 
    if myString[0] == ")": 
     return myString[:] 
    else: 
     return extractor(myString[1:]) 

括弧しか得られません。どうすれば変更できますか?

答えて

1

あなたはほとんどそこにいる:あなたが興味を持っている

def extractor(myString): 
    if not myString: # empty strings are falsy 
     return "" 
    if myString[0] == "(": 
     if myString[-1] == ")": # success 
      return myString 
     else: # only starts with (, trim from the end 
      return extractor(myString[:-1]) 
    else: # doesn't start with (, trim from beginning 
     return extractor(myString[1:]) 
+0

仕事だが、私は、LEN() –

+0

'str.startswith'と' STR以外の機能で任意のビルドを使用することはできません.endswith'は関数ではなくメソッドですが、十分に公正で、私はそれを変更します。 – L3viathan

+0

ありがとうございました –

0

場合は、ここにあなたのコードの反復バージョンがあります。 :)

def iterative_extractor(mystring): 
    if not mystring: 
     return "" 

    while mystring[0] != "(" or mystring[-1] != ")": 
     if mystring[0] != "(": 
      mystring = mystring[1:] 
     else: 
      mystring = mystring[:-1] 
    return mystring 

OR:

def iterative_extractor(mystring): 
    if not mystring: 
     return "" 

    while mystring[0] != "(": 
     mystring = mystring[1:] 

    while mystring[-1] != ")": 
     mystring = mystring[:-1] 

    return mystring 

出力:

mystring = "Lol (234) mate!" 
print(iterative_extractor(mystring)) 
>>> "(234)" 
関連する問題