2017-08-18 1 views
2

Je suis nouveau à Tuples Python, et faire un exercice d'apprentissage sur le même. Comment dois-je imprimer le motif suivant lorsque l'entrée est la chaîne HI, HELLO, WELCOME.Comment imprimer ce motif en utilisant Tuples?

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

Ma tentative

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

Est-ce que l'entrée de l'utilisateur est une partie de l'exercice? – jacoblaw

Répondre

3

définissent simplement (ou créer) un tuple au début, puis imbriquer sur lui-même (réutiliser la même variable):

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 

résultat:

(('HI', 'HELLO', 'WELCOME'),) 
((('HI', 'HELLO', 'WELCOME'),),) 
(((('HI', 'HELLO', 'WELCOME'),),),) 
+0

Fonctionne parfaitement. Merci . Je ne savais pas que tuple peut être réaffecté à lui-même. –

+0

tout peut être réaffecté à lui-même :) –

+2

En fait, cela suffit ;-) 'tup = tup,'. On pourrait cependant faire valoir que les parenthèses ajoutent de la clarté. –

2

Juste imbriquez votre premier tuple dans un autre tuple à chaque itération. Comme vous pouvez le voir, à chaque itération, le tuple est emboîté un niveau plus profond. Le problème avec votre méthode d'origine est que vous n'avez pas réaffecté le nouveau tuple imbriqué à arr, donc votre tuple n'est jamais imbriqué.

0

Dans votre tentative, vous étiez toujours en train d'imprimer la même chose. Vous devez mettre à jour le tuple à chaque itération, donc vous devez avoir

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