Autor Tema: Python: Introducción.  (Leído 8817 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Alliare

  • Administrador
  • Pokéxperto Alpha
  • *
  • Mensajes: 7293
  • Karma: +4/-0
  • ...
    • Ver Perfil
    • Pokexperto
  • FC - 3DS: 2964-9235-9718

  • Total Badges: 47
    Badges: (View All)
    Noveno aniversario Octavo aniversario Séptimo aniversario
Re:Python: Introducción.
« Respuesta #20 en: 21 de Noviembre de 2010, 07:46:52 pm »
Y yo justo es ese ejemplo el que no entiendo bien XD.

Muchas gracias a Pájaro por la fima y avatar *-*

Ihhani

  • Usuario de honor
  • Sabio Pokémon
  • *
  • Mensajes: 2369
  • Karma: +7/-0
  • Alto Mando Lance
    • Ver Perfil

  • Total Badges: 25
    Badges: (View All)
    Cinta Huella Cinta Clásica Nivel 5
Re:Python: Introducción.
« Respuesta #21 en: 21 de Noviembre de 2010, 10:56:02 pm »
Otro ejemplo: un animal. Esta vez voy a poner algo de código (sintaxis basada en java pero quitando cosas para que sea más entendible), para que se vea mejor.
Código: [Seleccionar]
Animal {
    edad = 3;
    altura = 15;
    color = Azul;

    dormir(){
         Código que manda dormir al animal;
    }
    comer(){
         Código que manda comer al animal;
    }   
    decir(palabra){
         Código que manda decir cierta palabra al animal;
    }
    verColor(){
         return color;
    }
}

El animal tiene ciertas propiedades (es lo que he puesto al principio). Las propiedades son edad, altura y color. Cada una de esas propiedades tiene un valor asignado.
El animal también tiene métodos o funciones, que no son más que código que hace que el animal duerma, coma o diga una palabra. Los dos últimos métodos son un poco diferentes. El primero admite una palabra. Es decir, que si tú desde cualquier parte del código escribes "decir(Hola)", el animal dirá hola. El segundo método devuelve un valor. Significa que si en cualquier parte del código escribes "verColor()", el programa te devolverá el valor que está asignado a la propiedad "color".

Voy ahora con las características de los objetos:
-Abstracción: el método decir(palabra), hace que el animal diga una palabra. Nos importa tres pepinos cómo hace que la diga. Lo hace, y punto.
-Herencia: para esto crearemos un nuevo objeto: el objeto pez, que tendrá una estructura un pelín más compleja que detallaré después:
Código: [Seleccionar]
Pez extends Animal{
private colorOjos;
public peso;

private nadarHasta(profundidad){
    Código que hace que el pez nade hasta cierta profundidad;
}

public bucear100metros{
    nadarHasta(100);
}

public verColorOjos{
    return ColorOjos;
}

}
Para entender la herencia, lo único que nos importa del código es la primera línea: Pez extends Animal. Esto significa que el objeto Pez tiene todas las propiedades y métodos del objeto Animal y además, las suyas propias (lo que viene detrás). Tú puedes mandarle al objeto Pez el comando comer(), y el pez comerá, porque, aunque el método comer() no está dentro de sus métodos, sí está dentro de los métodos del objeto del que hereda. Lo mismo con las propiedades.

-Encapsulamiento: esto se ve de maravilla en el ejemplo del pez. Ahora nos fijaremos en el resto del código. Verás que tanto propiedades como métodos tienen una palabra delante: public o private. Si pone public, significa que desde fuera del objeto se pueden consultar esas propiedades o ejecutar esos métodos. Si pone private, significa que esas propiedades/métodos sólo se pueden consultar/ejecutar desde dentro del objeto. Si tú desde fuera le mandas el comando verColorOjos() al pez, te devolverá el color de los ojos. Sin embargo, si desde fuera intentas consultar el valor de la propiedad colorOjos, no te devolverá nada. Esto permite, por ejemplo, que la propiedad colorOjos se pueda consultar, pero no modificar.
La utilidad del encapsulamiento se ve también en el método bucear100metros(). Este método lo que hace internamente es llamar al método nadarHasta (que al ser private solo puede ser llamado desde dentro del objeto). Al ser el metodo nadarHasta privado, tú desde fuera no le podrás decir al pez nadarHasta(200). Sólo le podrás decir bucear100metros(). Resumiendo, tú le dices que bucee 100 metros y por dentro sigue un procedimiento más o menos complejo. Procedimiento que no te interesa y no conoces. Una ventaja de esto es que sólo se le puede mandar al pez bucear 100 metros, ni más ni menos, por mucho que en su interior tenga un método que le permita bucear más.

Si tienes alguna duda/algo que no entiendes, coméntalo.


Jamás pensé que llegaría este momento, pero supongo que nada es para siempre.

Hace cuatro años desde que me registré por primera vez en estos foros. Desde entonces han sido mi hogar. Gracias a ellos he aprendido muchísimo, me he metido en el mundillo de la estrategia pokémon, he disfrutado como un enano... Pero hace ya tiempo que todo esto no me atrae. La gente por la cual seguí en foros después de dejar de jugar competitivamente se ha ido. Cada vez me siento menos unido a Pokémon.

Así que creo que en este momento lo más sensato es anunciar mi retirada. Puede que de vez en cuando me pase por otros foros. Nada más. Nunca he sido hombre de muchas palabras. Quiero pensar que puede que en un futuro nos volvamos a ver.

Mil gracias por todos esos momentos, estos 4 años han sido inolvidables.

Alliare

  • Administrador
  • Pokéxperto Alpha
  • *
  • Mensajes: 7293
  • Karma: +4/-0
  • ...
    • Ver Perfil
    • Pokexperto
  • FC - 3DS: 2964-9235-9718

  • Total Badges: 47
    Badges: (View All)
    Noveno aniversario Octavo aniversario Séptimo aniversario
Re:Python: Introducción.
« Respuesta #22 en: 22 de Noviembre de 2010, 02:13:58 am »
Gracias, Ihhani. Me ha quedado muy claro :)

