我正在忙着通过麻省理工学院的开放式课件,并且已经陷入某种问题。
问题涉及通过多次在文本中的不同点移位来解决具有多级加密的Caesar Cipher。
我写的代码解决了这些转变,并返回需要给出的位置和转移数,以解读凯撒转移的文本。
该函数应返回班次开始位置和班次编号的元组列表。目前,我得到的是以下内容:
(([12,11],[3,9]),[0,21])
任何帮助都会受到欢迎。
def find_best_shifts_rec(wordlist, text, start)
for shift in xrange(27):
## Begin shifting the text along the segments you would like to see shifted while holding constant the text that is not to change.
s = text[:start] + apply_shift(text[start:],shift)
print s
letter_position = start
for letter in s[start:]:
if letter == " " and is_word(wordlist,s[start:letter_position]):
start = letter_position + 1
letter_position += 1
if is_word(wordlist,s[start:len(s)]):
print "Base Case"
shifts += (begin,shift)
return shifts
elif start != begin:
print "Recursion"
shifts += (begin,shift)
return find_best_shifts_rec(wordlist,s,start), shifts
答案 0 :(得分:0)
问题似乎是代码的最后一行
return find_best_shifts_rec(wordlist,s,start), shifts
问题是find_best_shifts_rec
应该返回list
tuples
,但您正在使用此结果tuple
。这可以通过将行更改为:
return find_best_shifts_rec(wordlist,s,start) + shifts
这会将list
返回的tuples
find_best_shifts_rec
连接到list
中tuples
的{{1}}。