如何使用元组打印此模式?

时间:2017-08-18 16:13:45

标签: python python-2.7 tuples

我是Python Tuples的新手,并且正在进行学习练习。当输入为String HI,HELLO,WELCOME时,我应该如何打印以下模式。

(('HI', 'HELLO', 'WELCOME'),) 
((('HI', 'HELLO', 'WELCOME'),),) 
(((('HI', 'HELLO', 'WELCOME'),),),) 

我的尝试

n = input()
arr = tuple(raw_input().split())
arr1 = list()
print arr
while(n>0) :
    print(tuple(arr,))
    n -= 1

3 个答案:

答案 0 :(得分:3)

在开始时定义(或创建)tuple,然后将其嵌套在自身上(重用相同的变量):

n = 3
arr = ('HI','HELLO','WELCOME')  # or tuple(raw_input().split())

while(n>0):
    arr = (arr,)  # that's enough to create a tuple inside the tuple
    print(arr)
    n -= 1

结果:

(('HI', 'HELLO', 'WELCOME'),)
((('HI', 'HELLO', 'WELCOME'),),)
(((('HI', 'HELLO', 'WELCOME'),),),)

答案 1 :(得分:2)

每次迭代时,将第一个元组嵌套在另一个元组中。

>>> n = 3
>>> tup = ('HI', 'HELLO', 'WELCOME')
>>> for _ in range(n):
    tup = tup,
    print(tup)


(('HI', 'HELLO', 'WELCOME'),)
((('HI', 'HELLO', 'WELCOME'),),)
(((('HI', 'HELLO', 'WELCOME'),),),)
>>>

正如您所看到的,在每次迭代中,元组嵌套的级别更深。原始方法的问题在于您没有将新的嵌套元组重新分配回arr,因此您的元组永远不会嵌套。

答案 2 :(得分:0)

在你的尝试中,你总是打印同样的东西。您需要在每次迭代时更新元组,因此您必须具有

while n>0:
    arr = (arr,)
    print(arr)
    n=-1