当前位置: 首页 > 知识库问答 >
问题:

凯撒密码,Python 3,新程序员

韩鸿
2023-03-14

第一次发帖到StackOverflow!

我是一个新的程序员,所以请耐心等待,因为我还没有跟上所有可能的函数,所以可能我只是目前缺少一个函数或方法的知识,可以快速解决我的问题。

感谢大家的帮助!

#string used for comparing code to
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

#strings for shifting the code
shift = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
punctuation = ".,!;:?"

#ask user for the encrypted text
code = input("Enter text: ")

#variables storing the most common letters and the # of times they come up
common1 = 0
common2 = 0
common3 = 0
ac = 0
bc = 0
cc = 0

for i in range(0, len(alphabet)):
    # print number of times each letter comes up --- print( str(alphabet[i]) + " is present " + str(code.count(alphabet[i])) + " number of times" )

    #finding the number of times the most common letter comes up
    if code.count(alphabet[i]) > common1:
        common3 = common2
        cc = bc
        common2 = common1
        bc = ac
        common1 = code.count(alphabet[i])
        ac = alphabet[i]

    elif code.count(alphabet[i]) > common2:
        common3 = common2
        cc = bc
        common2 = code.count(alphabet[i])
        bc = alphabet[i]

    elif code.count(alphabet[i]) > common3:
        common3 = code.count(alphabet[i])
        cc = alphabet[i]


print("Most common letter, " + str(ac) + ", comes up " + str(common1) + " times")
print("Second most common letter, " + str(bc) + ", comes up " + str(common2) + " times")
print("Third most common letter, " + str(cc) + ", comes up " + str(common3) + " times")


for i in range(0, len(code)):
    a = shift.index("E") + 26 - shift.index(ac)
    print(shift[a + shift.index( code[i] ) ], end = "")

共有1个答案

祁远
2023-03-14

您应该检查每个位置的代码值是否在您的字母表中。如果不是,只需打印代码中的值,然后继续下一个循环。


for i in range(0, len(code)):
    if code[i] not in alphabet:
        print(code[i])
        continue
    a = shift.index("E") + 26 - shift.index(ac)
    print(shift[a + shift.index( code[i] ) ], end = "")
 类似资料:
  • 我需要编写一个python、hacker和wow这些单词的加密文本,并且使用不包括使用RAW_INPUT的python中的凯撒密码,距离为3。这是我到目前为止,但我不断得到一个错误消息,我不知道如何修复它。

  • 问题内容: 我通过java进行了凯撒密码,它可以运行,但是在用户输入密钥后不对任何内容进行加密! 这是我的代码 跑: 问题答案: 使用效率不是很高…您可以对值进行整数运算以获得其索引。 我在代码中添加了注释以解释更多信息,但这就是我想出的。 输出应该是这样的

  • 首先,我是编程的新手,所以要温柔。而且,我一直在做这个任务,但没有任何结果。任务是创建一个凯撒密码程序,它加密或解密一个段落最多100个字符。实际上是两个独立的实验室。第一个实验是加密,然后第二个实验是解密。一旦我弄清楚了如何创建加密程序,解密程序应该很简单,因为我可以只进行语义更改来解密而不是加密。无论如何,这是我到目前为止的代码。它通过了他们给我们的5个测试中的4个,但出于某种原因,有一个测试

  • 示例:返回。如果给定的整数值小于0或大于26,则应返回空字符串。 我的问题是,作为回报,它只给我真或假。如何解决这个问题:该方法应该返回一个字符串,其中每个字符都是根据指定的整数值移动的。

  • 我在做凯撒密码,这是我的密码 我尝试使用%来解决这个问题(我也不是100%确定如何使用模运算符),但我没有成功。 文本文件的内容是: