首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -凯撒双密钥密码

Python -凯撒双密钥密码
EN

Stack Overflow用户
提问于 2020-04-17 13:09:42
回答 1查看 324关注 0票数 1

我想用两个键写一个凯撒密码,一个是元音,另一个是辅音。

我的单词只有大写字母。我写了一些代码,但我知道这是错误的。我想走那条路。有人能帮我吗:

代码语言:javascript
复制
def ceasar(word, key1, key2): 
    c = "" 
    for i in range(len(word)): 
        zn = word[i]
        for x in zn:
                        if x=="A" or x=="E" or x=="I" or x=="O" or x=="U":
                                c += chr((ord(zn) + key1-65) % 26 + 65)                               
                else:
                                c += chr((ord(zn) + key2-65) % 26 + 65)


    return c
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-17 13:21:10

只要满足大写字母和其他字符的需要,您就可以将其简化为:

代码语言:javascript
复制
def caesar(word, key1, key2):
    c = ""
    for x in word:
        if x in "AEIOU":
            c += chr((ord(x) + key1 - 65) % 26 + 65)
        else:
            c += chr((ord(x) + key2 - 65) % 26 + 65)
    return c

您有两个循环,但这是不必要的,因为在您的代码中,zn只是一个字符,所以不需要第二个循环。

我简化了元音检查,因为您可以检查一个字符是否出现在字符串中,比使用多个or条件简单得多。

在Python中,更常见的方法是按值循环迭代器,而不是循环索引,然后使用索引值访问迭代器。

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

https://stackoverflow.com/questions/61272489

复制
相关文章

相似问题

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