【发布时间】:2017-02-08 02:00:10
【问题描述】:
我正在尝试构建解码功能。这个函数应该找到'phrase'中的字母和'key'中的字母之间的距离,并且距离后面应该有'key'中的相应字母。
例如,让 'phrase' = 'hello' 和 'key' = 'sam' 那么,由于 'h' 距离 's' 11 个字母,因此函数的一次迭代应该返回 's11'
我不知道为什么我的“decode_phrase”功能不起作用。
def get_distance(letter1, letter2):
if letter1 < letter2:
x = (ord(letter2) - ord(letter1))
elif letter1 == letter2:
x = 0
elif letter1 > letter2:
x = (ord(letter2) - ord(letter1)) + 26
return x
def decode_phrase(phrase, key):
new_word = ''
i = 0
k = 0
for p in range(len(phrase)):
for q in range(len(key)):
y = get_distance(phrase[i], key[k])
new_word = new_word + key[k] + str(y)
k = k +1
i = i +1
return new_word
当我输入 decode_phrase('mike','sam') 时,我当前的字符串索引超出范围。但是代码中存在比我确信的更严重的问题
【问题讨论】:
-
不要贴代码图片,把代码放在你的问题里
-
还提供有关 decode_phrase 无法正常工作的更多信息。提供一个示例,说明在给定特定输入时它会返回什么,以及您希望它返回什么。
-
顺便说一句,
get_distance可以变得更简单:x = ord(letter2) - ord(letter1); if x < 0: x += 26之类的就足够了。 -
发布完整的回溯
-
当key的长度小于短语的长度时,你的函数应该做什么?密钥是否重复?如果是这样,您可能只想为索引设置一个循环,您可以使用
key[i % len(key)]从键中获取适当的字符。
标签: python string for-loop nested-loops