Python - Duda de superbeginner...

 
Vista:
sin imagen de perfil

Duda de superbeginner...

Publicado por Pedro (2 intervenciones) el 05/09/2016 11:10:12
Hola!!

Hoy he empezado a mirarme esto del Python, y de entrada ya he visto una cosa que no hay forma de que la entienda: la asignación de variables con comas de por medio.

Por ejemplo:

a,b=0,1
while b<10:
print b
a,b=b,a+b

Lo de la primera linea ya es raro, pero lo de la última no lo entiendo en absoluto!! (las 2 últimas lineas van tabuladas, pero no se visualiza correctamente!)

Alguien me lo puede explicar, o decirme alguna url donde lo expliquen?

Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda de superbeginner...

Publicado por kip (257 intervenciones) el 06/09/2016 15:12:51
Hola, intentare explicarlo espero me entiendas:

En esta linea asignas a la variable 'a' el valor de 0 y a 'b' el valor de 1. En python se conoce como asignacion multiple de variables.
1
a,b=0,1

Aqui en esta linea comienza un bucle while, colocando como parametro que mientras la variable 'b' sea menor que 10, el bucle se ejecute:
1
while b<10:

Imprimes el valor de 'b' luego de inicializar el bucle while:
1
print b

Al final del bucles ejecutas una operacion, usando otra vez la asignacion multiple de variables. En este caso lo que haces es darle a la variable 'a' el valor de la variable 'b' y a la variable 'b' le das el valor del resultado de la suma de esta misma variable mas la variable 'a':
1
a,b=b,a+b

Ejecutando el codigo, te mostrara este resultado, recordemos que solo imprimira el valor de b, accion que se encuentra dentro del bucle while:
1
2
3
4
5
6
1
1
2
3
5
8

Al iniciar el bucle la variable 'b' tiene el valor de 1, ya que se lo asigno antes de comenzar este, unas lineas mas arriba al inicio del archivo.
Luego se reinicia el bucle, recordamos que antes de finalizar se hace la asignacion multiple y una suma, en este punto del bucle 'a' tomara el valor de 'b' que es 1 y 'b' se sumara a la variable 'a', por lo tanto en este punto del bucle while:

1
2
a=1
b=1

Si te fijas 'b' sigue teniendo el valor de 1, aun haciendo la suma con 'a' que se supone que se le asigno el valor de 'b' que es uno, esto pasa porque en la linea de asignacion la variable 'a' sigue siendo 0, es decir que no toma el valor de asignacion que se le de en la misma linea, si le asignaramos el valor de 'b' a 'a' en una linea anterior, alli si tomaria el valor asignado, pero como se lo hace en la misma linea no funciona de esa forma.

Entonces antes de iniciar el bucle se verifica que 'b' sea menor que 10 para continuar, por ende continuara ya que 'b' es igual a 1, como lo dijimos en el parrafo anterior, se imprime de nuevo la variable 'b' al inicar el bucle de nuevo y obviamente se imprimi 1, como lo mencionamos, luego simplemente se vuelve a asignar el valor de cada variable.

Dicho aquello podra descifrarse los demas resultados.

Espero se haya entendido, cualquier duda nos comentas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Duda de superbeginner...

Publicado por Pedro (2 intervenciones) el 06/09/2016 16:34:35
Que burro!!

No se por qué, pero esto:

a,b=0,1

yo lo veía como 3 "trozos":
a
b=0
1

y a,b=b,a+b como:

a
b=b
a+b

Qué forma más rara de verlo, ¿no?
Muchas gracias por tomarte la molestia de responderme!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar