我是Python Tuples的新手,正在做一个学习练习。当输入是字符串时,我应该如何打印以下模式 嗨,你好,欢迎。
(('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
只需在开始时定义(或创建(一个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'),),),)
只需在每次迭代中将第一个元组嵌套在另一个元组中即可。
>>> n = 3
>>> tup = ('HI', 'HELLO', 'WELCOME')
>>> for _ in range(n):
tup = tup,
print(tup)
(('HI', 'HELLO', 'WELCOME'),)
((('HI', 'HELLO', 'WELCOME'),),)
(((('HI', 'HELLO', 'WELCOME'),),),)
>>>
如您所见,在每次迭代中,元组的嵌套深度更高。原始方法的问题在于您没有将新的嵌套元组重新分配给arr
,因此您的元组永远不会嵌套。
在你的尝试中,你总是在打印同样的东西。您需要在每次迭代时更新元组,因此您必须拥有
while n>0:
arr = (arr,)
print(arr)
n=-1