Python Ejercicio
ING1310 – Introduccion a la Computacion
PythonConceptos Basicos
Carlos [email protected]
Facultad de Ingenierıa/Universidad de los Andes/Chile
Rev : 254
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 1 / 38
Python Ejercicio
En esta clase
1 PythonMotivacionVariablesI/O ConsolaControl de FlujoFunciones, Metodos y ClasesModulos
2 Ejercicio
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 2 / 38
Python Ejercicio
Python
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 3 / 38
Python Ejercicio
Python
Motivacion
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 4 / 38
Python Ejercicio
Nuevo lenguaje, mismo modo de pensar
• Veremos un nuevo lenguaje de programacion: Python• Especıficamente en su version 2.6
• Su uso sigue siendo para programar• Los grandes cambios estan en la sintaxis,• la forma de pensar se mantiene.
• Ustedes no aprendieron Java, aprendieron a programar.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 5 / 38
Python Ejercicio
¿Que tiene de diferente?
• Python es un lenguaje multiparadigma• orientado a objetos → puede tener clases y objetos,• imperativo → puede tener sentencias que cambien el estado del
programa,• funcional → puede tener funciones matematicas puras,• reflexivo → permite el acceso y modificacion de si mismo.
• Python es un lenguaje interpretado (script):• Su ejecucion se realiza mediante un interprete (no hay compilacion),• manejo de tipos de forma dinamica,• multiplataforma,• “pierde eficiencia”
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 6 / 38
Python Ejercicio
Y?
Y hay mas cosas que lo hacen especial:
• open source → gratis
• desarrollo constante que lo mantiene actualizado
• comunidad activa en el desarrollo de modulos para distintos problemas
• programas con poco overhead, facil para crear programas desechables
• estable
• manejo automatico de memoria mediante conteo de referencias yrecoleccion de basura
• rendimiento superior a otros lenguajes interpretados
• extensiones con C o C++
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 7 / 38
Python Ejercicio
Ejemplo: Hola Mundo en Python
print "Hola Mundo!"
• El codigo anterior funciona sin necesidad de nada mas.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 8 / 38
Python Ejercicio
Detalles sintacticos basicos
• El termino de una sentencia esta dado por el salto de lınea• no se necesita un caracter especial como en Java (;)
• Los bloques se crean mediante un Tab• no se utilizan los parentesis de llave
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 9 / 38
Python Ejercicio
Operadores basicos
• Se pueden utilizar los operadores aritmeticos binarios clasicos (+, −,∗, /, %)
• // → division entera,• ∗∗ → elevado a
• Tambien operadores unitarios clasicos (+, −)
• Los operadores de comparacion basicos son ==, ! =, <, >, <=, >=• is [not] → comparacion a nivel de objetos• [not] in → evaluacion sobre colecciones (incluidos strings)• Los operadores booleanos binarios son and, or, y not
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 10 / 38
Python Ejercicio
Python
Variables
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 11 / 38
Python Ejercicio
Tipos dinamicos
• No es necesario darles un tipo explıcito a las variables.• Esto implica que no se declaran, simplemente se usan,• desde su primer uso comienzan a existir.
• El contenido de la variable si tiene un tipo.• El contenido puede cambiar,• y el tipo de ese contenido tambien.
• El tipo influye en las operaciones que se pueden realizar.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 12 / 38
Python Ejercicio
Ejemplo: Declaracion de variables
a = 2
b = a + 4
a = "un texto"
• El codigo anterior funciona sin necesidad de nada mas.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 13 / 38
Python Ejercicio
Alcance (scope)
• Las variables viven dentro de su bloque.
• Si una variable se declara fuera de todo, entonces puede usarse encualquier parte.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 14 / 38
Python Ejercicio
Python
I/O Consola
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 15 / 38
Python Ejercicio
Output
• Para mostrar algo en consola utilizamos la instruccion print seguidapor lo que se quiere mostrar.
• Es una instruccion, no un metodo.
Ejemplo: Imprimiendo en la consola
print "Hola Mundo!"
a = "Ingenieria"
print a
a = 2*len(a)
print a
• len → largo de un string, o lista, o cualquier cosa dimensionable.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 16 / 38
Python Ejercicio
Output
• Para imprimir multiples datos se utiliza la coma (,)
Ejemplo: Imprimiendo en la consola
a = 8
b = 6
c = ’lala’
print "Los valores son: ", a, b, c
• Para los strings se puede usar tanto la comilla doble como la simple.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 17 / 38
Python Ejercicio
Input
• Para recibir informacion del usuario existe el metodo raw input
• Recibe como parametro un texto a mostrar.• Retorna lo ingresado por el usuario como texto.
Ejemplo: Recibiendo desde la consola
a = raw_input("Ingresa un numero:")
a = int(a)
print "Tu numero al cuadrado es: ", a**2
• int() → convierte el texto en entero.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 18 / 38
Python Ejercicio
Python
Control de Flujo
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 19 / 38
Python Ejercicio
Condiciones
• En python existen sentencias para if, else y else if
• La sintaxis es un poco diferente
Sintaxis Python: Condiciones
if condicion:
...
elif condicion:
...
else:
...
• Luego las instrucciones se escriben un tab mas adentro para cadabloque
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 20 / 38
Python Ejercicio
Ejemplo: Condiciones
edad = int(raw_input("Ingrese su edad"))
genero = raw_input("Ingrese su genero: (M)asculino o (
F)emenino")
if edad < 2:
print "Aun es un bebe"
elif edad < 12 and genero == "M":
print "Eres un chiquillo"
elif edad < 12 and genero == "F":
print "Eres una chiquilla"
elif edad < 18:
print "Te falta poco para ser mayor de edad"
else:
print "Eres mayor de edad"
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 21 / 38
Python Ejercicio
Ciclos
• En python existen sentencias para while y for
Sintaxis Python: Ciclos
while condicion:
...
for x in lista:
...
• El for difiere un poco del uso comun en otros lenguajes:• En python siempre itera sobre una lista.• En cada pasada x cambia al siguiente valor de la lista.• Dentro del ciclo no se debe modificar la lista
• Si se puede modificar su contenido.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 22 / 38
Python Ejercicio
Generar secuencia para for
• El metodo range es una forma sencilla de crear una secuencia.• Lista de numeros que sigue un patron fijo.
• Tiene 3 alternativas para los parametros:• maximo (no incluıdo)• mınimo, maximo (no incluıdo)• mınimo, maximo (no incluıdo), salto
Ejemplo: Condiciones
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range (10)
# [5, 6, 7, 8, 9]
range(5, 10)
# [-50, -30, -10, 10, 30, 50, 70, 90]
range(-50, 100, 20)
• El # sirve para hacer comentarios• Es posible hacer print directamente sobre una lista.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 23 / 38
Python Ejercicio
Ejemplo: Control de Flujo
max = int(raw_input("Ingresa el maximo: "))
min = int(raw_input("Ingresa el minimo: "))
if max < min:
print "Datos incorrectos"
else:
res = 0
for x in range(min , max):
res = res + x
print res
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 24 / 38
Python Ejercicio
Python
Funciones, Metodos y Clases
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 25 / 38
Python Ejercicio
Metodos → Funciones
• A los metodos se los asocia con OOP, ya que son parte de una clase.
• Cuando no son parte de una clase se suele llamarles funciones.
• En python pueden haber funciones.• Se utiliza el comando def para declararlas
Sintaxis Python: Funcion
def nombreFuncion(parametros):
pass
• pass se utiliza para dejar una funcion sin contenido.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 26 / 38
Python Ejercicio
Funciones
• Los parametros de la funcion no llevan tipo
• La funcion tampoco tiene tipo de retorno• Se pueden retornar multiples valores utilizando el comando return
• Los valores van separados por coma• Se deben recibir en multiples variables
• Siempre hay retorno:• Si no se retorna explıcitamente, entonces la funcion retorna None
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 27 / 38
Python Ejercicio
Ejemplo: Funciones
def metodo1 ():
print "metodo1"
def metodo2(n):
return n*4
def metodo3(n, m):
return n+1, m+2
def metodo4(n):
if n > 0:
return n*n
metodo1 ()
print metodo2 (2)
print metodo3(3, 5)
print metodo4 (3)
print metodo4 (-2)
• Las funciones deben ser declarados antes de su uso.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 28 / 38
Python Ejercicio
Ejemplo: Funciones
def minimoYmaximo(n, m):
if n <= m:
return n, m
else:
return m, n
a = int(raw_input("Ingrese un numero: "))
b = int(raw_input("Ingrese otro numero: "))
min , max = minimoYmaximo(a, b)
print "El minimo es ", min , " y el maximo es ", max
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 29 / 38
Python Ejercicio
Clases
• Para definir clases se utiliza el comando class
Sintaxis Python: Clase
class NombreClase:
pass
• No se declaran atributos.
• No se maneja visibilidad de los componentes.
• Todos los metodos deben recibir como primer parametro el elementoself
• El self mantiene la informacion de la clase,• si se quiere un atributo se hace self.nombreAtributo,• para invocar los metodos tambien se debe utilizar self
• Para el constructor se crea un metodo de nombre init
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 30 / 38
Python Ejercicio
Crear objeto
• Simplemente se asigna a la variable el nombre de la clase
• no se usan comandos adicionales.
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 31 / 38
Python Ejercicio
Ejemplo: Clases
class Alumno:
def __init__(self , nombre , p1 , p2 , ex):
self.nombre = nombre
self.p1 = p1
self.p2 = p2
self.ex = ex
def promedioPruebas(self):
return (self.p1 + self.p2)/2
def promedio(self):
promPruebas = self.promedioPruebas ()
prom = promPruebas *0.6 + self.ex*0.4
return prom
alumno = Alumno("Pedrito", 4.5, 3.5, 5.6)
print alumno.promedioPruebas ()
print alumno.promedio ()
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 32 / 38
Python Ejercicio
Python
Modulos
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 33 / 38
Python Ejercicio
Multiples archivos
• Dentro de python cada archivo es llamado un modulo
• Cada modulo puede contener funciones, clases, . . .
• Como es un lenguaje interpretado, se ejecuta un modulo (no hayproyectos)
• Si quiero usar otros modulos debo incorporarlos explıcitamentemediante el comando import
• El nombre del archivo correspondera al nombre del modulo (sin laextension)
• import funciones
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 34 / 38
Python Ejercicio
Ejercicio
C.Reveco Facultad de Ingenierıa/Universidad de los Andes/Chile ING1310– Clase 23 35 / 38
Ejercicio Python: Rango
Cree una clase Rango cuyo constructor reciba dos valores: un mınimo y unmaximo.Su clase debe tener dos metodos:
• Retorna la suma de los numeros en el rango con salto 1, y tambienretorna la multiplicacion de esos mismos valores.
• Recibe un entero como salto, y retorna la suma de la secuenciaformada por los numeros entre mınimo y maximo, con una distanciade salto entre ellos.
Su programa debe pedirle al usuario el mınimo y el maximo, crear un objetode su clase y mostrar el resultado de la invocacion del primer metodo. Luego,pedir un salto al usuario e invocar el metodo que suma los valores con elsalto, para mostrar el resultado entregado.
Ejercicio Python: Rango
Este es un ejemplo del input y output de su programa:
Ingrese el minimo:
5
Ingrese el maximo:
20
La suma es 180 , y la multiplicacion es 5068545850368000
Ingrese un salto:
3
El resultado de la suma con salto es 55
class Rango:
def __init__(self , min , max):
self.min = min
self.max = max
def sumaMultiplicacion(self):
suma = 0
mult = 1
for a in range(self.min , self.max):
suma += a
mult *= a
return suma , mult
def suma(self , salto):
res = 0;
for a in range(self.min , self.max , salto):
res += a
return res
print "Ingrese el minimo: "
min = int(raw_input ())
print "Ingrese el maximo: "
max = int(raw_input ())
r = Rango(min , max)
suma , mult = r.sumaMultiplicacion ()
print "La suma es", suma , ", y la multiplicacion es", mult
print "Ingrese un salto: "
salto = int(raw_input ())
res = r.suma(salto)
print "El resultado de la suma con salto es", res