Capítulo 2

Variables, expresiones y sentencias

Una de las características mas poderosas de un lenguaje de programación es la habilidad de manipular variables. Una variable es un nombre que hace referencia a un valor.

2.1 Sentencias de asignación

Una sentencia de asignación crea una nueva variable y le asigna un valor:

Este ejemplo crea tres asignaciones. La primera le asigna una cadena a una nueva variable llamada mensaje; la segunda le asigna el entero 16 a n; la tercera le asigna el valor aproximado de π a pi.

2.2 Nombres de variables

Los programadores generalmente eligen nombres que sean significativos para sus variables, estos documentan para que se utiliza la variable.

Los nombres de variables pueden ser tan largos como quieras. Pueden contener letras y números, pero no pueden empezar con un número.

El carácter de guión bajo, _, puede aparecer en un nombre. Es usado a menudo en nombres con múltiples palabras, como tu_nombre o km_por_hora.

Si tienes un nombre de variable ilegal, obtendrás un error de sintaxis:

76trombones es ilegal por que empieza con un número. amor@ es ilegal por que contiene un carácter ilegal, @. Pero, ¿que está mal con class?.

Resulta que class es una de las palabras reservadas de Python. El intérprete ussa palabras para identificar la estructura del programa, y no pueden ser usadas como nombres de variables.

Python tiene estas palabras clave reservadas:

No tienes que memorizar esta lista. En la mayoría de entornos de desarrollo, las palabras clave son mostradas en un color diferente; si intentas usar una como nombre de variable, lo sabrás.

2.3 Expresiones y Sentencias

Una expresión es una combinación de valores, variables, y operadores. Un valor por si mismo es considerado una expresión, y también lo es una variable, así que las siguientes expresiones son todas legales:

Cuando escribes una expresión en el prompt, el intérprete la evalua, esto significa que encuentra el valor de la expresión. En este ejemplo, n tiene el valor 17 y n + 25 tiene el valor 42.

Una sentencia es una unidad de código que tiene un efecto, como crear una variable o mostrar un valor.

La primera línea es una sentencia de asignación que le otorga un valor a n. La segunda línea es una sentencia print que muestra el valor de n.

Cuando escribes una sentencia, el intérprete la ejecuta, lo cual significa que hace lo que sea que las sentencias dicen. En general, las sentencias no tienen valores.


2.4 Modo Script

Hasta ahora hemos ejecutado Python en el modo interactivo, lo que significa que interactúas directamente con el intérprete. El modo interactivo es una manera de comenzar, pero si estás trabajando con mas que unas cuantas líneas de código, esto puede ser tosco.

La alternativa es guardar el código en un archivo llamado script, y entonces ejecutar el intérprete en el modo script para ejecutar el script. Por convención, los scripts de python tienen nombres que terminan con .py.

Si sabes como crear y ejecutar un script en tu computadora, estás listo. De otra manera recomiendo usar PythonAnywhere otra véz.

Ya que Python dispone de ambos modos, puedes probar pedacitos de código en el modo interactivo antes de ponerlos en un script. Pero hay diferencias entre el modo interactivo y el modo script que pueden ser confusas.

Por ejemplo, si estás usando Python como una calculadora, puedes escribir

La primera línea le asigna un valor a la variable millas, pero esta no tiene un efecto visible. La segunda línea es una expresión, así que el intérprete la evalúa y muestra el resultado, Resulta que una maratón es de unos 42 kilómetros.

Pero si escribes el mismo código en un script y lo ejecutas, no obtendrás salida en absoluto. En el modo script una expresión, toda por sí misma, no tiene un efecto visible. Python evalúa la expresión, pero no muestra el resultado. Para mostrar el resultado, necesitas una sentencia print como esta:

millas = 26.2
print(millas * 1.61)

Este comportamiento puede ser confuso al principio. Para verificar tu entendimiento, escribe las siguientes sentencias en el intérprete de Python y mira lo que hacen:

5
x = 5
x + 1

Ahora pon las mismas sentencias en un script y ejecútalo. ¿Cuál es la salida?, modifica el script transformando cada expresión en una sentencia print y entonces ejecútalo otra ves.


