我想取一个字符串和循环的值,要求用户在每次循环迭代期间选择单个字符替换。我想保留用户对字符串所做的更改,然后进行额外的替换,这也将保留,直到用户选择结束循环。
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
我改变了一点你的代码。如果您需要任何澄清知道
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