我是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
答案 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