2.5 Orden de las Operaciones


Cuando una expresión contiene mas de un operador, el orden de evaluación depende del orden de las operaciones. Para los operadores matemáticos, Python sigue la convención matemática. El acrónimo PEMDAS es una manera útil de recordar las reglas:

• Los paréntesis tienen el orden mas alto de precedencia y pueden ser usados para forzar una expresión para evaluarla en el orden que quieras. Ya que las expresiones entre paréntesis son evaluadas primero, 2 * 3 (3-1) es 4, y (1+1)**(5-2) es 8. También puedes usar los paréntesis para hacer que una expresión sea mas fácil de leer, como: (minuto * 1000) / 60, incluso si no cambian el resultado.

• La exponenciación tiene el siguiente nivel mas alto de precedencia, así que 1 + 2 **3 es 9, no 27, y 2* 3**2 es 18, no 36.

• La Multiplicación y División tienen mas alta precedencia que la Adición y la Sustracción. Así que 2*3-1 es 5, no 4, y 6+4/2 es 8, no 5.

• Los operadores con el mismo nivel de precedencia son evaluados de derecha a izquierda (excepto la exponenciación) .

No trabajo muy duro para recordar la precedencia de los operadores. Si no puedo distinguir mirando la expresión , uso los paréntesis para hacerlo obvio.


2.6 Operaciones con Cadenas (Strings)

En general, no puedes realizar operaciones matemáticas con cadenas, incluso si las cadenas parecen números, así que lo siguiente es ilegal:
‘comida’ – ‘rapida’ ‘fast’ / ‘food’ ‘cadena’ * ‘cadena’

Pero hay dos excepciones, + y *.
El operador + realiza una concatenación de cadenas, lo cual significa que une las cadenas enlazándolas de extremo a extremo. Por ejemplo:

El operador * también trabaja con cadenas, este realiza una repetición. Por ejemplo, ‘Spam’ * 3 es equivalente a 4+4+4, esperamos que ‘Spam’*3 sea lo mismo que ‘Spam’+’Spam’+’Spam’, y lo es. Por otra parte, hay una manera importante en la cual la repetición y concatenación de cadenas se diferencian de la adición y multiplicación de enteros. ¿Puedes pensar en una propiedad que tenga la adición y no la concatenación de cadenas?


2.7 Comentarios

A medida que los programas se vuelven mas grandes y mas complicados, se vuelven mas difícil de leer. Los lenguajes formales son densos, y a menudo resulta difícil mirar una pieza de código y descifrar lo que hace, o por que.

Por esta razón, es una buena idea agregar notas a tus programas que expliquen en un lenguaje natural lo que el programa está haciendo. Esas notas son llamadas comentarios, y empiezan con el símbolo #:

# computa el porcentaje de la hora que ha pasado
porcentaje = (minuto * 100) / 60

En este caso, el comentario aparece por sí mismo en una línea. También puedes poner comentarios al final de una línea:

porcentaje = (minuto * 100) / 60    #porcentaje de una hora

Todo lo que se encuentre desde el # hasta el final de la línea es ignorado, no tiene efecto en la ejecución del programa.
Los comentarios son más útiles cuando documentan características no obvias del código. Es razonable asumir que el lector puede descifrar lo que el código hace, es más útil explicar el por que.
Este comentario es inútil y redundante:

v = 5    # asigna 5 a v

Este comentario contiene información útil que no está en el código:

v = 5    # velocidad en metros/segundo.

Buenos nombres de variable pueden reducir la necesidad de comentarios, pero nombres largos pueden hacer que expresiones complejas sean difíciles de leer, así que es un intercambio.

2.8 Depuración

Pueden ocurrir tres tipos de errores en un programa: errores de sintaxis, errores en tiempo de ejecución, y errores semánticos. Es muy útil distinguirlos entre ellos para rastrear y corregirlos mas rápidamente.