Muchas gracias a Pájaro por la fima y avatar *-*

Airblast

  • Gurú Pokémon
  • ****
  • Mensajes: 2969
  • Karma: +3/-0
    • Ver Perfil
    • Es una web buenísima

  • Total Badges: 28
    Badges: (View All)
    Nivel 5 Súper combo Combo
Re:Python: Introducción.
« Respuesta #23 en: 23 de Noviembre de 2010, 06:45:30 am »
Ihnani, he de decir que tu explicación es suprema. Si no te importa, la usaré algo adaptada para cuando lleguemos a las clases.

1: Variables
Bueno antes que nada, hay que descargar Python 2.7. Ustedes son libres de usar la IDE(programa para ayudar a programar) que quieran, pero si no me equivoco todos o la mayoría requieren instalar Python primero. Yo usaré una Python Shell, que permite introducir comandos de manera interactiva, así que es mejor que ustedes también tengan algo así.

Bueno, ahora vamos a empezar a ver cómo funciona empezando por las variables.(Los que sepan otros lenguajes de programación se pueden saltar esto). Las variables(que en realidad en Python son objetos) son valores(números, texto, etc) que pueden cambiar durante el código. Tienen un nombre, que Me explico:
Código: [Seleccionar]
>>> x = 20
>>> print x
20
>>> x = x + 1
>>> print x
21
>>> del x
>>> print x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
En la primera línea, creé una variable llamada "x" con el número 20 como valor, y en la siguiente línea accedí a esa variable, mostrándola en pantalla.
La tercera línea puede ser un poco chunga para los que se están iniciando en programación. Hay que comprender que aquí "=" no tiene el mismo significado que en matemáticas, sino asigna a la variable que viene detrás del '=' el valor que tiene delante, sobreescribiendo el valor anterior, así que "x = x+1" significa que se suma x + 1 y el valor resultante(21) se le asigna a x. Por último, "del x" significa que borramos de la memoria la variable, así que al llamar a la variable x en la siguiente línea da error.


