Variables y Asignación

Resumen

Enseñando: 10 min
Ejercicios: 10 min
Preguntas
  • ¿Cómo puede guardar datos en los programas?

Objectivos
  • Escribir programas que asignen valores escalares a variables y realicen cálculos con esos valores.

  • Rastrear correctamente cambios de valores en programas que usan asignación de escalares.

Usa variables para guardar valores.

age = 42
first_name = 'Ahmed'

Usa print para mostrar los valores.

print(first_name, 'is', age, 'years old')
Ahmed is 42 years old

Las variables deben ser creadas antes de ser utilizadas.

print(last_name)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-c1fbb4e96102> in <module>()
----> 1 print(last_name)

NameError: name 'last_name' is not defined

Las variables persisten entre celdas

Tenga en cuenta que el orden de ejecución en las celdas es importante en un cuaderno (notebook) de Jupyter, no el orden en que aparecen. Python recordará todo el código que se ejecutó anteriormente, incluidas las variables que hayas definido, independientemente del orden en el cuaderno. Por lo tanto, si defines variables más abajo en el cuaderno y luego (re) ejecutas las celdas más arriba, estas definidas más abajo aún estarán presentes. Como ejemplo, crea dos celdas con el siguiente contenido, en este orden:

print(myval)
myval = 1

Si lo ejecutas en este orden, la primera celda dará un error. Sin embargo, si ejecutas la primera celda después de la segunda celda, se mostrará 1. Para evitar confusiones, puede ser de ayuda usar la opción del Kernel -> Restart & Run All que borra el intérprete y ejecuta todo desde una pantalla limpia, yendo de arriba a abajo.

Las variables pueden ser usadas en cálculos.

age = age + 3
print('Age in three years:', age)
Age in three years: 45

Usa un índice para obtener un solo carácter de una secuencia de caracteres.

representación gráfica de como funciona el indexado

atom_name = 'helium'
print(atom_name[0])
h

Usa un corte para obtener una parte de una secuencia de caracteres.

atom_name = 'sodium'
print(atom_name[0:3])
sod

Usa la función incorporada len para encontrar la longitud de una secuencia de caracteres.

print(len('helium'))
6

Python distingue mayúsculas de minúsculas

Usa nombres de variables significativos.

flabadab = 42
ewr_422_yY = 'Ahmed'
print(ewr_422_yY, 'tiene', flabadab, 'años')

Intercambiar valores

Rellene la tabla que muestra los valores de las variables en este programa después de ejecutar cada instrucción.

# Command # Value of x   # Value of y   # Value of swap #
x = 1.0    #              #              #               #
y = 3.0    #              #              #               #
swap = x   #              #              #               #
x = y      #              #              #               #
y = swap   #              #              #               #

Solución

# Command # Value of x # Value of y # Value of swap #
x = 1.0    # 1.0          # not defined  # not defined   #
y = 3.0    # 1.0          # 3.0          # not defined   #
swap = x   # 1.0          # 3.0          # 1.0           #
x = y      # 3.0          # 3.0          # 1.0           #
y = swap   # 3.0          # 1.0          # 1.0           #

Estas tres líneas intercambian los valores en x e y usando la variable swap como almacenamiento temporario. Esto es bastante común en lenguajes de programación.

Predicción de Valores

¿Cuál es el valor final de ‘position’ en el programa a continuación? (Intenta predecir el valor sin ejecutar el programa, luego comprueba tu predicción)

initial = 'left'
position = initial
initial = 'right'

Solución

'left'

A la variable initial se le asigna el valor 'left'. en la segunda línea, la variable position también recibe como valor la secuencia de caracteres 'left'. En la tercera línea, la variable initial toma el valor 'right', y la variable position conserva su valor de secuencia de caracteres 'left'.

Desafío

Si asignas a = 123, ¿Qué sucede si intenta obtener el segundo dígito de ‘a’ a través de ‘a [1] `?

Solución

Los números no son secuencia de caracteres, por lo cual Python generará un error si intenta realizar una operación de índice en un número. En la próxima lección de tipos de datos y conversión de tipos aprenderemos más sobre los tipos de datos y cómo convertir entre los diferentes tipos. Si quieres el enésimo dígito de un número puedes convertirlo en una secuencia de caracteres usando la función incorporada str y luego realizar una operación de índice en esa secuencia de caracteres.

a = 123
print(a[1])
TypeError: 'int' object is not subscriptable
a = str(123)
print(a[1])
2

Eligiendo un nombre

¿Cuál es el mejor nombre de variable m, min o minutes? Porqué? Sugerencia: piensa qué código preferiría heredar de alguien que abandona el laboratorio:

  1. ts = m * 60 + s
  2. tot_sec = min * 60 + sec
  3. total_seconds = minutes * 60 + seconds

Solución

minutes es mejor que porque min podría significar algo como “mínimo” (actualmente min es una función existente en Python que veremos más adelante).

Práctica de corte

¿Qué muestra el siguiente programa?

atom_name = 'carbon'
print('atom_name[1:3] is:', atom_name[1:3])

Solución

atom_name[1:3] is: ar

Conceptos de corte

  1. ¿Qué hace algo[inicio:fin] ?
  2. ¿Qué hace algo [inicio:] (sin un valor después de los dos puntos)?
  3. ¿Qué hace algo[:fin] (sin un valor antes de los dos puntos)?
  4. ¿Qué hace algo[:] (solo dos puntos)?
  5. ¿Qué hace algo[número:algún-número-negativo] ?
  6. ¿Qué pasa cuando eliges un valor fin que está fuera de rango? (es decir, probar con atom_name[0:15])

Soluciones

  1. algo[inicio:fin] devuelve un corte desde inicio hasta un valor antes de fin
  2. algo[inicio:] devuelve un corte desde inicio hasta el final de ese algo
  3. algo[:fin] devuelve un corte desde el comienzo de ese algo hasta el valor anterior a fin
  4. algo[:] devuelve todo de algo
  5. algo[número:algún-número-negativo] devuelve un corte desde ese número hasta el algún-número-negativo desde el final de algo
  6. Si una parte del corte está fuera de rango, la operación no falla. atom_name [0:15] da el mismo resultado que atom_name [0:].

Puntos Clave

  • Usa variables para guardar valores.

  • Usa print para mostrar los valores.

  • Las variables persisten entre celdas.

  • Las variables deben ser creadas antes de ser utilizadas.

  • Las variables pueden ser usadas en cálculos.

  • Usa un índice para obtener un solo carácter de una secuencia de caracteres.

  • Usa un corte para obtener una parte de una secuencia de caracteres.

  • Usa la función incorporada len para encontrar la longitud de una secuencia de caracteres.

  • Python distingue mayúsculas de minúsculas.

  • Usa nombres de variables significativos.