Google+ Seguidores

miércoles, 12 de junio de 2013

Ciclo o bucle for in en python

    23

for en python
Ciclo o bucle for in en python
Hoy vamos a ver de que trata el ciclo for in en python. En la sección Tutorial Python iré dejando todas las entradas que resulten necesarias para iniciarse con este maravilloso lenguaje de programación.

La sentencia for .. in es una sentencia de bucle (también llamada ciclo) que se repite en una secuencia de objetos, es decir, a través de cada elemento de una secuencia (listas o cadenas), en el orden con el que aparecen en la secuencia.

Vamos a ver algunos ejemplos para que nos quede bien claro. 

Listas

»»»#Midiendo cadenas de una lista:
»»»palabras = ["hola", "python", "pythondiario"]
»»»for i in palabras:
. . .     print i, len(i)
. . .
hola 4
python 6
pythondiario 12

Otro ejemplo:
#! /usr/bin/env python
# -*- coding: utf-8 -*-


for i in range (1, 5):
    print i
else:
    print "El ciclo se termino"

En este programa estamos imprimiendo una secuencia de números. El rango (1, 5) nos da una secuencia [1, 2, 3, 4], el bucle itera sobre esta secuencia y a continuación ejecuta el bloque de instrucciones para cada valor de i (en este caso print i).
Recordar que la parte else es opcional, en este caso se pone para ver el final del ciclo.

Cadenas

#! /usr/bin/env python
# -*- coding: utf-8 -*-


for letra in "pythondiario":
    print "Letra actual: ", letra

En este programa iteramos sobre cada letra de "pythondiario" e imprimimos la letra luego de la cadena "Letra acual: ".

Ejemplo de ciclo for anidado: #Un for dentro de otro

#! /usr/bin/env python
# -*- coding: utf-8 -*-


for num in range (10,20):  #para iterar entre 10 y 20
   for i in range (2,num): #para iterar sobre los factores de num
      if num%i == 0:      #determina el primer factor
         j=num/i          #calcula el factor del segundo
         print '%d es igual a: %d * %d' % (num,i,j)
         break #termina el ciclo del segundo for y vuelve al primero para seguir
iterando
     else:                  # parte else del bucle
      print num, 'es un numero primo'

Voy a explicar el primer numero a iterar:
En el primer for, num va a tener como primer valor el numero 10.
num = 10 #Iterando en el rango (10, 20)
Luego el programa salta al segundo for, donde el primer valor de i va a ser 2.
i = 2 #en este caso donde num = 10, i va a valer(2, 3, 4, 5, 6, 7, 8, 9).
Luego viene el condicional if que nos dice: si el resto de dividir num entre i (10 % 2) == 0 (en este caso lo es) va a guardar en j el resultado de dividir 10 / 2.
Si el resto de num % i (10 % 2) es distinto de 0, el condicional if es falso por lo tanto vuelve al segundo for para convertir a i en 3, y así hasta llegar a num. Si ningún numero del segundo for hace cumplir la condición, termina el segundo for y salta al else para decirnos que es un numero primo. Ahora el programa salta al primer for para convertir num en 11 y asi hasta el 19.

Puede resultar un poco engorroso las primeras veces que utilizamos los for anidados, pero una ves que agarremos la onda no vamos a para de usarlos :)

No olviden dejar sus comentarios ante cualquier duda o sugerencia...