Bueno, ya puede volver todo el mundo, ahora explicaremos los tipos de valores básicos que pueden tener las variables:
-Números:
Creo que aquí todos sabemos que son los números :D . En Python hay dos tipos, enteros(integres) y floats, que son los que tienen decimales. Se pueden introducir directamente, pero para que de resultados exactos por decimales hay que usar decimales o poner los números como float(numero) pueden usar las operaciones de suma x + y, resta x - y, multiplicación x * y, división x / y, y por último elevar a "y" potencia x ** y.
-Cadenas(strings)
Son texto, que puede tener caracteres ASCII(letras, números y algunos signos de puntuación). Para decir en el código una cadena hay que ponerla entre apóstrofes o comillas, es decir 'string' o "string". ' y " se pueden usar instintivamentete, incluso 'string". Se pueden sumar entre sí(pero cuidado con los espacios), y se pueden multiplicar por un número entero, pero no se pueden sumar directamente números y cadenas. Podemos transformar la mayoría de valores en cadenas con la función str(valor-_aquí).
Podemos hacer lo contrario con int('cadena') y float('cadena'), suponiendo que las cadenas tengan números
Ahora doy un ejemplo de todo esto.
Código: [Seleccionar]
>>> 6 * 7 
42
>>> 42 / 3
14
>>> 10 / 3  # Son ambos enteros, así que Python da igualmente un entero.
3
>>> float(10) / 3  # Bien
3.3333333333333335
>>> 2 **3
8
>>> 'Python' + 'is' + 'cool' # No hay espacios: mal
'Pythoniscool'
>>> python + is + cool    # No hay apóstrofes: mal
  File "<stdin>", line 1
    python + is + cool
              ^
SyntaxError: invalid syntax
>>> 'Python' + ' is ' + 'cool.' # Ahora
'Python is cool.'
>>> 'Hello' * 3 # Otra vez los espacios
'HelloHelloHello'
>>> 'Hello ' * 3
'Hello Hello Hello '
>>> '2 + 2 es ' + 2 + 2  # Números y cadenas no se pueden sumar directamente.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
>>> '2 + 2 es ' + str(2 + 2) # Así sí.
'2 + 2 es 4'
>>> int('2') + 2
4
Hay muchos más tipos de valores, pero por ahora esto es suficiente.

Ejercicios:
Hacer un programa que pida dos números con raw_input(), que pueden mirar cómo lo usé en el primer post y diga: 'El producto de ambos es tal y su suma es tal'

Estoy abierto a preguntas y sugerencias.


 

Javisito

  • Super Moderador
  • Pokéxperto Omega
  • *
  • Mensajes: 10167
  • Karma: +22/-0
  • RIP Pokémon 1996-2019
    • Ver Perfil
    • Twitter salvaje
  • FC - 3DS: 0430-8927-0141

  • Total Badges: 53
    Badges: (View All)
    Décimo aniversario Noveno aniversario Nivel 8
Re:Python: Introducción.
« Respuesta #24 en: 23 de Noviembre de 2010, 07:08:43 am »
1- cuando dices hacer un programa, que hacemos, ¿copiamos aqui el codigo o algo?
yo estoy probando desde la terminal de linux
2-¿que es exactamente eso de "raw_input()"?

Javisoto

Brujita oficial del foro. Si eres una chica, tienes un 101% de que te diga guapa aun sin haberte visto. Además, si eres medio chica (Laura) también tienes esa posibilidad. Se sospecha que tiene una carpeta llamada ''Música de Mozart'' donde guarda la foto de los foreros. Foreras más que otra cosa. Aún así no trafica con las fotos y es buena gente. Mis respectos. Tiene el ph43r desgastado y es experto en su uso.

Nota: 9,2
Pokémon ha muerto, cuanto antes lo asumáis, mejor.

_Julián_

  • Ayudante de Entrenador
  • **
  • Mensajes: 63
  • Karma: +1/-0
  • Realmlist: logon.wow-colombia.com
    • Ver Perfil
    • PokéProyecto
    • Email

  • Total Badges: 21
    Badges: (View All)
    Cinta Descuido Cinta Huella Súper combo
