7.3. Recorrido y el bucle for

Muchos cálculos incluyen el proceso de una cadena carácter a carácter. A menudo empiezan por el principio, seleccionan cada carácter por turno, hacen algo con el y siguen hasta el final. Este patrón de proceso se llama recorrido. Una forma de codificar un recorrido es una sentencia while:

   1: indice = 0
   2: while indice < len(fruta):
   3:     letra = fruta[indice]
   4:     print 
   5:     letra
   6:     indice = indice + 1


Este bucle recorre la cadena y muestra cada letra en una línea distinta. La condición del bucle es indice < len(fruta), de modo que cuando indice es igual a la longitud de la cadena, la condicion es falsa y no se ejecuta el cuerpo del bucle. El ultimo caracter al que se accede es el que tiene el índice len(fruta)-1, que es el ultimo caracter de la cadena.


Como ejercicio, escriba una función que tome una cadena como argumento y entregue las letras en orden inverso, una por línea.


Es tan habitual usar un índice para recorrer un conjunto de valores que Python facilita una sintaxis alternativa mas simple: el bucle for:




   1: for car in fruta:
   2: print car

Cada vez que recorremos el bucle, se asigna a la variable car el siguiente carácter de la cadena. El bucle continua hasta que no quedan caracteres.


El ejemplo siguiente muestra como usar la concatenacion junto a un bucle for para generar una serie abecedarica. “Abecedarica” es la serie o lista en la que cada uno de los elementos aparece en orden alfabetico. Por ejemplo, en el libro de Robert McCloskey Make Way for Ducklings (Dejad paso a los patitos), los nombres de los patitos son Jack, Kack, Lack, Mack, Nack, Ouack, Pack, y Quack.


Este bucle saca esos nombres en orden:




   1: prefijos = "JKLMNOPQ"
   2: sufijo = "ack"
   3: for letra in prefijos:
   4: print letra 
   5: + sufijo
   6: La salida del programa 
   7: es:
   8: Jack
   9: Kack
  10: Lack
  11: Mack
  12: Nack
  13: Oack
  14: Pack
  15: Qack

Por supuesto, esto no es del todo correcto, porque “Ouack” y “Quack” no están correctamente escritos.


Como ejercicio, modifique el programa para corregir este error.

0