试图收到一个元组列表但有些困惑

时间:2015-02-02 03:54:05

标签: python list recursion tuples

我正在忙着通过麻省理工学院的开放式课件,并且已经陷入某种问题。

问题涉及通过多次在文本中的不同点移位来解决具有多级加密的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

1 个答案:

答案 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连接到listtuples的{​​{1}}。