tutorial de python basico

En este rápido tutorial de python les vamos a enseñar los principios básicos de lenguaje de forma concisa. Obviamente no se aprende a programar en un solo tutorial por eso les digo, practica, practica mucha practica.

Descarga e instalación

Para descargar Python pueden ingresar a: http://www.python.org/download y miran que es lo que necesitan.

Para instalar en ubuntu por ejemplo desde la consola $ sudo apt-get install python.

consola de linux que muestra el resultado del comando de instalación de python mencionado en este tutorial de python.

En windows es un instalador entonces; siguiente, siguiente, etc. Cualquier problema lo pueden poner en los comentarios.

Para más información o un tutorial de Python para alguien que nunca haya programado

https://wiki.python.org/moin/BeginnersGuide y si no estás cómodo con el lenguaje ingles, como programador debes ir a aprender a https://www.duolingo.com/ u a otro lado, pero puedes ir a: https://wiki.python.org/moin/SpanishLanguage

Documentación oficial; http://www.python.org/doc.

Editor para programar

Yo recomiendo ir a lo más básico y aprender a hacer todo desde la consola para aprender de una vez y utilizar siempre:

Como editor utilizar Sublime text y para ejecutar los archivos utilizar la consola. Sublime text porque en general es el editor más estable y rápido y es mejor gastar nuestro tiempo programando que arreglando el IDE.

Otras opciones son Notepad++ para windows y Kate para Linux.

Corriendo Python

En Unix/Linux/MacOSX se puede lanzar python desde la consola. Ya sea haciendo:

$python archivo.py o solo $python y ejecutamos todo lo que queramos y luego escribimos “exit()o damos Ctrl+D.

linea de comandos que muestra la ejecución de python directamente desde la consola sin archivo punto py.

En Windows python.exe no está en la variable PATH por lo que no se puede ejecutar desde CMD (la línea de comandos de windows); por lo que hay que modificarla, buscando el archivo el archivo python.exe y añadiendo la ruta del directorio a la variable PATH. La ejecución es igual que en Linux.

Cosas importantes del lenguaje

Python es tipado dinámicamente e implícitamente (las variables no tienen que ser declaradas y no hay que declararles un tipo porque el intérprete se los da). Es Orientado a objetos (todo es un objeto, hasta las constantes tienen métodos) y dependiente de las mayúsculas (VAR es una variable diferente de var).

