【问题标题】:How to increment each character of string input by 1 and output encrypted string?如何将输入的字符串的每个字符加1并输出加密的字符串?
【发布时间】:2020-12-20 16:45:20
【问题描述】:

我刚开始接触 Python,之前没有任何编程经验。我无法弄清楚一项任务,这让我发疯。这是我的问题的最后一站,在我取消之前。以下问题:

编写一个代码,从输入中读取一个字符串,将每个字符的代码点加 1,然后输出加密的字符串。

示例输入 1: 我喜欢 ord 函数!

示例输出 1: J!mpwf!pse!gvodujpo"

我知道它与 for 循环有关,但我对这个有很大的理解问题,因为我不知道如何在这里使用它们。我的想法是这样的:

_chr = input('Enter character(A-Z): ')
if _chr == 'Z':
    print('A')
else:
    print(chr(ord(_chr) + 1))

【问题讨论】:

  • for _chr in input_string:

标签: python character increment caesar-cipher


【解决方案1】:

你可以处理这样的事情:

def encodeString(string):
    encoded = ''
    for char in string:
        c = ord(char)

        if (c >= ord('A') and c <= ord('Z')):
            encoded += chr((c - ord('A') + 1) % 26 + ord('A'))

        elif (c >= ord('a') and c <= ord('z')):
            encoded += chr((c - ord('a') + 1) % 26 + ord('a'))

        # and so on for other regions of characters

        # or collect the unchanged character
        else: encoded += char

    return encoded

string = 'Happy New Year 2021' # or : string = input('Enter a sentence : ')

print(encodeString(string)) #==> 'Ibqqz Ofx Zfbs 2021'

【讨论】:

  • 错误:回溯(最近一次调用最后一次):文件“jailed_code”,第 2 行,在 c = (ord(_chr)) 类型错误:ord() 需要一个字符,但字符串找到长度 20
  • 这是通过获取返回字符串的第一个字符来解决的。我也将 65 替换为 ord('A') 等等。
  • 我添加了一个循环来转换整个字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
相关资源
最近更新 更多