ING1310 – Introducci´on a la Computaci´on
Python
Conceptos B´asicos Carlos Reveco [email protected] [email protected]Facultad de Ingenier´ıa/Universidad de los Andes/Chile
Rev: 254
En esta clase
1 Python Motivaci´on Variables I/O Consola Control de FlujoFunciones, M´etodos y Clases M´odulos
Python
Python
Nuevo lenguaje, mismo modo de pensar
• Veremos un nuevo lenguaje de programaci´on: Python
• Espec´ıficamente en su versi´on 2.6
• Su uso sigue siendo para programar
• Los grandes cambios est´an en la sint´axis,
• la forma de pensar se mantiene.
• Ustedes no aprendieron Java, aprendieron a programar.
¿Qu´
e 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´aticas puras,
• reflexivo→permite el acceso y modificaci´on de si mismo.
• Python es un lenguaje interpretado (script):
• Su ejecuci´on se realiza mediante un int´erprete (no hay compilaci´on),
• manejo de tipos de forma din´amica,
• multiplataforma,
Y?
Y hay m´as cosas que lo hacen especial:
• open source → gratis
• desarrollo constante que lo mantiene actualizado
• comunidad activa en el desarrollo de m´odulos para distintos problemas • programas con poco overhead, f´acil para crear programas desechables • estable
• manejo autom´atico de memoria mediante conteo de referencias y recolecci´on de basura
• rendimiento superior a otros lenguajes interpretados
• extensiones con C o C++
Ejemplo: Hola Mundo en Python
p r i n t " H o l a M u n d o ! "
Detalles sint´
acticos b´
asicos
• El t´ermino de una sentencia est´a 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´entesis de llave
Operadores b´
asicos
• Se pueden utilizar los operadores aritm´eticos binarios cl´asicos (+,−, ∗,/, %)
• //→divisi´on entera,
• ∗∗ →elevado a
• Tambi´en operadores unitarios cl´asicos (+,−)
• Los operadores de comparaci´on b´asicos son ==,! =,<,>,<=,>= • is [not]→comparaci´on a nivel de objetos
• [not] in→evaluaci´on sobre colecciones (incluidos strings)
Python
Variables
Tipos din´
amicos
• 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´en.
Ejemplo:Declaraci´onde variables a = 2
b = a + 4 a = " un t e x t o "
• El c´odigo anterior funciona sin necesidad de nada m´as.
Alcance (
scope
)
• Las variables viven dentro de su bloque.
• Si una variable se declarafuera de todo, entonces puede usarse en cualquier parte.
Python
I/O Consola
Output
• Para mostrar algo en consola utilizamos la instrucci´on printseguida por lo que se quiere mostrar.
• Es una instrucci´on, no un m´etodo.
Ejemplo: Imprimiendo en la consola
p r i n t " H o l a M u n d o ! " a = " I n g e n i e r i a "
p r i n t a a = 2* len ( a )
Output
• Para imprimir m´ultiples datos se utiliza la coma (,)
Ejemplo: Imprimiendo en la consola a = 8
b = 6 c = ’ l a l a ’
p r i n t " Los v a l o r e s son : ", a , b , c
• Para los strings se puede usar tanto la comilla doble como la simple.
Input
• Para recibir informaci´on del usuario existe el m´etodo raw input • Recibe como par´ametro un texto a mostrar.
• Retorna lo ingresado por el usuario como texto.
Ejemplo: Recibiendo desde la consola
a = r a w _ i n p u t (" I n g r e s a un n u m e r o : ") a = int ( a )
p r i n t " Tu n u m e r o al c u a d r a d o es : ", a **2
Python
Control de Flujo
Condiciones
• En python existen sentencias paraif,else yelse if
• La sint´axis es un poco diferente Sint´axis Python: Condiciones
if c o n d i c i o n : ... e l i f c o n d i c i o n : ... e l s e: ...
Ejemplo: Condiciones e d a d = int ( r a w _ i n p u t (" I n g r e s e su e d a d ") ) g e n e r o = r a w _ i n p u t (" I n g r e s e su g e n e r o : ( M ) a s c u l i n o o ( F ) e m e n i n o ") if e d a d < 2: p r i n t " Aun es un b e b e " e l i f e d a d < 12 and g e n e r o == " M ": p r i n t " E r e s un c h i q u i l l o " e l i f e d a d < 12 and g e n e r o == " F ": p r i n t " E r e s una c h i q u i l l a " e l i f e d a d < 18: p r i n t " Te f a l t a p o c o p a r a ser m a y o r de e d a d " e l s e: p r i n t " E r e s m a y o r de e d a d "
Ciclos
• En python existen sentencias parawhiley for
Sint´axis Python: Ciclos
w h i l e c o n d i c i o n : ...
for x in l i s t a : ...
• Elfordifiere un poco del uso com´un en otros lenguajes: • En python siempre itera sobre una lista.
• En cada pasadaxcambia al siguiente valor de la lista.
Generar secuencia para
for
• El m´etodo range es una forma sencilla de crear una secuencia. • Lista de n´umeros que sigue un patr´on fijo.
• Tiene 3 alternativas para los par´ametros: • m´aximo (no inclu´ıdo)
• m´ınimo, m´aximo (no inclu´ıdo)
• m´ınimo, m´aximo (no inclu´ıdo), salto
Ejemplo: Condiciones # [0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] r a n g e ( 1 0 ) # [5 , 6 , 7 , 8 , 9] r a n g e (5 , 10) # [ -50 , -30 , -10 , 10 , 30 , 50 , 70 , 90] r a n g e ( -50 , 100 , 20)
• El # sirve para hacer comentarios
• Es posible hacer printdirectamente sobre una lista.
Ejemplo: Control de Flujo max = int ( r a w _ i n p u t (" I n g r e s a el m a x i m o : ") ) min = int ( r a w _ i n p u t (" I n g r e s a el m i n i m o : ") ) if max < min : p r i n t " D a t o s i n c o r r e c t o s " e l s e: res = 0
for x in r a n g e ( min , max ) : res = res + x
Python
Funciones, M´etodos y Clases
M´
etodos
→
Funciones
• A los m´etodos 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 comandodefpara declararlas
Sint´axis Python: Funci´on
def n o m b r e F u n c i o n ( p a r a m e t r o s ) :
p a s s
Funciones
• Los par´ametros de la funci´on no llevan tipo • La funci´on tampoco tiene tipo de retorno
• Se pueden retornar m´ultiples valores utilizando el comandoreturn • Los valores van separados por coma
• Se deben recibir en m´ultiples variables • Siempre hay retorno:
• Si no se retorna expl´ıcitamente, entonces la funci´on retornaNone
Ejemplo: Funciones def m e t o d o 1 () : p r i n t " m e t o d o 1 " def m e t o d o 2 ( n ) : r e t u r n n *4 def m e t o d o 3 ( n , m ) : r e t u r n n +1 , m +2 def m e t o d o 4 ( n ) : if n > 0: r e t u r n n * n m e t o d o 1 () p r i n t m e t o d o 2 (2) p r i n t m e t o d o 3 (3 , 5) p r i n t m e t o d o 4 (3) p r i n t m e t o d o 4 ( -2)
Ejemplo: Funciones def m i n i m o Y m a x i m o ( n , m ) : if n <= m : r e t u r n n , m e l s e: r e t u r n m , n a = int ( r a w _ i n p u t (" I n g r e s e un n u m e r o : ") ) b = int ( r a w _ i n p u t (" I n g r e s e o t r o n u m e r o : ") ) min , max = m i n i m o Y m a x i m o ( a , b ) p r i n t " El m i n i m o es ", min , " y el m a x i m o es ", max
Clases
• Para definir clases se utiliza el comando class Sint´axis Python: Clase
c l a s s N o m b r e C l a s e :
p a s s
• No se declaran atributos.
• No se maneja visibilidad de los componentes.
• Todos los m´etodos deben recibir como primer par´ametro el elemento self
• Elself mantiene la informaci´on de la clase,
Crear objeto
• Simplemente se asigna a la variable el nombre de la clase
• no se usan comandos adicionales.
Ejemplo: Clases
c l a s s A l u m n o :
def _ _ i n i t _ _ ( self , nombre , p1 , p2 , ex ) : s e l f . n o m b r e = n o m b r e s e l f . p1 = p1 s e l f . p2 = p2 s e l f . ex = ex def p r o m e d i o P r u e b a s ( s e l f ) : r e t u r n ( s e l f . p1 + s e l f . p2 ) /2 def p r o m e d i o ( s e l f ) : p r o m P r u e b a s = s e l f . p r o m e d i o P r u e b a s () p r o m = p r o m P r u e b a s * 0 . 6 + s e l f . ex * 0 . 4 r e t u r n p r o m a l u m n o = A l u m n o (" P e d r i t o ", 4.5 , 3.5 , 5 . 6 ) p r i n t a l u m n o . p r o m e d i o P r u e b a s ()
Python
M´
odulos
M´
ultiples archivos
• Dentro de python cada archivo es llamado un m´odulo • Cada m´odulo puede contener funciones, clases, . . .
• Como es un lenguaje interpretado, se ejecuta un m´odulo (no hay proyectos)
• Si quiero usar otros m´odulos debo incorporarlos expl´ıcitamente
mediante el comandoimport
• El nombre del archivo corresponder´a al nombre del m´odulo (sin la extensi´on)
Ejercicio
Cree una clase Rangocuyo constructor reciba dos valores: un m´ınimo y un m´aximo.
Su clase debe tener dos m´etodos:
• Retorna la suma de los n´umeros en el rango con salto 1, y tambi´en retorna la multiplicaci´on de esos mismos valores.
• Recibe un entero comosalto, y retorna la suma de la secuencia
formada por los n´umeros entrem´ınimoym´aximo, con una distancia desalto entre ellos.
Su programa debe pedirle al usuario el m´ınimo y el m´aximo, crear un objeto de su clase y mostrar el resultado de la invocaci´on del primer m´etodo. Luego, pedir un salto al usuario e invocar el m´etodo que suma los valores con el salto, para mostrar el resultado entregado.
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
s e l f . min = min s e l f . max = max
def s u m a M u l t i p l i c a c i o n ( s e l f ) : s u m a = 0
m u l t = 1
for a in r a n g e ( s e l f . min , s e l f . max ) : s u m a += a
m u l t *= a r e t u r n suma , m u l t def s u m a ( self , s a l t o ) :
res = 0;
for a in r a n g e ( s e l f . min , s e l f . max , s a l t o ) : res += a r e t u r n res p r i n t " I n g r e s e el m i n i m o : " min = int ( r a w _ i n p u t () ) p r i n t " I n g r e s e el m a x i m o : " max = int ( r a w _ i n p u t () ) r = R a n g o ( min , max )