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

问题描述 投票:1回答:1

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

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) ')
python-3.x string immutability str-replace
1个回答
0
投票

我想你应该这样做:

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

我改变了一点你的代码。如果您需要任何澄清知道

UPDATE

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问题,我改为输入更快的“调试”。对不起,但我没有正确理解问题:P

© www.soinside.com 2019 - 2024. All rights reserved.