Re:Python: Introducción.
« Respuesta #25 en: 23 de Noviembre de 2010, 05:40:40 pm »
El ejercicio sería:
Código: [Seleccionar]
print "Ejercicio #1 en Python"
print
print "Introduzca el primer número para operar, será A"
a = raw_input()
print "Introduzca el segundo número para operar, será B"
b = raw_input()

print "A + B es " + str(int(a) + int(b))
print "A * B es " + str(int(a) * int(b))
El código se podría mejorar si se hiciera algún manejo de excepciones para convertir las cadenas de a y b en número. Pero bueno, todavía no llegamos ahí :P

Sugiero que antes de seguir se haga un breve explicación de como utilizar Python Shell, como correr y crear los archivos .py, utilizar la ayuda y mostrar las sugerencias de código, etc. También que se explique las funciones básicas built-in (a eso va raw_input, str y int) y se indique donde descargar la documentación de python.

Airblast

  • Gurú Pokémon
  • ****
  • Mensajes: 2969
  • Karma: +3/-0
    • Ver Perfil
    • Es una web buenísima

  • Total Badges: 28
    Badges: (View All)
    Nivel 5 Súper combo Combo
Re:Python: Introducción.
« Respuesta #26 en: 24 de Noviembre de 2010, 01:00:49 am »
1- cuando dices hacer un programa, que hacemos, ¿copiamos aqui el codigo o algo?
yo estoy probando desde la terminal de linux
2-¿que es exactamente eso de "raw_input()"?


1- Simplemente las líneas una por una, como __Julián__
2. raw_input() es una función built_in que pide un texto al usuario. Como argumento(entre los paréntesis) puedes poner una cadena con un texto que se mostrará.
El ejercicio sería:
Código: [Seleccionar]
print "Ejercicio #1 en Python"
print
print "Introduzca el primer número para operar, será A"
a = raw_input()
print "Introduzca el segundo número para operar, será B"
b = raw_input()

print "A + B es " + str(int(a) + int(b))
print "A * B es " + str(int(a) * int(b))
El código se podría mejorar si se hiciera algún manejo de excepciones para convertir las cadenas de a y b en número. Pero bueno, todavía no llegamos ahí :P

Sugiero que antes de seguir se haga un breve explicación de como utilizar Python Shell, como correr y crear los archivos .py, utilizar la ayuda y mostrar las sugerencias de código, etc. También que se explique las funciones básicas built-in (a eso va raw_input, str y int) y se indique donde descargar la documentación de python.

En las primeras podrías haber hecho:
Código: [Seleccionar]
a = raw_input('Introduzca el primer número, será A:')Quedaría asi:
Código: [Seleccionar]
print "Ejercicio #1 en Python"
print
a = raw_input("Introduzca el primer número para operar, será A:")
b = raw_input("Introduzca el segundo número para operar, será B")

print "A + B es " + str(int(a) + int(b))
print "A * B es " + str(int(a) * int(b))
Pero está bien. Si no se dan números lanzará una excepción, pero aún no explicaré cómo evitar eso(más tarde).

En cuanto a tus propuestas, tiene razón, pero las built-in prefiero explicarlas como ejemplo esporádicamente y luego hacer un resumen/repaso.

Airblast

  • Gurú Pokémon
  • ****
  • Mensajes: 2969
  • Karma: +3/-0
    • Ver Perfil
    • Es una web buenísima

  • Total Badges: 28
    Badges: (View All)
    Nivel 5 Súper combo Combo
Re:Python: Tutorial
« Respuesta #27 en: 30 de Noviembre de 2010, 02:46:14 am »
Siento el doblepost, pero de alguna manera hay que continuar :)


