0

特定の単語が元の文字列に現れるのと同じ回数入力を受け取り、それを入力された各単語に置き換えるように取得しようとしています。

def replace_parts_of_speech (replaced, part_of_speech):
    '''Finds and replaces parts of speech with words '''
    new_line=''

    for i in range (replaced.count(part_of_speech)):
        new=input('Enter '+ part_of_speech +':') 
        new_line = replaced.replace(part_of_speech,new,1)


    return new_line
4

1 に答える 1

1

問題は、ループを通過するたびに、まったく新しい を作成new_lineし、前のものを無視しnew_lineて元の に戻ることreplacedです。そのため、ループが完了すると、最後の置換のみが表示されます。

for i in range (replaced.count(part_of_speech)):
    new=input('Enter '+ part_of_speech +':') 
    new_line = replaced.replace(part_of_speech,new,1)

したがって、2 番目の置換は最初の置換を無視します。

あなたがしたいことはこれです:

new_line = replaced
for i in range (replaced.count(part_of_speech)):
    new=input('Enter '+ part_of_speech +':') 
    new_line = new_line.replace(part_of_speech,new,1)

同じ問題の単純化された例は、理解しやすいかもしれません:

start = 0
current = 0
for i in range(5):
    current = start + i
print(current)

これは単に印刷されます4。でも今:

start = 0
current = start
for i in range(5):
    current = current + i
print(current)

これは印刷されます10

于 2013-10-31T23:25:01.883 に答える