如何将 while 输出分组为单个字符串?

How can I group while outputs into a single string?

这是我想出的一个简单的加密代码。它使用单个字符键。

ar = input('please input string to be de/encrypted:')
key = input('please input single character key:')

def encrypt1(key,ar):
    i = 0
    while i < len(ar):
        br = chr(ord(ar[i])^ord(key))
        i = i+1
        print(br)

encrypt1(key,ar)

print('Input string = ' + ar+'\n'+'key = '+key)

如果我输入 "CMPUT" 作为要加密的字符串,并输入 'a' 作为密钥,我将得到以下打印输出:

"
,
1
4
5

哪个是正确的加密(根据我的作业示例)。现在我只需要将这些输出变成一个字符串并将它们打印在 shell 中,如下所示:

>>>decrypted string: ",145

我浏览了 google 和本网站上的旧问题,但仍然一无所获。我将不胜感激你的帮助。

对于初学者来说最明显的方法就是简单地累加到一个字符串

def encrypt1(key,ar):
    i = 0
    result = ""
    while i < len(ar):
        br = chr(ord(ar[i])^ord(key))
        i = i+1
        result += br
    return result

通常您只需使用生成器表达式来编写它

def encrypt1(key,ar):
    return ''.join(chr(ord(i) ^ ord(key)) for i in ar)

查看这段代码,我相信这就是你需要的(我更改了 print(br) 行):

ar = input('please input string to be de/encrypted:')
key = input('please input single character key:')

def encrypt1(key,ar):
    i = 0
    while i < len(ar):
        br = chr(ord(ar[i])^ord(key))
        i = i+1
        print(br, end='')

encrypt1(key,ar)

print('\nInput string = ' + ar+'\n'+'key = '+key)