首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >凯撒密码输入法输入法

凯撒密码输入法输入法
EN

Stack Overflow用户
提问于 2021-02-10 17:47:37
回答 2查看 2.2K关注 0票数 2

我是蟒蛇的初学者,正在上一门课程。我的任务是做一个凯撒密码,我可以输入所用的字母表。为此,我不能使用ord()list()或任何导入的函数,只能使用基本的python。我让它只写一封信,但我似乎想不出如何使它适用于不止一封信。任何帮助都将不胜感激!

代码语言:javascript
复制
def cypher(target, alphabet, shift):
    
    for index in range( len(alphabet)):
        if alphabet[index] == target:
           x = index + shift
           y =  x % len(alphabet)
                  
    return (alphabet[y])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-10 18:19:55

我看这是你的第一个问题。谢谢你的关心。

我认为您希望您的代码使用上面构建的函数来加密完整的脚本。因此,您的函数所做的是,它接受一个字母作为target,并转移它。

通过迭代string的元素,可以轻松地将其应用于它。

我在这里通过一些调整为您的查询提供了正确的实现:

代码语言:javascript
复制
alphabet = "abcdefghijklmnopqrstuvwxyz"

def cypher(target, shift):
    for index in range(len(alphabet)):
        if alphabet[index] == target:
            x = index + shift
            y =  x % len(alphabet)
            return (alphabet[y])


string = "i am joe biden"
shift = 3 # Suppose we want to shift it for 3
encrypted_string = ''
for x in string:
    if x == ' ':
        encrypted_string += ' '
    else:
        encrypted_string += cypher(x, shift)

print(encrypted_string)

shift = -shift # Reverse the cypher
decrypted_string = ''
for x in encrypted_string:
    if x == ' ':
        decrypted_string += ' '
    else:
        decrypted_string += cypher(x, shift)

print(decrypted_string)
票数 0
EN

Stack Overflow用户

发布于 2021-02-10 18:46:46

有很多方法可以完成这样的事情,但是你可能想要一种形式的

获取您的映射的输入values

  • construct并将其存储(可能在字典中进行某种单值比较,或者直接作为str.maketrans table)

  • take查看它是否符合您的要求,并期望

  • 执行密码operation

  • give返回结果(显示结果上方或下方的原始字符串可以帮助发现问题!)

下面是一个非常无聊的凯撒密码的完整例子

代码语言:javascript
复制
source_string = input("source string: ").upper()
cut_position  = int(input("rotations: "))

# available as string.ascii_uppercase
source_values = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

# create a mapping
mapping = source_values[cut_position:] + source_values[:cut_position]

# display mapping
print("using mapping: {}".format(mapping))

# build a translation table
table = str.maketrans(source_values, mapping)

# use your translation table to rebuild the string
resulting_string = source_string.translate(table)

# display output
print(resulting_string)

将提供映射和低强制文本作为练习。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66142259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档