我可以在不删除 for 循环本身的情况下停止给定代码中的 for 循环打印不正确的次数吗?

Can I stop my for loop in the given code from printing the incorrect number of times without getting rid of the for loop itself?

codeword = input('Enter codeword : ')
codeword = codeword.lower().replace(" ", "")
for i in codeword:
    old = (chr(ord(i)))

encrypt = input('Enter text to encrypt : ')
encrypt = encrypt.lower().replace(" ", "")
for i in encrypt:
    new = (chr(ord(i)))
for i in encrypt:
    out = ord(old) + ord(new) -96 
print(chr(out))

以上是我到目前为止的完整代码。但是,如果我为代码字和加密输入 'hi',则打印的所有内容都是 'r'。有没有人能指出我的错误,因为我已经尝试了我能想到的一切,我相当确定我的错误在于 for 循环,但是如果我这样做 'for i in encrypt + codeword' 它仍然打印 'r' 。我从来不知道这么简单的事情一旦解释清楚,就能解决这么多困难。

非常感谢。

我已经编辑了代码并在下面显示了它,但我仍然在挣扎。我知道外面有很多人知道这个,但我是新手,我试图研究但我没有找到任何东西

codeword = input('Enter codeword : ')
codeword = codeword.lower().replace(" ", "")
old = codeword[-1]

encrypt = input('Enter text to encrypt : ')
encrypt = encrypt.lower().replace(" ", "")
new = encrypt[-1]
for i in new:
    print(chr(ord(old)+ ord(new)-96))

*我再次进行了进一步的编辑并制作了一个程序,它的功能足够接近我想要的,但是有一个小问题,它打印了两次,但是如果我摆脱了 for loop 我将阻止程序打印任何东西。

codeword = input('Enter codeword : ')
codeword = codeword.lower().replace(" ", "")

encrypt = input('Enter text to encrypt : ')
encrypt = encrypt.lower().replace(" ", "")

for i in codeword+encrypt:
    print(chr(ord(i)+ ord(i)-96))

不幸的是,如果我将 'hi' 同时作为密码和加密,它会打印出来, p r p r

你的问题在第三个for循环中不存在。它存在于前两个。您将 old 和 new 设置为 codewordencrypt 的最后一个字符。然后你循环加密第三个。 oldnew 只有一个值,因此您执行相同的操作 length of encrypt 次,这将给您一个字符或可能出现错误。

codeword = input('Enter codeword : ')
codeword = codeword.lower().replace(" ", "")

old = codeword[-1]
print (old)

encrypt = input('Enter text to encrypt : ')
encrypt = encrypt.lower().replace(" ", "")

new = encrypt[-1]
print (new)

for i in encrypt:

    out = ord(old) + ord(new) - 96
    print (out, old, new, i) 
print(chr(out))

Enter codeword : Hello
o

Enter text to encrypt : Hello
o

126 o o h
126 o o e
126 o o l
126 o o l
126 o o o

~

你没有描述问题,我也无能为力了。