简单的凯撒密码蟒蛇

时间:2014-04-16 00:47:36

标签: python

我正在尝试制作一个Caeser Cipher程序。有人能告诉我为什么我会收到此错误吗?当我检查pip.index(字母)+ k是否大于25时,就会发生这种情况。

Traceback (most recent call last):
  File "/Applications/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 1, in       <module>
    # Used internally for debug sandbox under external interpreter
  File "/Applications/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 17, in CaeserCipher
ValueError: substring not found

这是我的代码:

string = 'hello'
k = 3

def CaeserCipher(string, k):

    upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    lower = 'abcdefgihjklmnopqrstuvwxyz'

    newCipher = ''

    for letter in string:
        if letter in upper:
            if upper.index(letter) + k > 25:
                indexPosition = (upper.index(letter) + k) - 25
                newCipher = newCipher + upper[indexPosition]
            else:
                indexPosition = upper.index(letter) + k
                newCipher = newCipher + upper[indexPosition]
        elif letter in lower:
            if upper.index(letter) + k > 25:
                indexPosition = (upper.index(letter) + k) - 25
                newCipher = newCipher + upper[indexPosition]
            else:
                indexPosition = upper.index(letter) + k
                newCipher = newCipher + upper[indexPosition]

    return newCipher

2 个答案:

答案 0 :(得分:1)

elif letter in lower:数据块中,您正在访问upper而不是lower。看起来你复制并粘贴了代码块而没有替换它们?

答案 1 :(得分:0)

这是一个名为&#34; rot13&#34;的Ceasar Cypher;它是它自己的反转。

http://stromberg.dnsalias.org/svn/rot13/trunk/rot13

它#! python3,但它也应该在python2中工作。

模块化算术对于凯撒塞星很有效。

HTH