ING1310 – Introducción a la Computación Python

Anuncio
Python
Ejercicio
ING1310 – Introducción a la Computación
Python
Conceptos Básicos
Carlos Reveco
creveco@dcc.uchile.cl
careveco@miuandes.cl
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
Python
Motivación
Variables
I/O Consola
Control de Flujo
Funciones, Métodos y Clases
Módulos
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
Motivación
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 programación: Python
• Especı́ficamente en su versión 2.6
• Su uso sigue siendo para programar
• Los grandes cambios están en la sintáxis,
• 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
¿Qué 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 matemáticas puras,
• reflexivo → permite el acceso y modificación de si mismo.
• Python es un lenguaje interpretado (script):
• Su ejecución se realiza mediante un intérprete (no hay compilación),
• manejo de tipos de forma dinámica,
• multiplataforma,
• “pierde eficiencia”
C.Reveco
Facultad de Ingenierı́a/Universidad de los Andes/Chile
ING1310– Clase 23
6 / 38
Python
Ejercicio
Y?
Y hay más cosas que lo hacen especial:
• open source → gratis
• desarrollo constante que lo mantiene actualizado
• comunidad activa en el desarrollo de módulos para distintos problemas
• programas con poco overhead, fácil para crear programas desechables
• estable
• manejo automático de memoria mediante conteo de referencias y
recolección 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 código anterior funciona sin necesidad de nada más.
C.Reveco
Facultad de Ingenierı́a/Universidad de los Andes/Chile
ING1310– Clase 23
8 / 38
Python
Ejercicio
Detalles sintácticos básicos
• El término de una sentencia está 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 paréntesis de llave
C.Reveco
Facultad de Ingenierı́a/Universidad de los Andes/Chile
ING1310– Clase 23
9 / 38
Python
Ejercicio
Operadores básicos
• Se pueden utilizar los operadores aritméticos binarios clásicos (+, −,
∗, /, %)
• // → división entera,
• ∗∗ → elevado a
• También operadores unitarios clásicos (+, −)
• Los operadores de comparación básicos son ==, ! =, <, >, <=, >=
• is [not] → comparación a nivel de objetos
• [not] in → evaluación 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 dinámicos
• 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 también.
• 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: Declaración de variables
a = 2
b = a + 4
a = " un texto "
• El código anterior funciona sin necesidad de nada más.
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 en
cualquier 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 instrucción print seguida
por lo que se quiere mostrar.
• Es una instrucción, no un método.
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 múltiples 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 información del usuario existe el método raw input
• Recibe como parámetro 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 sintáxis es un poco diferente
Sintáxis Python: Condiciones
if condicion :
...
elif condicion :
...
else :
...
• Luego las instrucciones se escriben un tab más adentro para cada
bloque
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
Sintáxis Python: Ciclos
while condicion :
...
for x in lista :
...
• El for difiere un poco del uso común 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 método range es una forma sencilla de crear una secuencia.
• Lista de números que sigue un patrón fijo.
• Tiene 3 alternativas para los parámetros:
• máximo (no incluı́do)
• mı́nimo, máximo (no incluı́do)
• mı́nimo, máximo (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, Métodos y Clases
C.Reveco
Facultad de Ingenierı́a/Universidad de los Andes/Chile
ING1310– Clase 23
25 / 38
Python
Ejercicio
Métodos → Funciones
• A los métodos 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
Sintáxis Python: Función
def nombreFuncion ( parametros ) :
pass
• pass se utiliza para dejar una función sin contenido.
C.Reveco
Facultad de Ingenierı́a/Universidad de los Andes/Chile
ING1310– Clase 23
26 / 38
Python
Ejercicio
Funciones
• Los parámetros de la función no llevan tipo
• La función tampoco tiene tipo de retorno
• Se pueden retornar múltiples valores utilizando el comando return
• Los valores van separados por coma
• Se deben recibir en múltiples variables
• Siempre hay retorno:
• Si no se retorna explı́citamente, entonces la función 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
Sintáxis Python: Clase
class NombreClase :
pass
• No se declaran atributos.
• No se maneja visibilidad de los componentes.
• Todos los métodos deben recibir como primer parámetro el elemento
self
• El self mantiene la información de la clase,
• si se quiere un atributo se hace self.nombreAtributo,
• para invocar los métodos también se debe utilizar self
• Para el constructor se crea un método de nombre
C.Reveco
Facultad de Ingenierı́a/Universidad de los Andes/Chile
init
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 p ro me d io Pr ue b as ( self ) :
return ( self . p1 + self . p2 ) /2
def promedio ( self ) :
promPruebas = self . pr o me di oP r ue ba s ()
prom = promPruebas *0.6 + self . ex *0.4
return prom
alumno = Alumno ( " Pedrito " , 4.5 , 3.5 , 5.6)
print alumno . p ro me d io Pr ue b as ()
print alumno . promedio ()
C.Reveco
Facultad de Ingenierı́a/Universidad de los Andes/Chile
ING1310– Clase 23
32 / 38
Python
Ejercicio
Python
Módulos
C.Reveco
Facultad de Ingenierı́a/Universidad de los Andes/Chile
ING1310– Clase 23
33 / 38
Python
Ejercicio
Múltiples archivos
• Dentro de python cada archivo es llamado un módulo
• Cada módulo puede contener funciones, clases, . . .
• Como es un lenguaje interpretado, se ejecuta un módulo (no hay
proyectos)
• Si quiero usar otros módulos debo incorporarlos explı́citamente
mediante el comando import
• El nombre del archivo corresponderá al nombre del módulo (sin la
extensión)
• 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 un
máximo.
Su clase debe tener dos métodos:
• Retorna la suma de los números en el rango con salto 1, y también
retorna la multiplicación de esos mismos valores.
• Recibe un entero como salto, y retorna la suma de la secuencia
formada por los números entre mı́nimo y máximo, con una distancia
de salto entre ellos.
Su programa debe pedirle al usuario el mı́nimo y el máximo, crear un objeto
de su clase y mostrar el resultado de la invocación del primer método. Luego,
pedir un salto al usuario e invocar el método que suma los valores con el
salto, 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 s u m a M u l t i p l i c a c i o n ( 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 . s u m a M u l t i p l i c a c i o n ()
print " La suma es " , suma , " , y la mu ltiplica cion es " , mult
print " Ingrese un salto : "
salto = int ( raw_input () )
res = r . suma ( salto )
print " El resultado de la suma con salto es " , res
Descargar