23 comentarios:
Write comentarios
  1. hola como puedo transcribir este codigo de c++ a python
    for (int i = 0; i < R; ++i)

    ResponderEliminar
    Respuestas
    1. Hola, puedes hacerlo de esta manera:

      R = 10

      for i in range(0, R, 1):
      ----print i

      Saludos

      Eliminar
    2. >>> R=10
      >>> for i in range(0,R,1):
      ... print (i)
      File "", line 2
      print (i)
      ^
      Me sale ese error con o sin paréntesis, uso python 3.
      ¡Saludos!

      Eliminar
    3. Lo he probado con python 3 y me ha funcionado. Si estas trabajando con el shell interactivo acuérdate de dejar la sangría de 4 espacios en la linea: print (i).
      Saludos

      Eliminar
    4. Prueba con
      >>> R=10
      >>> for i in range(0,R,1):
      ... print ("",i)

      Eliminar
  2. hola como va como se puede recorrer un vector x de atrás hacia adelante!!! he imprimir sus datos.. en python gracias!!!!

    ResponderEliminar
    Respuestas
    1. Hola Lisandro, hay un metodo llamado reverse() que te puede ayudar, te dejo un ejemplo:

      >>>x = [1, 2, 3, 4]
      >>>x.reverse()
      >>>x
      [4, 3, 2, 1]

      Espero te sirva, saludos.

      Eliminar
  3. hola como hago para cargar un numero ejemplo 6 en un vector y que me guarde así.
    0,1,2,3,4,5... o así 1,2,3,4,5,6.. gracias... un valor por posición del vector.. gracias..

    ResponderEliminar
  4. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  5. HOLA, si tengo un vector A=[4,2,5,6,1]
    como voy sumando las posiciones para almacenarlas en otro vector, es decir sumar 4+2+5=11, 2+5+6=13, 5+6+1=12
    B=[11,13,12]

    GRACIAS

    ResponderEliminar
  6. Una agencia de modelos solicita nuevos candidatos para incorporar a la empresa. No especifica ningún requisito. Los datos que se cargan son: nombre, sexo, altura, color de ojos y color de cabello. El alta de datos finaliza cuando en vez del nombre se ingresa la palabra fin. Una vez terminada la carga se almacenan por un lado las personas cuya altura esté entre 1.70 y 1.80 y se cuentan las mujeres rubias de ojos verdes. Finalmente se muestran los nombres y el promedio de altura del primer grupo y la cantidad de personas del segundo grupo.

    personas: juan-m-1.78-marrón-castaño/pedro-m-1.68-marrón-castaño/julia-f-1.71-verde-rubio/ana-f-1.65-verde-rubio/josé-m-1.90-verde-rubio/camila-f-1.73-verde-rubio/laura-f-1.63-verde-rubio/sara-f-1.69-celeste-rubia


    Si bien es obligatorio programar la carga, a los fines de la prueba de escritorio pueden copiar y pegar los datos suministrados, siempre considerando que es un ejemplo y no los únicos datos posibles. Además, se aclara que el formato de entrada y almacenamiento de los datos tampoco debe ser el que se muestra aquí, pueden usar las estructuras que les sean más cómodas.

    La salida que se muestre por pantalla, será como la siguiente (esto en el caso de usar los datos suministrados):

    La altura promedio del primer grupo es: 1.74 y sus nombres son juan julia camila
    La cantidad de personas del segundo grupo es: 4

    necesito ayuda

    ResponderEliminar
  7. hola estoy trabajando con arduino y el monitor serie, quiero mostrar los datos del monitor en un archivo.txt, logre hacerlo pero no se como hacer para que se ejecute constantemente y siempre muestre el valor en una sola linea hasta ahora tengo esto
    import serial

    addr = 'COM5'
    baud = 9600
    fname = 'accel.txt'
    fmode = 'wb'
    reps = 11

    with serial.Serial(addr,baud) as port, open(fname,fmode) as outf:
    for i in range(reps):
    x = port.read(size=2)
    print x
    outf.write(x)
    outf.flush()

    Se entiende lo que necesito hacer, saludos y espero que alguien me pueda guiar

    ResponderEliminar
  8. hola ya entendi el proceso pero si quiero que salga 1 despues desaparezca el 1 y aparezca el 2 y asi...tengo los comandos pero no se como lo puedo meter
    ejemplo:
    soy windows
    import os
    for i in range(1,3)
    pero quiero usar el os.system("cls")
    que saliera asi mas o menos pero con estos comandos
    1
    os.system("cls")
    2
    os.system("cls")
    3

    ResponderEliminar
    Respuestas
    1. Puedes probar con algo de esto:

      import os
      import time

      for i in range(3):
      print i
      time.sleep(2)
      os.system("cls")


      Me comentas, Saludos...

      Eliminar
  9. Hola, ¿cómo puedo hacer una función que sustituya los bucles anidados?

    ResponderEliminar
  10. Solicite los nombres de diez personas y guárdelos en una
    lista.
    Una vez que tenga la lista con los 10 nombres:
    • Los nombres deben aparecer solo una vez (Eliminar
    repetidos)
    • Muestre un mensaje de saludo a las personas que
    quedaron en la lista, en el orden contrario que fueron
    ingresados (Del ultimo al primero)
    ayuda por favor

    ResponderEliminar
  11. Solicite los nombres de diez personas y guárdelos en una
    lista.
    Una vez que tenga la lista con los 10 nombres:
    • Los nombres deben aparecer solo una vez (Eliminar
    repetidos)
    • Muestre un mensaje de saludo a las personas que
    quedaron en la lista, en el orden contrario que fueron
    ingresados (Del ultimo al primero)
    ayuda por favor

    ResponderEliminar
    Respuestas
    1. Hola Tifany, gracias por visitar el blog. Has escrito algo de código así podemos verlo y ayudarte? Saludos

      Eliminar
  12. Cree un programa en Python 3.4 que le solicite al usuario un número entero, como resultado muestre en la pantalla los números enteros desde 0 (inclusive) hasta el número ingresado y el número al cuadrado. El programa debe mostrar como resultado exclusivamente los valores solicitados , no debe contener letras ni enunciados que lo acompañen

    me pueden ayudar con este ejercicio???? graciass

    ResponderEliminar
    Respuestas
    1. Hola, has podido hacer algo tu solo del ejercicios? puedes publicar lo que has echo y te podría ayudar. Saludos!!!

      Eliminar
    2. Gracias.
      se trata de un ejercicio utilizando ciclo for. aquí un ejemplo de como debe resultar el ejercicio:
      si el usuario ingresa 3 el programa debe mostrar:

      0
      0
      1
      1
      2
      3
      9
      By: JULIO CESAR

      Eliminar
    3. lo que e podido hacer es:
      Numero = int(input())
      print (0,Numero)
      print (Numero**2)

      pero me sale mal, me dice que tengo algo mal y que me hace falta.
      By: JULIO CESAR

      Eliminar
  13. Hola, hay una función que realice la conversión de ascii a decimal por ejemplo.. ya hice la conversación de la palabra hola a ascii h en ascii es 72 ese debe ser convertido a decimal. Alguien sabe como se hace?

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.