python - 在Python中通过字符串制作A ROT13

标签 python loops rot13

我搜索了这个问题并找到了一些方法来做到这一点。一些解决方案也排在一行。有一种解决方案,其中数据存储在列表中,然后使用方法append来创建一个单词。 其他方法都有效。
虽然我想知道我的代码有什么问题。
编辑1:我的代码的问题是,它仅在输出中显示输入字符串的第一个字母,而不是整个单词。
这是我的代码:

alph = {"a":"n" , "b":"o" ,"c":"p" , "d":"q","e":"r" , "f":"s" , "g":"t" ,"h":"u" , "i":"v",  "j":"w", "k":"x" , "l":"y" , "m":"z" ,"n":"a", "o": "b" ,  "p":"c" ,"q":"d" ,"r":"e" ,"s":"f", "t":"g" ,"u":"h", "v":"i", "w":"j", "x":"k", "y":"l", "z":"m" }
def rot(word):
    rt = ''
    for c in word:
        if c.islower():
            rt += alph.get(c)
            return rt
        if c.isupper():
            c = c.lower()
            rt += alph.get(c).capitalize()
            return rt
        if c not in alph:
            rt += c
            return rt

word = raw_input("Enter:")
print rot(word)

请检查并告诉我其中有什么问题。

最佳答案

正如评论所提到的,一种更优雅的方法是使用 python 的内置字符串 translate 方法来避免手动编写循环,但如果您必须编写自己的循环:

输出仅返回第一个字母的原因是您从 for 循环中的每个 if 语句返回。这意味着在循环的第一次迭代中,第一个字符被翻译,添加到 rt 字符串中,并立即从函数返回;字符串的其余部分永远不会被翻译。

要解决此问题,只需从每个 if 语句底部删除 return rt ,并在循环后面放置一个 return rt并在函数末尾。

关于python - 在Python中通过字符串制作A ROT13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44815551/

相关文章:

python - 使用 python 抓取具有多个部分的页面

language-agnostic - 具有奇数个符号的字母表的渐合密码(如 ROT13)

python - ModelForm 如果为空则禁用 imageField

python - 用户输入中使用了数组 A 和数组 B 中的多少个单词?

python - 我如何在python中控制for循环的迭代

java - 奇怪的循环输出 - Java

javascript - 即时创建嵌套数组

linux - 汇编中的 ROT13 密码

java - java中的rot13解码

python - 如何让 Flask_Security 中的 auth_token_required 工作?