-1
def make_converter(match, replacement):        
    d={match : replacement}         
    return d

def apply_converter(converter, string):    
    c1= "".join(str(x) for x in converter.keys())
    c2= "".join(str(x) for x in converter.values())
    print c1,c2
    c3=string.find(c1)
    if c3==-1:
        return string
    string=string.replace(c1,c2,1)
    apply_converter(converter,string)

# For example,

c1 = make_converter('aa', 'a')
print apply_converter(c1, 'aaaa')
#>>> a

c = make_converter('aba', 'b')
print apply_converter(c, 'aaaaaabaaaaa')
#>>> ab
4

2 に答える 2

1

再帰の結果を返していません。string一致するものが見つからない場合、関数は入力を返します。それ以外の場合は、何も返しません。

あなたが欲しい:

return apply_converter(converter, string)
于 2013-01-26T10:21:03.713 に答える
0

結果を返さないこととは別に、私は他のいくつかのクリーンアップを行いました:

def make_converter(match, replacement):        
    return (match, replacement)

def apply_converter(converter, string):    
    old, new = converter
    replaced = string.replace(old, new, 1)
    while replaced != string:
        string = replaced
        replaced = string.replace(old, new, 1)
    return string
于 2013-01-26T10:25:15.943 に答える