> Manuales > Python
|
|
|
|
|
Capítulo 2: Variables, expresiones y declaraciones2.1 Valores y tiposUn valor es una de las cosas básicas con las que trabaja un programa; pueden ser valores, por ejemplo, una letra o un número. Los valores que hemos visto hasta ahora son Estos valores pertenecen a diferentes tipos:
>>> print 4 4 Si no estás seguro de cuál es el tipo de una variable, el intérprete te lo dirá.
>>> type('¡Hola, mundo!')
<type 'str'>
>>> type(17)
<type 'int'>
No es precisamente chocante que toda cadena (en inglés, string) pertenezca al tipo >>> type(3.2) <type 'float'> ¿Qué pasa con valores como '17' y '3.2'? Parecen números, pero están entre comillas, como las cadenas.
>>> type('17')
<type 'str'>
>>> type('3.2')
<type 'str'>
Son cadenas. Al escribir un gran número entero, puedes tener la tentación de utilizar comas entre grupos de tres dígitos (especialmente si piensas en inglés, ya que en español los grupos de tres dígitos no se separan mediante comas, sino mediante puntos), como en 1,000,000. Esto no representaría correctamente un entero en Python, pero, aun así, de algún modo, también sería correcto: >>> print 1,000,000 1 0 0 ¡Bueno, no es lo que esperábamos! Python interpreta 1,000,000 como una lista de enteros separada por comas, e imprime los enteros separados por un espacio. Este es el primer ejemplo que hemos visto de un error semántico: el código se ejecuta sin producir ningún mensaje de error, pero no hace lo "correcto". 2.2 VariablesUna de las características más poderosas de un lenguaje de programación es la capacidad de manejar variables. Una variable es un nombre que hace referencia a un valor. La instrucción de asignación crea nuevas variables y les asigna valores: >>> message = 'Y ahora, algo totamente distinto' >>> n = 17 >>> pi = 3.1415926535897931 Este ejemplo hace tres asignaciones. Primero asigna una cadena a una nueva variable llamada Una forma de representar las variables en papel es escribir el nombre con una flecha que apunta a el valor de la variable. Este tipo de figura, que se llama diagrama de estado, muestra el estado en que se encuentra cada variable (pensar en ello como en el estado de ánimo de la variable). Este diagrama muestra el resultado de las asignaciones de valor:
Podemos imprimir el valor de una variable: >>> print n 17 >>> print pi 3.14159265359 El tipo de una variable es el tipo del valor al que se refiere. >>> type(message) <type 'str'> >>> type(n ) <type 'int'> >>> type(pi) <type 'float'> 2,3 Nombre de variables y palabras claveNormalmente los programadores ponen a las variables nombres con significado, es decir, el nombre mismo de la variable informa sobre el sentido de la variable. Los nombres de las variables puede ser arbitrariamente largos. Pueden contener tanto letras como números, pero deben comenzar siempre con una letra. Aunque se pueden usar letras mayúsculas, normalmente no se hace. Si aun así decides hacerlo, recuerda que Python distingue entre maýusculas y minúsculas. El caracter de subrayado (_) pueden aparecer en un nombre de variable. A menudo se utiliza nombres con varias palabras, como Si das un nombre no permitido a una variable, obtendrás un error de sintaxis: >>> 76trombones = 'big parade' SyntaxError: invalid syntax >>> more@ = 1000000 SyntaxError: invalid syntax >>> class = 'Advanced Theoretical Herpetology' SyntaxError: invalid syntax
Resulta que la Python tiene 31 palabras reservadas: and del from not while as elif global or with assert else if pass yield break except import print class exec in raise continue finally is return def for lambda try Quizá quieras tener a mano esta lista. Si el intérprete se te queja del nombre de alguna variable y no sabes por qué, comprueba si está en la lista. 2.4 DeclaracionesUna declaración es una instrucción que el intérprete de Python puede ejecutar. Hemos visto dos tipos de declaraciones: de impresión y de asignación. Cuando escribes una declaración en la línea de comandos, Python ejecuta y muestra el resultado, si lo hubiere. Un script contiene por lo general una secuencia de declaraciones. Si hay más de una declaración, los resultados aparecerán de uno en uno, según se vayan ejecutando. Por ejemplo, el script: print 1 x = 2 print x Da como resultado: 1 2 La declaración de asignación no produce ninguna salida. 2.5 Operadores y operandosLos operadores son símbolos especiales que representan cálculos, como la adición y la multiplicación. Los valores que toma el operador se llaman operandos. Los siguientes ejemplos muestran operadores aritméticos: 20 +32 hora - 1 hora * 60 + minuto minute/60 5 ** 2 (5 +9) * (15-7) Los símbolos +, -, y /, y el uso de paréntesis para agrupar, significan en Python lo mismo que en matemáticas. El asterisco (*) es el símbolo de la multiplicación, y ** es el símbolo de potencia. Cuando un nombre de variable aparece en el lugar de un operando, es reemplazado por su valor antes de realizar la operación. Suma, resta, multiplicación y potencia hacen lo que se supone que han de hacer, pero la división puede dar sorpresas. La siguiente operación tiene un resultado imprevisto: >>> minute = 59 >>> minute/60 0 Cuidado: este comportamiento podría cambiar en futuras versiones de Python. El valor de la variable Cuando los dos operandos son enteros, el resultado debe ser un número entero; la división entera siempre elimina la parte fraccionaria, de modo que en el ejemplo el resultado se redondea a 0. Si cualquiera de los operandos es un número de coma flotante, Python realiza la división de coma flotante, y el resultado es un número de flotante: >>> minute/60.0 0.98333333333333328 2.6 ExpresionesUna expresión es una combinación de valores, variables y operadores. Si escribes una expresión en la línea de comandos, el intérprete la evalúa y muestra el resultado: >>> 1 + 1 2 Aunque las expresiones pueden contener valores, variables y operadores, no todas las expresiones contiene todos estos elementos. Un valor por sí mismo, o una variable, se consideran expresiones. >>> 17 17 >>> X 2 En un script, una expresión es en sí misma una declaración válida, pero no hace nada. El siguiente script no devuelve ningún resultado: 17 3,2 "¡Hola, Mundo!" 1 + 1 Si quiere que el script muestre los valores de estas expresiones, tienes que utilizar la instrucción de impresión. 2.7 Orden de las operacionesCuando en una expresión aparece más de una expresión, el orden en que se evalúan las expresiones depende de las llamadas "reglas de precedencia". Para los operadores matemáticos, Python sigue las reglas matemáticas. El acrónimo PEMDAS es una forma útil de recordarlas. Para recordar el acrónimo PEMDAS, puedes probar a recordar la frase "Pobres estúpidos; me dan asco. Sí". Si también tienes problemas para recordar la frase "Pobres estúpidos; me dan asco. Sí.", olvídate de trucos pnemotécnicos, e intenta memorizar las reglas de precedencia.
2.8 Operaciones con strings (cadenas)En general, no es posible realizar operaciones matemáticas con cadenas, aunque sean cadenas de números. Los siguientes ejemplos representan operaciones incorrectas: '2'-'1' 'eggs'/'easy' 'third'*'a charm' El operador primero = 'garganta' segundo = 'warbler' print primero + segundo La salida de este programa es El operador * también funciona con cadenas; ejecuta una repetición de cadenas. Por ejemplo, Por una parte, este uso de 2,9 ComentariosCuánto más largo y más complejo es un programa, más difícil de leer. Los lenguajes formales son densos, y con frecuencia es difícil leer una porción de código y entender qué está haciendo o por qué lo está haciendo. Por esta razón, es muy aconsejable añadir notas a los programas para explicar en lenguaje natural lo que está haciendo el programa. Estas notas se llaman comentarios, y están señalizados con el signo # computar la fracción de hora que ha transcurrido percentage = (minute * 100) / 60 En este caso, el comentario aparece en una línea completa. También puedes poner comentarios al final de una línea: percentage = (minute * 100) / 60 # fracción de horaTodo, desde el # hasta el final de la línea se ignora, que no tiene ningún efecto sobre el programa. Los comentarios son más útiles cuando el documento no evidentes características del código. Es razonable suponer que el lector puede adivinar lo que significa el código, es mucho más útil para explicar por qué. El siguiente comentario, en cambio, es redundante e inútil: v = 5 # asignar 5 a v Sin embargo, este otro comentario contiene información útil que no está en el código: v = 5 # velocidad en metros / segundo. Utilizar buenos nombres para las variables puede reducir la necesidad de comentarios (he aquí una ventaja), pero los nombres largos pueden generar expresiones complejas difícil de leer (aquí, una desventaja). 2.10 DepuraciónLlegados a este punto, el error de sintaxis que tienes más probabilidades de cometer es el relacionado con nombres de variable incorrectos, como Si colocas un espacio en el nombre de una variable, Python interpretará que se trata de dos operandos sin operador: >>> mal nombre = 5 SyntaxError: invalid syntax Para los errores de sintaxis, los mensajes de error no ayudan mucho. La mayoría de los mensajes son El error en tiempo de ejecución que cometerás con mayor probabilidad es "uso antes de la definición;", es decir, tratar de utilizar una variable antes cuyo valor aún no ha sido asignado. Esto puede suceder si escribes mal el nombre de una variable: >>> principal = 327.68 >>> interest = principol * rate NameError: name 'principol' is not defined Los nombres de las variables distinguen entre mayúsculas y minúsculas, así que En este momento la causa más probable de cometer un error semántico es alterar el orden de las declaraciones. Por ejemplo, para evaluar 1/2π (uno dividido entre 2π), puedes tener la tentación de escribir: >>> 1 / 2 * math.pi Pero la división se realizará en primer lugar, por lo que obtendrías como resultado π/2, que no es lo mismo. Lamentablemente, el intérprete de Python no tiene forma de saber qué pretendías escribir, de modo que en este caso no recibirías ningún mensaje de error, sino una respuesta errónea. Y todo esto nos lleva al Segundo Teorema de Depuración: La única cosa peor que un mal mensaje de error es la ausencia de mensaje de error. 2.11 Glosariovalor: una de las unidades básicas de información, como un número o una cadena, que será manipulado por el programa. tipo: una categoría de valores. Los tipos que hemos visto hasta ahora son enteros (tipo entero: un tipo de dato que representa números enteros. de coma flotante: un tipo que representa números con parte fraccionaria. cadena: un tipo que representa secuencias de caracteres. variable: un nombre que hace referencia a un valor. declaración: una sección de código que representa una orden o acción. Hasta ahora, las declaraciones que hemos visto son las asignaciones y las instrucciones de impresión. asignación: una declaración 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 las variables se refieren. palabra clave: una palabra reservada utilizada por el compilador para analizar un programa. No se pueden utilizar palabras clave como operador: un signo que representa un proceso computacional simple, como la adición, la multiplicación o la concatenación de cadenas. operando: uno de los valores con los que opera un operador. división entera: la operación que divide dos números y descarta la parte decimal. expresión: una combinación de variables, operadores, y los valores que representa el resultado de un solo valor. evaluar: simplificar una expresión mediante la realización de las operaciones, con el objeto de obtener un valor único. reglas de precedencia: el conjunto de normas que rigen el orden en que se evalúan las expresiones que contienen varios operadores y operandos. concatenar: unir dos operandos uno tras otro. comentario: información contenida en un programa, destinada a otros programadores (o a quien lea el código fuente) y sin efecto en la ejecución del programa 2.12 EjerciciosPrácticas utilizando el intérprete de Python como calculadora:
|
|