Python no tiene un carácter obligatorio para terminar una línea de código como por ejemplo lo sería el (;) en C++ o Java. Los comentarios de una línea comienzan con (#) y los de múltiples lineas comienzan con (”””). Se asignan los valores usando (=) y se comparan con “a==b”(es a igual a b?) o “a!=b”(es a diferente de b?). Un ejemplo:

#Esto es un comentario de una linea
""" Este es un comentario de varias 
lineas. 
Debajo voy a declarar un entero"""
entero = 7
entero += 2 # le sumo 2 a entero
print(entero) # imprimo entero da 9

Tipos de Datos

Tenemos diferentes tipos de datos básicos; string, entero, de punto flotante y booleano. Las estructuras de datos que tenemos son: listas, tuplas, diccionarios y dependientes de las librerías. Las listas son arreglos de una dimensión (pero se pueden tener listas de listas). Las tuplas son arreglos inmutables de una dimensión. Los Diccionarios son arreglos asociativos osea cada entrada funciona así llave=>valor, cuando se utiliza la llave se devuelve el valor. De los dependientes de las librerías hay muchas variaciones por ejemplo el de la librería sets que es básicamente una colección de datos donde un dato no se repite.

string = 'abd'
flotante = 1.2
entero = 9
listaSimple= [1, 2, 3]
ComoPuedeSerUnaLista = ["bla", 3.5, 3, ['a', 'b']]
listaSimple[0] = "a" #Cambio el valor 1 por "a"
unaTupla = (1, 3, 4)
diccionario = {"llave1": 3, 3:5, "pi": 3.14}
print(diccionario["llave1"]) #asi accedo al diccionario
diccionario[3] = "llave 3" # cambio el valor del diccionario

Se pueden accesar rangos o subconjuntos de una lista utilizando el símbolo (:) de la siguiente forma lista[indice1:indice2] siendo indice1 inclusivo e indice2 exclusivo. Si se omite el primer índice (o indice1 según lo llamamos) se toma el rango desde el índice 0 que indica que se toma el rango desde el primer elemento. Si se omite el segundo índice el rango que se toma es el largo total de la lista entonces el rango toma hasta el último elemento de la lista. Se pueden usar índices negativos y se cuentan desde el último elemento hacia atrás entonces -1 es el último elemento.

unaLista = ['a', 'b', 'c', 'd']
lista1 = unaLista[:2] 
print (lista1) # imprime ['a', 'b']
lista2 = unaLista[2:]
print(lista2) # imprime ['c', 'd']
lista3 = unaLista[1:3]
print(lista3) # imprime ['c', 'd']
print(unaLista[-1]) # Imprime d

Strings

Los strings en python se pueden armar ya sea con comilla simple () o con comillas dobles (). Strings de múltiples líneas comienzan con triple comilla ya sea simple o doble (”””) u (’’’). Se pueden reemplazar valores dentro de las strings usando % módulo.

string = 'hola'
string1= "hola"
s = 'hola "tu"'
print(s) # imprime: hola "tu"
s1 = "hola 'tu'"
print(s1) # imprime: hola 'tu'
print("Yo %s en %s "% ('programo', "python"))
# Imprime Yo programo en python

Sentencias de control de flujo

Un bloque de código se define por indentación (se identa para comenzar un bloque de código y se desindenta para terminar uno). Sentencias que inician bloques de código terminan con un dos puntos (:). Un bloque de código es un conjunto de código que es afectado por la sentencia que lo precede como por ejemplo si un bloque de código es precedido por un if solo se ejecutara si se cumple la condición del if.

En python solo tenemos if, for y while. No hay do while o switch. En vez del switch usamos if. for sirve para iterar por un conjunto de datos repitiendo el bloque de código por cada uno de ellos; el for no se puede definir con una variable que se incrementa o se decrementa hasta un valor solo se puede hacer para que itere sobre una lista generada. Para generar la lista necesaria para un for se utiliza generalmente la función range(numero).

##### IF #####
numero = 4
if (numero == 4):
    print("el valor es 4")
else:
    print ("el valor no es 4")

if (numero == 5):
    print("el valor es 5")
elif numero > 7:
    pass # No ejecuta nada
else:
    print("el valor no es ni 5 ni mayor que 7")
##### WHILE #####
tope = 1
while (tope < 10):
    tope +=1
    if (tope == 10):
        print(tope)
##### FOR #####
lista = range(10)
print (lista) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for valor in range(10):
    # Revisamos si el valor va por cuatro
    if (valor == 4):
        print("vamos por la mitad")
    elif (valor == 8):
        # break termina el for sin ejecutar el resto
        # de iteraciones por ejemplo en este caso
        # no ejecuta con el valor 9
        break
    else:
        # continue comienza la proxima iteracion
        continue
else:
    # Se puede poner un else al final de un loop
    # como while o for y se ejecuta si el for
    # no se econtro con una sentencia break
    print("no se ejecuto")

for valor in range (3):
    print(valor)

Funciones

Las funciones son declaradas con la palabra clave def. Los nombres de los argumentos se ponen entre paréntesis separados con comas, y el bloque de código de la función inicia después de un (:).

Se pueden hacer funciones con argumentos opcionales a los cuales se les da un valor default en la declaración de la función que se utilizarán cuando al llamar la función no se especifique este valor. Los parámetros son pasados por referencia (si se cambia el valor de la variable dentro de la función la variable también es cambiada donde la función es llamada). Si se quiere retornar varios valores las funciones pueden retornar tuplas. Se pueden incluso tener funciones sin nombre ya se para que se utilizan localmente o para asignarlas a una variable esto se hace con la palabra reservada lambda.

def mitad (valor):
    return valor / 2

# Aqui definimos una funcion en una variable
# que es basicamente la funcion cuadrado
variableFuncion = lambda x: x * x
print (variableFuncion(2)) # imprime 1

def dividirPor(arriba, abajo=2):
    return arriba / abajo

print(dividirPor(4)) # imprime 2
print(dividirPor(4, 4)) # imprime 1

def aplicaFuncion(valor, funcion):
    return funcion (valor)

print (aplicaFuncion(4, mitad)) # imprime 2

def retornaTupla (primero, segundo):
    return (primero , segundo, primero+1)

print(retornaTupla(2, 3)) # imprime (2,3,3)

Clases

Una clase es una plantilla con la cual se pueden crear muchos objetos que tienen los mismos métodos(funciones) y los mismos atributos (variables) que los demás objetos pero cada uno puede tener diferentes valores en estas variables.

class UnaClase(object):
    valor = 12
    # init es el constructor se ejecuta primero
    # cuando se instancia una clase.
    def __init__(self):
        self.atributo = 4

    # Todas las funciones de una clase tienen
    # el argumento self que es una referencia
    # a si mismas entonces con self pueden
    # llamar a sus mismos atributos
    def funcion (self, argumento):
        self.atributo = argumento
        print (self.atributo)
        return self.atributo

# Asi creo un objeto de la clase
objetoDeClase = UnaClase()
objetoDeClase.funcion(4)# imprime 4
# todos tienen la variable valor
# pero a objetoDeClase le cambiamos el valor
objetoDeClase.valor = 10
print(objetoDeClase.valor) # imprime 10

# objeto2 tiene la variable valor original
objeto2 = UnaClase()
print(objeto2.valor) # imprime 12


# Esta clase hereda todo lo que tiene UnaClase
class ClaseQueHereda(UnaClase):
    # El constructor puede recibir argumentos
    def __init__(self, argumen):
        self.atributo = 3
        print(argumen)

objetoDeClaseQueHereda = ClaseQueHereda("cadena")
# imprime cadena

objetoDeClaseQueHereda.funcion(5) # imprime 5

# Ni la clase ni el objeto tiene la variable que 
# vamos a usar pero se puede crear
objetoDeClaseQueHereda.nuevoValor = 6

Excepciones

En python las excepciones son manejadas con bloques de código que comienzan con la palabra clave try y en caso de que la excepción ocurra se ejecuta el código en el bloque de código: except <NombreDeLaExcepcion>

try:
    z = 5 / 0
except ZeroDivisionError:
    print ("divide by zero")

Importar Librerías

Para utilizar librerías externas usamos import <Librería>. Se pueden importar funciones individuales de la siguiente from <Libreria> import <NombreDeFuncion>. Un ejemplo:

import math
from math import ceil

pi = math.pi
if (ceil(pi) == math.ceil(pi)):
    print("son la misma funcion")

 

Manejar Archivos

Python tiene métodos estándares para abrir archivos entre los cuales están open() y read o write para escribir o leer de un archivo.

Para eliminar archivos o hacer otros procesos con las rutas de los archivos necesitamos importar la librería estándar os.

# Abro el archivo con la opcion "w" que es write
archivoParaGuardar = open("my_archivo.txt", "w")
archivoParaGuardar.write("el archivo tiene algo")
# Cierro el archivo para guardar lo que escribimos
archivoParaGuardar.close()
archivo = open("my_archivo.txt")
# read(entero) lee la cantidad de caracteres
print(archivo.read(2)) # imprime el
# read() lee toda una linea del archivo.
print(archivo.read()) # imprime lo que sobra
                   # archivo tiene algo

Argumentos de la línea de comandos

Si se tiene un programa que se ejecuta así $ python programa.py argumento1 argumento2 con cualquier cantidad de argumentos se tiene que usar la librería estándar sys, cada uno de los argumentos se toma como un string y se guardan en una lista en sys.argv.

import sys

for i in range(len(sys.argv)):
    print "Argumento No %d: %s"%(i, sys.argv[i])

""" para  $ python scriptArguments.py a b c d
Imprime: 
Argumento No 0: scriptArguments.py
Argumento No 1: a
Argumento No 2: b
Argumento No 3: c
Argumento No 4: d
"""

Notas extras

Siempre es importante programar con un estilo predefinido; ya que entre más estándar sea el código más fácil es de leer y el código se lee muchas más veces de lo que es escrito. Ese tiempo que gastamos leyendo mal código lo podríamos gastar aprendiendo otra cosa yo les recomiendo que utilizen pep 8 que se utiliza en la librería estándar de Python porque nos ahorra tiempo de definir nuestro propio estilo y este estilo ha sido probado en un proyecto grande.

Nunca combinen tabs con espacios; porque puede llevar a bugs complicados hasta para expertos.

Siempre me ha gustado la idea que alguien aprenda algo con algo que yo escribí: si pudieras aumentar la posibilidad de eso compartiendo te agradecería mucho.

Facebook Twitter Slack y por ahí se dice que tenemos un grupo secreto 👽 de whatsapp; pero te tenemos que conocer primero, podemos hablar en slack :).

0 comments on “tutorial de python basicoAdd yours →

Leave a Reply

Your email address will not be published. Required fields are marked *