El Entorno de Programación
Por petición de Julian, explicaré ciertas cosas necesarias para la programación, no código en sí, sino cosas más básicas. Primero, si por ejemplo las imágenes tienen terminan en .png o .jpg, los ejecutable de Windows terminan en .exe y los archivos de Word terminan en .doc, un archivo de código Python termina en .py . Así que si vemos un archivo con esa extensión, ya sabemos qué es. Para escribir código de Python,  nos puede bastar un el Bloc de Notas, TextEdit o lo que sea(Word no vale), y un intérprete de Python que, valga la redundancia, lo interprete. Sin embargo, Python viene con un programa llamado IDLE que nos puede ayudar en eso: lo usaremos en este tutorial. Pueden usar algún otro programa para hacer código Python, pero si no saben cual usar, el IDLE es suficiente. También desde la terminal se puede probar código "al vuelo". Pero para hacer el programa final necesitamos escribir el código línea por línea y llamarlo con .py, y si bien la terminal solo sirve para escribir código al vuelo y ejecutar archivos .py, IDLE también puede crearlos, colorear la sintaxis y pillar errores (Check Syntax). Por supuesto, seguro que hay programas mejores que IDLE, pero IDLE viene con Python y es suficiente. También, si hacemos help(nombre_de_objeto) en la shell, responderá los métodos del objeto.

Bueno, después de esto, hablemos más sobre el código.
2: Sentencias if, elif y else.
Vamos a ver algo nuevo, las sentencias "if, elif y else". ¿Qué son? Bueno, permiten que ciertas líneas del código es ejecuten únicamente si tal condición se cumple. Es decir:
Código: [Seleccionar]
n = int(raw_imput('Introduzca un número'))  #Pide un número
if n % 2 == 0:  #Si n % 2 es 0, se ejecutará la siguiente línea. % hace una división, pero en lugar de devolver el cociente devuelve el resto, así que si el número es par, dará 0.
    print 'Ese numero es par'
else:  # Si el if anterior no se cumplió
    print 'el número no es par'
if n % 3 == 0:
    print 'El número es múltiplo de 3'
else:
    print 'El número no es múltiplo de 3'
Esto dirá si el número introducido es múltiplo o no de 2 y de 3.
Notamos varias cosas:
-Al final de cada sentencia, ya sea de las condicionales, que son estas tres, o de cualquier otra, deben ir los dos puntos ":" .
-Después de la palabra if, ha de ir la condición que se debe cumplir. Usaremos == si queremos que los valores de ambos lados sean iguales para que se cumpla la condición. También existen !=, que se complirá si los valores son diferentes, y los que solo funcionan con números >, <, >= y <=, que son mayor, menor, igual o mayor e igual o menor.
-Después de las sentencias, toda línea que pertenezca a ellas debe ir con espacios antes de ella. Lo general es que se usen cuatro, pero da igual.
-Después de un if podemos usar la sentencia else, que se cumplirá si el if no se cumplió.

Las sentencias también se pueden anidar:
Código: [Seleccionar]
n = int(raw_imput('Introduzca un número'))
if n % 2 == 0:
    mssg = 'El número es par' # Creamos una variable para luego poder sumarle más cosas antes de mostrarla.
    if n % 3 == 0:
        mssg += ' y múltiplo de 3.' #Notemos que ahora son ocho espacios
    else:
        mssg += ', pero no múltiplo de 3' # += suma la variable y el valor de después, y asigna a la variable el resultado. Es un atajo para n = n + 'cosas'
else:
    mssg = 'El número no es múltiplo de 2'
    if n % 3 == 0:
        mssg += ', pero sí de 3'
    else:
        mssg += 'ni de 3'
print mssg #Mostramos la susodicha variable.
Por último, elif es la mezcla de else e if, es decir, que si el if( o elif) anterior no se cumplió y la condición que pide el elif sí, se ejecuta.
Código: [Seleccionar]
if n % 2 == 0:
    print 'Es par'
elif n%3==0:
    print 'No es par, pero sí múltiplo de 3'

Además, no se pueden usar únicamente operadores, sino también cualquier función o incluso variable que devuelva True o False. Es decir:
Código: [Seleccionar]
txt = raw_imput('Introduzca un texto')
if txt.isupper():  # isupper() es un método de los strings que devuelve True si el texto tiene todo letras mayúsculas, y False en caso contrario.
    sprint 'El texto es de letras mayúsculas'
elif txt.lower(): # Lo mismo de antes, pero con letras minúsculas
    print 'El text es de letras minúsculas'

Ahora,  de ejercicio un programa que:
-Pida un texto, y diga si el texto es solo números (texto.isdigit), solo letras(texto.isalpha), solo espacios, tabs y demás(test.isspace) o una combinación de todo eso.

   
« Última modificación: 29 de Septiembre de 2011, 02:19:45 am por Airblast »

