当我运行我的代码时,我得到错误子字符串未找到,我已经多次查看代码并且不明白它有什么问题以及如何修复它?三江源。
代码:
key = "cats"
tkey = ""
message = "Are awesome animals!"
alphabet = 'abcdefghijklmnopqrstuvwxyz'
for p,k in zip(message,key):
char = alphabet.index(p)
temp = alphabet.index(k)
newchar = char + temp
if newchar > 25:
newchar -= 25
newchar = alphabet[newchar]
tkey.append(newchar)
print (newchar)
答案 0 :(得分:2)
问题是message
的第一个字母是A
,不在字母表中:
>>> alphabet = 'abcdefghijklmnopqrstuvwxyz'
>>> alphabet.index('A')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
根据您的需要,您可能希望在测试前小写输入:
char = alphabet.index(p.lower())
或以小写整个消息。
答案 1 :(得分:1)
你没有允许大写字母。像这样更改循环字符串:
for p, k in zip(message.lower(), key):
你也会遇到tkey积累的问题:字符串没有附加方法。现在使用简单连接(您很快就会了解 join ):
tkey += newchar
print (newchar)
最后,您必须添加一行或两行来处理空格;他们没有涵盖你当前的逻辑,他们也会得到&#34; not found&#34;错误。
答案 2 :(得分:1)
运行代码时,在for
循环中以
p = "A", k="c"
等等
char = alphabet.index(p)
无法在alphabet
中找到与A
匹配的任何内容。你无法优雅地失败,所以它会死亡。
您可以捕获错误并处理它,或者您可以标准化字符串的大小写。