Как сохранить новое значение строки во время цикла, постоянно меняя строку до конца цикла? - PullRequest
1 голос
/ 05 апреля 2019

Я хочу взять значение строки и цикла, попросив пользователя выбрать замену одного символа во время каждой итерации цикла.Я хочу сохранить изменения, внесенные пользователем в строку, а затем выполнить дополнительную замену, которая также сохраняется до тех пор, пока пользователь не решит завершить цикл.

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) ')

1 Ответ

0 голосов
/ 05 апреля 2019

Я думаю, вы должны сделать так:

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, я перешел на ввод для более быстрой «отладки».Извините, но я не понял, прежде чем проблема правильно: P

...