Ihhani

  • Usuario de honor
  • Sabio Pokémon
  • *
  • Mensajes: 2369
  • Karma: +7/-0
  • Alto Mando Lance
    • Ver Perfil

  • Total Badges: 25
    Badges: (View All)
    Cinta Huella Cinta Clásica Nivel 5
Re:Python: Introducción.
« Respuesta #28 en: 01 de Diciembre de 2010, 04:28:28 am »
¿Algo así?:
Spoiler: mostrar
Código: [Seleccionar]
print "Ejercicio #2 en Python"
texto = raw_input("Introduce un texto \n")

if texto.isdigit():
print "El texto está formado sólo por números"
elif texto.isalpha():
print "El texto está formado sólo por letras"
elif texto.isspace():
print "El texto está formado sólo por espacios"
else:
print "El texto es una combinación de números, letras y/o espacios"
[/spoiler]
La función isnum no me la reconocía, así que googleando usé isdigit (con esa sí que va). :S
« Última modificación: 01 de Diciembre de 2010, 05:35:20 am por Ihhani »


Jamás pensé que llegaría este momento, pero supongo que nada es para siempre.

Hace cuatro años desde que me registré por primera vez en estos foros. Desde entonces han sido mi hogar. Gracias a ellos he aprendido muchísimo, me he metido en el mundillo de la estrategia pokémon, he disfrutado como un enano... Pero hace ya tiempo que todo esto no me atrae. La gente por la cual seguí en foros después de dejar de jugar competitivamente se ha ido. Cada vez me siento menos unido a Pokémon.

Así que creo que en este momento lo más sensato es anunciar mi retirada. Puede que de vez en cuando me pase por otros foros. Nada más. Nunca he sido hombre de muchas palabras. Quiero pensar que puede que en un futuro nos volvamos a ver.

Mil gracias por todos esos momentos, estos 4 años han sido inolvidables.

Airblast

  • Gurú Pokémon
  • ****
  • Mensajes: 2969
  • Karma: +3/-0
    • Ver Perfil
    • Es una web buenísima

  • Total Badges: 28
    Badges: (View All)
    Nivel 5 Súper combo Combo
Re:Python: Introducción.
« Respuesta #29 en: 01 de Diciembre de 2010, 05:18:18 am »
¿Algo así?:
La función isnum no me la reconocía, así que googleando usé isdigit (con esa sí que va). :S
Oops, en lo de isdigit la cagué o.o
Sí, es así. Pero por favor, los ejercicios por Mp, para dar a cualquiera tiempo a hacerlos.
« Última modificación: 01 de Diciembre de 2010, 07:01:45 am por Airblast »

Ihhani

  • Usuario de honor
  • Sabio Pokémon
  • *
  • Mensajes: 2369
  • Karma: +7/-0
  • Alto Mando Lance
    • Ver Perfil

  • Total Badges: 25
    Badges: (View All)
    Cinta Huella Cinta Clásica Nivel 5
Re:Python: Introducción.
« Respuesta #30 en: 01 de Diciembre de 2010, 05:34:53 am »
Mejor, lo pongo en spoiler y pista (así el que no quiera ver no lo ve). Lo único que tendrías que editar también el quote de tu mensaje.


Jamás pensé que llegaría este momento, pero supongo que nada es para siempre.

Hace cuatro años desde que me registré por primera vez en estos foros. Desde entonces han sido mi hogar. Gracias a ellos he aprendido muchísimo, me he metido en el mundillo de la estrategia pokémon, he disfrutado como un enano... Pero hace ya tiempo que todo esto no me atrae. La gente por la cual seguí en foros después de dejar de jugar competitivamente se ha ido. Cada vez me siento menos unido a Pokémon.

Así que creo que en este momento lo más sensato es anunciar mi retirada. Puede que de vez en cuando me pase por otros foros. Nada más. Nunca he sido hombre de muchas palabras. Quiero pensar que puede que en un futuro nos volvamos a ver.

Mil gracias por todos esos momentos, estos 4 años han sido inolvidables.

