如何在循环期间保留新的字符串值,不断更改字符串直到循环结束?

How do I retain a new strings value during a loop, continuously changing the string until the loop ends?

我想获取字符串的值并循环,要求用户在每次循环迭代期间选择单个字符替换。我想保留用户对字符串所做的更改,然后进行额外的替换,该替换也会保留到用户选择结束循环为止。

newtext = ''
ciphertext = 'qsv el arm aepm sh tzz ussx pmb as dspm as arm tex sh armel dsvbaci.'
answer = 'y'

for letter in ciphertext:
    while answer is 'y':
        print(ciphertext)
        cl = input('Which letter would you like to replace? ')
        rl = input('What is the new letter? ')
        newtext += ciphertext.replace(cl,rl)
        print(newtext)
        answer = input('Would you like to continue? (y/n) ')

我认为你应该这样做:

original = 'qsv el arm aepm sh tzz ussx pmb as dspm as arm tex sh armel dsvbaci.'
ciphertext = 'qsv el arm aepm sh tzz ussx pmb as dspm as arm tex sh armel dsvbaci.'
newtext = ''
answer = 'y'


while answer is 'y':
    print(ciphertext)
    cl = raw_input('Which letter would you like to replace? ')
    rl = raw_input('What is the new letter? ')
    newtext = ciphertext.replace(cl,rl)
    print(newtext)
    answer = raw_input('Would you like to continue? (y/n) ')
    if(answer == "y"):
        ciphertext = newtext
    else:
        ciphertext = original

我稍微更改了您的代码。如果您需要任何说明,请告诉我

更新

original = 'qsv el arm aepm sh tzz ussx pmb as dspm as arm tex sh armel dsvbaci.'
plaintext = 'qsv el arm aepm sh tzz ussx pmb as dspm as arm tex sh armel dsvbaci.'
answer = 'y'
replacements = {}


while answer is not 'q':
    print(plaintext)
    cl = input('Which letter would you like to replace? ')
    rl = input('What is the new letter? ')
    x = [i for i, ltr in enumerate(original) if ltr == cl]
    replacements[cl] = x
    plaintext = list(plaintext)
    for i in replacements[cl]:
        plaintext[i] = rl
    plaintext = "".join(plaintext)
    print plaintext
    answer = input('Would you like to continue? (y/n) ')
    if(answer == "n"):
        plaintext = original

这个应该不错!让我知道。 我知道 raw_input 问题,我改为输入更快 "debugging"。 不好意思之前没理解正确问题:P