Primeros pasos programando en Python El objetivo de este taller es que aprendan las primeras herramientas de programación. Cada grupo deberá ir leyendo este material en el taller y haciendo los ejemplos, ejercicios, sugerencias, etc. Para el Taller próximo deberán entregar un informe con dos ejercicios que se detallan al final del material. En el informe deberán poner cual es el objetivo del ejercicio, explicar lo que hicieron (la solución) y poner el código que escribieron para esos ejercicios con comentarios explicativos. Los docentes al inicio del taller 2 leerán estos informes y les harán preguntas los integrantes de los grupos ( las preguntas serán individuales). Las preguntas serán sobre los ejercicios que entregaron o sobre cualquier otro tema o ejercicio de este material. Expresiones Una expresión es el valor de un dato o de un conjunto de operaciones que dan un valor. Ejemplos de expresiones: 1 + 4 * 3 42 Se pueden usar operaciones aritméticas: + - * / suma, resta, multiplicación, división. % módulo (resto de una división entera) ** exponenciación La precedencia es el orden en el cual las operaciones se realizan. Los operadores: * / % ** tienen una mayor precedencia que: + -. Por ejemplo: 1 + 3 * 4 is 13. Los paréntesis pueden ser usados para forzar un orden de las operaciones: (1 + 3) * 4 is 16. Cuando se dividen enteros con /, el cociente también es un entero. Por ejemplo: 14/4 da como resultado 3, 1425/27 da como resultado 52, 35 / 5 es 7, 84 / 10 es 8, 156 / 100 es 1. El operador % calcula el resto de una división de enteros. Por ejemplo: 14%3 es 2, 218%5 es 3. Python también permite operar con números reales. Ejemplos: 6.022-15.9997 42.0 2.143e17. Los operadores + - * / % ** ( ) todos funcionan para reales. El operador / en este caso produce el valor real de la división: 15.0 / 2.0 es 7.5 Las reglas de precedencia también se aplican a los reales: se evalúa ( ) antes de * / % antes de + -. Cuando se mezclan enteros y reales el resultado es real. Por ejemplo: 1 / 2.0 is 0.5 La conversión ocurre por operador. Por ejemplo: 7 / 3 * 1.2 + 3 / 2 por la precedencia se transforma en 2 * 1.2 + 3 / 2 que se transforma en 2.4 + 3 / 2 que se transforma en 2.4 + 1 y el resultado final es 3.4.
Python tiene una biblioteca de funciones matemáticas denominada math que contiene muchas funciones de cálculo. En la siguiente tabla se listan algunas de ellas. Además en esta biblioteca se puede referir al número pi simplemente escribiendo pi y lo mismo al número e. Para usar estos comandos se debe importar una biblioteca de python que se llama math. Para importar esa biblioteca antes de usarla en el programa se debe importar. Esto se hace con la siguiente instrucción: from math import * Ejercicio 1: A) Escriba un programa o programe en el intérprete de Python el siguiente código. Luego ejecute el programa verificando que da los valores que Usted espera: from math import * print max(3.91,4.2) print log(e) B) La función pow(x,y) de la biblioteca math, eleva x a la y. Escriba en un programa el siguiente código y corra dicho programa. from math import * print pow(16,(1 / 2)) obtuvo el resultado que esperaba? Qué debería modificar para obtener el resultado que Ud. esperaba?
Variables Una variable es una porción de memoria que se utiliza para almacenar un valor y a la que se le da un nombre. Se utiliza habitualmente para realizar el siguiente conjunto de operaciones en un programa: Calcular el resultado de una expresión, Almacenar dicho resultado en una variable, Usar esa variable luego en el programa. Instrucción de asignación: Esta instrucción almacena un valor en una variable. Sintaxis: nombre = valor, donde valor es la cantidad a almacenar en memoria y nombre es el nombre de la variable, es decir el nombre con el que vamos a referirnos a ese lugar de memoria en el programa. x = 5 Luego de ser asignada, a la variable a la que se le ha dado un valor puede ser usada en expresiones como por ejemplo x + 4 cuyo resultado es 9. Ejercicio 2: A) Escribir un programa que permita evaluar diferentes puntos (x) de una ecuación cuadrática (ax²+bx+c) para a, b, y c dados. B) Escriba un programa que inicialmente asigne dos valores a dos variables x e y. Por ejemplo: x=5 y=7 Luego de estas asignaciones, escriba un programa que intercambie los valores de las variables x e y (cualquiera sea el valor que tengan inicialmente al final debe quedar en x lo que inicialmente estaba en y, y en y lo que estaba en x). Imprima a la consola x e y para ver que quedaron con los valores intercambiados. La instrucción print La instrucción print que ya hemos utilizado, produce una salida de texto a la consola. Sintaxis: print "Mensaje" print Expression Imprime el texto dado en un mensaje o el valor de una expresión en la consola, y mueve el cursor a la siguiente línea. print Item1, Item2,..., ItemN Imprime muchos mensajes y/o expresiones en la misma línea.
La instrucción print al final del último argumento salta a una nueva línea. En algunos casos nos interesa que el cursor quede en la misma línea. Para eso se puede poner una coma al final del último argumento. print "Hola, mundo!" edad = 45 print "A Usted le faltan", 60 - edad, "años para jubilarse" Hola, mundo! A Usted le faltan 15 años para jubilarse Si se escribe el siguiente código print '* ' print '* ' En la salida se obtendrá * * Sin embargo si se escribe: print '* ', print '* ', En la salida se obtendrá ** La instrucción input La instrucción input lee un número desde la entrada del usuario (teclado). Ud. puede asignar el valor ingresado en una variable. Por ejemplo: edad = input("cuantos años tiene? ") print "Su edad es", edad print "A Usted le faltan", 60 - edad, "años para jubilarse" Cuantos años tiene? 18 Su edad es 18 A Usted le faltan 42 años para jubilarse Ejercicio 3: A) Escriba un programa que pida un número y devuelva el número al cuadrado, al cubo, el logaritmo neperiano y su raíz cuadrada. B) Escriba un programa que pida el ancho y el largo de un rectángulo y devuelva su área y su perímetro. Escriba otro programa que pida el radio de una círculo y devuelva su área y su circunferencia.
La instrucción for La instrucción for realiza un bucle en el cual repite un conjunto de instrucciones. Sintaxis: for nombrevariable in grupodevalores : En esta instrucción aparece por primera vez la importancia de la indentación para Python. Todas las instrucciones que deseamos que se repitan deben ir indentadas con un tabulador o espacios (y todas con la misma cantidad). Como se comentó anteriormente es razonable usar siempre el tabulador pero configurar que el tabulador inserte un conjunto de espacios. Observar que los : son obligatorios para indicar que allí termina esa la instrucción for. nombrevariable le da un nombre a cada valor, por lo tanto se lo puede usar en las instrucciones. grupodevalores puede ser un rango de enteros especificados en una función range. for x in range(1, 6): print x, " su cuadrado es ", x * x 1 su cuadrado es 1 2 su cuadrado es 4 3 su cuadrado es 9 4 su cuadrado es 16 5 su cuadrado es 25 La función range La función range especifica una rango de enteros. range(start, stop) especifica todos los enteros entre start (inclusive) y stop (exclusive). Puede aceptar también un tercer parámetro que especifica el salto entre valores. range(start, stop, step) los enteros entre start (inclusive) y stop (exclusive) cada step for x in range(5, 0, -1): print x print "FIN!" 5 4 3 2 1
FIN! Algunos loops calculan incrementalmente un valor que es inicializado fuera del loop. sum = 0 for i in range(1, 11): sum = sum + (i * i) print "la suma de los primeros 10 cuadrados es", sum salida: la suma de de los primeros 10 cuadrados es 385 Ejercicio 4: A) Escribir un programa en Python que reciba un entero ingresado por el usuario y calcule el factorial de dicho entero. Verifique que el programa funciona correctamente. La instrucción if La instrucción if ejecuta un grupo de instrucciones solo si una cierta condición es verdadera. En otro caso, las instrucciones se saltean. Sintáxis: if condition: Observar nuevamente que las instrucciones que queremos que se ejecuten si se cumple la condición van debajo del if y todas indentadas el mismo valor nota = 6 If nota > 2.0: print "El curso fue aprobado" if/else : Ejecuta un bloque de instrucciones si una cierta condición es verdadera y un segundo bloque de instrucciones si la condición es falsa. Sintaxis: if condition: else: Observar nuevamente la indentación y los : luego del if y el else. nota = 2 if nota > 2.0: print "el curso fue aprobado!" else:
print "Ud. ha perdido el curso." Múltiples condiciones se pueden encadenar con elif ("else if"): if condition: elif condition: else: Nuevamente observar la indentación y los : que son obligatorios para que el programa se ejecute. Ejercicio 5: A) Escriba un programa que cuente el número de divisores de un número entero e informe si el número es primo o no. Cuál es su número favorito? 24 24 tiene 8 divisores 24 no es primo Cuál es su número favorito? 31 31 tiene dos divisores 31 es primo Para contar el número de divisores de un entero n, use un bucle que teste todos los enteros menores o iguales que n para ver si n es divisible por él. La instrucción while La instrucción while ejecuta un grupo de instrucciones mientras una condición sea verdadera. Es similar a la instrucción for pero en algunos casos es más conveniente usar una u otra dependiendo de lo que se quiera hacer. Sintáxis: while condition: number = 1 while number < 200: print number, number = number * 2 1
2 4 8 16 32 64 128 Expresiones Lógicas Muchas expresiones lógicas usan operadores relacionales: Expresiones lógicas pueden ser combinadas con operadores lógicos Ejercicio 6: A) Escribir un programa Python que imprima a pantalla el siguiente dibujo. Será necesario utilizar dos bucles anidados. Recordar que para lograr que print no cambie de línea se debe poner una coma al final de la instrucción print * * *
* * B) Escribir un programa Python que imprima a pantalla el siguiente dibujo. *** ***** Cada grupo debe entregar el código, así como la explicación del mismo, de los ejercicios 5 y 6 en un informe para el siguiente taller. Los docentes corregirán estos informes y pasarán a hacer preguntas individuales de los ejercicios 1 a 6 o de los temas de este material durante el taller 2.