Error de Sintaxis: «Sintaxis» se refiere a la estructura de un programa y a las reglas sobre esa estructura. Por ejemplo, los paréntesis tienen que venir en pares, así que (1 + 2) es legal, pero 8) es un error de sintaxis.
Si hay un error de sintaxis en cualquier lugar de tu programa, Python mostrará un mensaje de error y se cerrará, y no podrás ejecutar el programa. Durante las primeras semanas de tu carrera como programador, puedes gastar mucho tiempo corrigiendo errores de sintaxis. A medida que ganes experiencia, cometerás menos errores y los encontrarás mas rápido.

Error en Tiempo de Ejecución: El segundo tipo de error es un error en tiempo de ejecución, llamado así por que el error no aparece hasta que el programa comienza a ejecutarse. Estos errores también son llamados excepciones por que usualmente indican que algo excepcional (y malo) ha pasado.
Los errores en tiempo de ejecución son raros en los programas simples que verás en los primeros capítulos, así que puede pasar un rato hasta que encuentres uno.

Error semántico: El tercer tipo de error es «semántico», lo cual significa que está relacionado con el significado. Si hay un error de semántica en tu programa, este se ejecutara sin generar mensajes de error, pero no hará lo correcto.
Identificar errores semánticos puede ser difícil por que requiere que trabajes a la inversa mirando la salida del programa y descifrando lo que hace.

2.9 Glosario

variable: Un nombre que hace referencia a un valor

asignación: una sentencia que asigna un valor a una variable

diagrama de estado: Una representación gráfica de un conjunto de variables y los valores a los que se refieren.

palabra clave: Una palabra reservada que es usada para analizar el programa, no puedes usar palabras clave como if, def, y while como nombres de variables.

operando: Uno de los valores en el que un operador opera.

expresión: Una combinación de variables, operadores y valores, que representa un solo resultado.

sentencia: Una sección del código que representa un comando o una acción. Hasta ahora, las sentencias que hemos visto son la sentencia de asignación y la sentencia print.

ejecutar: Correr una sentencia y hacer lo que dice.

modo interactivo: Una manera de usar el intérprete de Python escribiendo código en el prompt.

modo script: Una manera de usar el intérprete de Python y leer el código desde un script y ejecutarlo.
script: Un programa guardado en un archivo.

orden de las operaciones: Reglas que gobiernan el orden en que las expresiones que envuelven múltiples operadores y operandos son evaluadas.

concatenar: Unir dos operandos de exstremo a extremo.

comentario: Información en un programa que está destinada a otros programadores (o cualquiera que lea el código fuente) y no tiene efecto en la ejecución del programa.

error de sintaxis: Un error en un programa que lo hace imposible de analizar (y por lo tanto imposible de interpretar).

excepción: Un error que es detectado mientras el programa está en ejecución.
semántica: El significado del programa.

error semántico: Un error en un programa que hace que haga algo diferente a lo que el programador pretendía.

2.10 Ejercicios

Ejercicio 2.1. Repitiendo mi aviso de capítulos previos, cuando estés aprendiendo una nueva característica, deberías probarla en el modo interactivo y cometer errores a propósito para ver lo que va mal.


Hemos visto que n = 42 es legal. ¿Qué pasa con 42 = n?
• ¿Qué pasa con x = y = 1?
• En algunos lenguajes todas las sentencias terminan con un punto y coma, ;. ¿Qué pasa si pones un punto y como al final de una sentencia en Python?
• ¿Qué pasa si pones un punto al final de una sentencia?
• En notación matemática puedes multiplicar x & y así: xy. ¿Qué pasa si intentas eso en Python?

Ejercicio 2.2. Practica usando el intérprete de Python como una calculadora:

  1. El volumen de una esfera con radio r es undefined
    ¿Cuál es el volumen de una esfera con el radio 5?
  2. Supongamos que el precio de un libro es de $24.95, pero las librerías tienen un 40% de descuento. Costos de envío $3 para la primera copia y 75 centavos por cada copia adicional. ¿Cuál es el costo total al por mayor para 60 copias?
  3. Si dejo mi casa a las 6:52 am y corro 1 milla a un paso fácil (8:15 por milla), luego 3 millas al tempo (7:12 por milla) y 1 milla a paso fácil otra vez, ¿A que hora llego a casa para el desayuno?

Deja un comentario

Diseña un sitio como este con WordPress.com
Comenzar