Introducción al Lenguaje de Programación Python

Miguel Cantillana
<mcantillana@linets.cl>

Preparación del entorno de desarrollo

Acerca de Python

  • Creado en 1990 por Guido van Rossum.
  • Creado con la finalidad de hacer un lenguaje de programación poderoso, fácil de utilizar y de aprender. 
  • Su sintaxis esta diseñada para ser intuitiva y aún poderosa.
  • Otros lenguajes utilizan una sintaxis muy densa y restrictiva.
  • Lenguaje dinámico e Interpretado.

Acerca de Python

  • No se declaran tipos de variables.
  • Es sensitivo a mayúsculas y minúsculas.
  • Una forma rápida y motivadora de trabajar con Python es a través de su intérprete, en dónde se puede escribir código obteniendo resultados inmediatos.
  • El final de una línea marca el final de una sentencia.
  • Los comentarios comienzan con un # y se extiende hasta el final de la linea.

Intérprete de Python

Plantilla Básica de Python

Piezas de un Programa en Python

Palabras Reservadas

and

as

assert

break

class

continue

def

del

elif

else

except

exec

finally

for

from

global

if

import

in

is

lambda

not

or

pass

print

raise

return

try

while

with

yield

Variables en Python

  • En una misma línea se pueden definir simultáneamente varias variables, con el mismo valor o con valores distintos:
>>> a = b = 99
>>> c, d, e = "Mediterráneo", 10, ["pan", "queso"]

Listas

  • Además de string e integers, Python tiene toda clase de diferentes tipos de objetos. Ahora vamos a introducir uno llamado list. 
>>> []
[]
>>> lottery = [3, 42, 12, 19, 30, 59]

# Tamaño de la lista
>>> len(lottery)

# ordenar lista
>>> lottery.sort()

# imprimir lista
>>> print(lottery)

# imprimir inverso
>>> lottery.reverse()
>>> print(lottery)
[59, 42, 30, 19, 12, 3]

# Acceder a elementos
>>> print(lottery[0])
59
>>> print(lottery[1])
42

Diccionarios

  • Un diccionario es similar a una lista, pero accedes a valores usando una clave en vez de un índice. Una clave puede ser cualquier cadena o número. 

>>> {}
{}

>>> participant = {'name': 'Ola', 'country': 'Poland', 'favorite_numbers': [7, 42, 92]}

# mostrando indices
>>> print(participant['name'])

# modificano valores
>>> participant['favorite_language'] = 'Python'

# Borrar elemento del diccionario
>>> del participant['favorite_numbers']
>>> participant
{'country': 'Poland', 'favorite_language': 'Python', 'name': 'Ola'}


Tuplas

  • Una tupla es una lista inmutable. Una tupla no puede modificarse de ningún modo después de su creación.

>>> t = ("a", "b", "mpilgrim", "z", "example") 
>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t[0]                                       
'a'
>>> t[-1]                                      
'example'
>>> t[1:3]                                     
('b', 'mpilgrim')

Tuplas

  • Una tupla se define del mismo modo que una lista, salvo que el conjunto se encierra entre paréntesis en lugar de entre corchetes.
  • Los elementos de una tupla tienen un orden definido, como los de una lista.

  • Las tuplas tienen primer índice 0, como las listas, de modo que el primer elemento de una tupla no vacía es siempre t[0].

  • Los índices negativos cuentan desde el final de la tupla, como en las listas.

     

Las tuplas no tienen métodos

  • No pueden añadirse elementos a una tupla. Las tuplas no tienen los métodos append ni extend.
  • No pueden eliminarse elementos de una tupla. Las tuplas no tienen los métodos remove ni pop.
>>> t
('a', 'b', 'mpilgrim', 'z', 'example')
>>> t.append("new")    1
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'append'
>>> t.remove("z")      2
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'remove'
>>> t.index("example") 3
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
AttributeError: 'tuple' object has no attribute 'index'
>>> "z" in t           4
1

Control de Flujo en Python

  • A diferencia de otros lenguajes de programación en Python no existen marcas explicitas para señalar el comienzo y fin de bloques de sentencias. Para eto se hace uso de la "indentación" (4 espacios, no tabulaciones). 
  • En Python al igual que en otros lenguajes se puede especficar el control de flujo del programa a través de "estructuras de control de flujo".

Control de Flujo

Condicionales

  • La estructura de control más simple es la consstrucción if .
>>> i=5
>>> if i>4:
... print "Mayor"
...
Mayor
  • Estructura if ... elif ... else
>>> i=5
>>> if i>4:
...     print "Mayor"
... elif i==4:
...     print "Igual"
... else:
...     print "Menor"
...
Mayor

Bucles

  • La sintaxis del bucle for es la siguiente:
for variable in lista (o cadena):
    cuerpo del bucle
  • No es necesario definir la variable de control antes del bucle, aun cuando se puede utilizar una variable ya definida.
print("Comienzo")
for i in [0, 1, 2]:
    print("Hola ", end="")
print("Final")
print("Comienzo")
for i in range(3):
    print("Hola ", end="")
print("Final")
  • Un bucle for se limita a repetir el bloque de instrucciones pero además en cada iteracion la variable de control va tomando cada uno de los valores de la lista.
