我正在尝试制作一个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
答案 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