Airblast

  • Gurú Pokémon
  • ****
  • Mensajes: 2969
  • Karma: +3/-0
    • Ver Perfil
    • Es una web buenísima

  • Total Badges: 28
    Badges: (View All)
    Nivel 5 Súper combo Combo
Re:Python: Introducción.
« Respuesta #31 en: 29 de Septiembre de 2011, 07:11:38 am »
Con motivo de lo de los tutoriales  revivo, se supone que esto va en contra de las reglas, pero creo que en este caso es razonable.
Sentencias While y For
En el cap pasado vimos sentencias que permitían que trozos de código no se ejecuten siempre, pero sólo cuando se cumplan o no ciertas condiciones. Ahora veremos cómo se puede hacer que una parte del código se ejecute VARIAS veces, con ligeras diferencias.
Primero tenemos la sentencia "while", que es lo mismo que el "if", pero con una salvedad, que una vez termine de ejecutar el código que tenga dentro, volverá a mirar si la condición es cierta. Me explico:
Código: [Seleccionar]
b=int(raw_input('Introduce un numero entero')) # Pide un numero entero
i=0
while b>0:
 b=b/10
 i=i+1
print 'El numero tenia '+str(c)+' cifras'
Veamos. Esto lo que hace es contar el número de cifras del número entero que le des(si le das un negativo dice que tiene 0). ¿Cómo lo hace? Primero se crea una variable llamada "i', que ahora es igual a 0, y iniciamos una sentencia "while" que se ejecutará si b es mayor a 0. Si b es mayor a cero, dividirá b entre 10(el decimal que quede no cuenta, Python lo redondeará), sumará 1 a i y volverá a comprobar si b es mayor a 0. Si lo es, volverá a dividir b, sumar 1 a i y comprobar. Así irá contando y eliminando todas las cifras del número una por una.

El while también se puede usar para hacer un bucle infinito, haré uno para algo tan útil como floodearte la consola.
Código: [Seleccionar]
while True: print 'flood'Pongo True para que se entienda mejor, pero dónde puse True podría haber puesto cualquier valor menos False, '', [], 0 y creo que algún otro. Podría haber puesto "while 1" o incluso "while 'flood' "(con las comillas, si pongo "while flood" y no existe una variable llamada así dará error). Ese código lo que hace es escribir "flood" hasta que cierres la consola o pares el programa de alguna manera.

La otra sentencia es "for". Sirve para repetir la instrucción un número contado de veces. Explico cómo es.
Código: [Seleccionar]
for i in range(10): # range(10) da como resultado un array[0,1,2,3,4,5,6,7,8,9,10]
 print 'Este es el mensaje numero '+str(i)
Esto lo que hace es:
-Crea una variable llamada i, con el valor 0
-Comprueba si i está dentro de range(10), es decir, si i es 0, 10, o cualquiera de los números de en medio.
-Si lo está, ejecuta la acción, que es escribir "Este es el mensaje numero 0", ya que ahora i es 0.
-Incrementa el valor de i en 1.
-Comprueba si i está dentro de range(10), es decir, si i es 0, 10, o cualquiera de los números de en medio.
-Si lo está, ejecuta otra vez la acción, que es escribir "Este es el mensaje numero 1", ya que ahora i es 1.
-Incrementa el valor de i en 1.
-Sigue así hasta que i no esté en range(10) y entonces borra la variable i de la memoria y para de repetir el código.

La variable no tiene por qué llamarse i, puede llamarse j, k, l, o cualquier cosa, como si quieres llamarla "ecchi", pero normalmente se usa "i" o letras siguientes si haces varios for uno dentro de otro, por convención(es decir, porque normalmente es eso lo que se hace y el código se entiende mejor así).

Dejo un pequeño ejercicio para que comprueben si lo han entendido:
-Hacer un programa que reciba un entero por raw_input y sume ese entero y todos los anteriores(si recibe 4, que de la suma de 1+2+3+4). Recordar que range(x) devuelve una lista con todos los números desde 0 hasta x, 0 y x inclusive, aka: range(1) da [0,1], range(3) da [0,1,2,3] y así.