print("Comienzo")
for i in [3, 4, 5]:
    print("Hola. Ahora i vale", i, "y su cuadrado", i ** 2)
print("Final")

Bucle WHILE

  • Permite repetir la ejecución de un programa mientras se cumpla con una condición.
while condicion:
  cuerpo del bucle
i = 1
while i <= 3:
  print(i)
  i += 1
print("Final")

Funciones en Python

  • Las funciones se pueden definir en cualquier punto del programa, aunque siempre antes de ser utilizadas.
  • Las instrucciones que forman parte de la función se escriben usando una identación con respecto de la primera línea.
  • Por comodidad se puede especificar el final de la función con la palabra reservada return.
  • Ejemplo:
def calc_asegundos (horas, minutos, segundos):
    """ Transforma en segundos una medida de tiempo expresada en
    horas, minutos y segundos """
        segsal = 3600 * horas + 60 * minutos + segundos # regla de transformacion
    return segsal
>>> print calc_asegundos (1, 10, 10)
4210
>>> print "Son", calc_asegundos (1, 10, 10), "segundos"
Son 4210 segundos
>>> y = calc_asegundos(1, 10, 10)
>>> z = calc_asegundos(2, 20, 20)
>>> y+z
12630

Clases en Python

  • Para definir una clase en Python solo se tiene que hacer uso de la palabra reservada class.
class Mascota(Object):
  • Puntos importantes a la hora de crear una clase:
    • Código indentado: el código de la clase no debe estar a la misma altura de la clase.
    • Sin paréntesis: Cuando creamos una clase en Python no debemos colocar paréntesis despues del nombre, al menos que se quiera que ésta herede características de otra clase.
  • Atributos de una clase:
    • De nada sirve una clase sin atributos que la definan.
class Mascota(Object):
   numero_de_patas = 0
   color = "marrón"
  • Instanciar una clase:
    • Una declaración de una clase no es algo que se pueda manipular directamente, es por eso qu se debe instanciar un objeto de esa clase para así modificar los atributos que ésta posea.
class Mascota(Object):
   numero_de_patas = 0
   color = "marrón"
 
perro = mascota()
  • Modificar los atributos:
    • Para referenciar una propiedad  o atributo de un objeto en Python, se debe seguir la siguiente estructura: 
perro.numero_de_patas
class Mascota(Object):
   numero_de_patas = 0
   color = “marrón”
 
perro = Mascota()
perro.numero_de_patas = 4
perro.color = “negro”
print ("El perro tiene “ + perro.numero_de_patas + “ patas y es de color “ + perro.color)
  • Modificar el valor del atributo.
  • Creación de métodos:
    • Los métodos son escencialmente funciones contenidas dentro de una clase. La única diferencia es que ahora la función pertenece a la clase.
    • Para definir un método se debe usar la palabra clave def, seguido por el nombre del método seguido por self .

 

class Mascota(Object):
   numero_de_patas = 0
   color = “marrón”
 
   def dormir(self):  
        print "zzz"  
 
perro = Mascota()
perro.dormir()
  • Como vemos todo método tiene como primer parámetro el identificador self que tiene la referencia del objeto que llamó al método.
  • Dentro del método se diferencian los atributos del objeto antecediendo el identificador self.

Ejercicios

Ejercicio 1

Escribir una funcion sum() y una función multip() que sumen y multipliquen respectivamente todos los números de una lista. Por ejemplo: sum([1,2,3,4]) debería devolver 10 y multip([1,2,3,4]) debería devolver 24.

Ejercicio 2

Definir una función es_palindromo() que reconoce palíndromos (es decir, palabras que tienen el mismo aspecto escritas invertidas), ejemplo: es_palindromo ("radar") tendría que devolver True.

Ejercicio 3

Definir un histograma procedimiento() que tome una lista de números enteros e imprima un histograma en la pantalla. Ejemplo: procedimiento([4, 9, 7]) debería imprimir lo siguiente:

****
*********
*******

Ejercicio 4

Dado el siguiente endpoint https://jsonplaceholder.typicode.com/posts lea la información utilizando python y entregue por pantalla solo los post (titulo y cuerpo) cuyo identificador corresponda a un numero primo.

 

Ejercicio 5

Diseñar un programa que modele acciones y atributos de un perro. El programa debe permitir realizar las acciones de caminar, comer, ladrar y que tenga la posibilidad de enfermarse. Al crear un objeto perro debe comenzar con 1000 unidades de energía.

Las reglas para implementar estas acciones son las siguientes:

  • Cada vez que se alimenta al perro este se debe acumular 300 unidades de energía
  • Cada vez que el perro camine se debe restar 200 unidades de energía
  • Cada vez que el perro se enferme debe restar unidades de energía de forma aleatoria
  • Cada vez que el perro ladre se debe restar 100 unidades de energía

Recursos

  • http://tutorial.djangogirls.org/es/python_introduction/
  • http://librosweb.es/libro/python/
  • http://www.pythondiario.com/2013/05/ejercicios-resueltos-en-python-parte-1.html

UNAB: DW07 / Introducción a Python

By Miguel Cantillana

UNAB: DW07 / Introducción a Python

Clase 7

  • 942