从大多数内部元素

时间:2016-04-28 02:54:24

标签: python python-3.x tuples

我遇到了蟒蛇问题,我对此很新,想知道我错过了什么。

我想要做的是打印一个嵌套的元组,但是从内到外。

例如:('C', ('B', ('A', ())))应打印为null, A, B, C

所有元组的最大大小为2。

我正在考虑使用递归函数来做到这一点;我有这个代码,但我不知道什么是错的。

def tuplePrint(t):
    if len(t) > 1:
        return(tuplePrint(t[1])
    else:
        return t[0]

x = ('E', ('B', ('A', ())))
print(tuplePrint(x))

我没有要求问题的答案(那会很棒),但如果只有你能告诉我代码有什么问题我会感激不尽。

任何?任何想法?

谢谢!

3 个答案:

答案 0 :(得分:1)

def tuple_print(t):
    x, xs = t
    v = 'null'
    if len(xs):
        v = tuple_print(xs)
    return ', '.join((v, x))

答案 1 :(得分:1)

  1. 第3行的return语句在(的内容之前不应有return
  2. 递归的基本情况(else语句,即len(t) <= 1)应返回字符串"null"或单元素列表["null"]
  3. 您的函数的递归组件(return tuplePrint(t[1]))也必须包含当前元素,因此您可能需要tuplePrint(t[1]) + [t[0]]tuplePrint(t[1]) + " " + t[0]
  4. 一旦你的函数返回一个像"null A B E"这样的字符串或像[null, A, B, E]这样的列表,你想要通过加入列表以逗号分隔打印它:", ".join(tuplePrint(x))(在字符串的情况下,你应该在split()返回的字符串上调用tuplePrint(x)
  5. 导致:

    def tuplePrint(t):
        if len(t) > 1:
            return tuplePrint(t[1]) + [t[0]]
        else:
            return ["null"]
    
    x = ('E', ('B', ('A', ())))
    print(", ".join(tuplePrint(x)))
    # null, A, B, E
    

答案 2 :(得分:0)

这可能适合你

def tuplePrint(t):
    if not t:
        answer.insert(0, "null")
    for each in t:
        if isinstance(each, tuple):
            tuplePrint(each)
        else:
            answer.insert(0, each)

x = ('E', ('B', ('A', ())))
answer = []
tuplePrint(x)
print(answer)