繁体   English   中英

在Python中通过字符串制作ROT13

[英]Making A ROT13 through strings in Python

我已经搜索了这个问题,并找到了一些方法来做到这一点。 有些解决方案也在一条线上。 有一种解决方案,其中数据存储在列表中,然后方法追加用于制作一个单词。 其他方法正在发挥作用。
虽然我想知道我的代码有什么问题。
编辑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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM