2009-12-15 7 views
1

dans une chaîne suppose que 12 345, je veux prendre des boucles imbriquées, de sorte que je serais capable de parcourir la chaîne de cette manière suivante: -imbriquée boucle en python

  1. 1, 2, 3, 4 , 5 seraient prises comme des entiers
  2. 12, 3, 4,5 sous forme d'entiers
  3. 1, 23, 4, 5 sous forme d'entiers
  4. 1, 2, 34, 5 sous forme d'entiers ...

Et ainsi de suite. Je sais quelle est la logique mais étant un noob en Python, je ne suis pas capable de former la boucle.

+0

Quelle est la différence entre la 2e et la 3e place? – SilentGhost

+0

Donc, si vous connaissez la logique, vous devriez peut-être essayer de la décrire en mots, en complément de l'exemple de sortie. – unwind

+0

dans 2nd, 12 est un nombre entier, dans 3rd, 23 est un nombre entier. – Hick

Répondre

0

Vous pouvez faire les traversées internes en suivant le code, la première traversée est triviale.

s = '12345' 

chars = [c for c in s] 

for i in range(len(s) - 1): 
    print '%d:' % i, 
    for el in chars[:i] + [chars[i] + chars[i + 1]] + chars[i + 2:]: 
     print el, 
    print 
1

Cela sent un peu comme les devoirs. Essayez d'écrire les sorties successives, une par ligne, et cherchez un motif. Voyez si vous pouvez expliquer ce modèle avec des tranches de la chaîne d'entrée. Recherchez ensuite un motif numérique pour le découpage.

Aussi, s'il vous plaît modifier votre question pour mettre des citations autour de vos chaînes. Ce que vous avez écrit n'est pas très clair en termes de sorties, que vous produisiez des chaînes avec des virgules ou des listes de sous-chaînes.

+1

c'est plus d'un commentaire .. – miku

0
number = 12345 

str_number = str(number) 

output = [] 
for index, part in enumerate(str_number[:-1]): 
    output_part = [] 
    for second_index, second_part in enumerate(str_number): 
     if index == second_index: 
      continue 
     elif index == second_index - 1: 
      output_part.append(int(part + second_part)) 
     else: 
      output_part.append(int(second_part)) 
    output.append(output_part) 

print output 

STICK à l'intérieur d'une définition de fonction et de mettre un « rendement output_part » à la place de la ligne « output.append » pour obtenir un interator très pratique,.