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



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

最新更新