Categorías
Lenguajes de programación Programación Python

Lenguajes de programación

¿QUÉ ES PYTHON?

Python es un lenguaje de programación interpretado (se ejecuta sin necesidad de ser procesado por el compilador y se detectan errores durante su ejecución) de tipado dinámico (las variables se comprueban durante su ejecución) cuya función es centrarse en una sintaxis que favorezca un código legible. Se trata de un lenguaje multiparadigma; ya que soporta programación funcional, imperativa y orientada a objetos; y está disponible en varias plataformas.

TIPOS BÁSICOS DE DATOS

Los diferentes tipos básicos de datos en Python son diferentes tipos de números.

NÚMEROS ENTEROS

Son aquellos números que no tienen decimales, ya sean positivos o negativos. En Python, se pueden representar mediante el tipo “int” (entero) o el tipo “long” (largo). La única diferencia es que el tipo “long” permite alcanzar números más grandes; aunque no es recomendable utilizarlo a menos que sea para no malgastar memoria. El tipo “int” de Python se implementa a bajo nivel mediante un tipo “long” de C; por lo que, dependiendo de la plataforma, se almacena utilizando 32 bits o 64 bits. El tipo “long” de Python permite almacenar cualquier tipo de número, limitado por la memoria disponible.

-Al asignar un número a una variable, ésta pasará a ser tipo “int”

# type(entero) daría int

entero = 23

-También podemos indicar que se almacene en tipo “long”, añadiendo un “L” al final.

# type(entero) daría long

entero = 23L

-El literal que se asigna a la variable también se puede expresar como octal (poniendo un 0 delante)

# 027 octal = 23 en base 10

entero = 027

-Y también, puede expresarse como hexadecimal (poniendo un 0x delante)

# 0x17 hexadecimal = 23 en base 10

entero = 0x17

NÚMEROS REALES

Son aquellos números que tienen decimales. En Python se expresa mediante el tipo “float”; que se implementa a bajo nivel mediante una variable de tipo “double” de C; es decir, utilizando 64 bits. 

-Para representar un número real en Python se escribe primero la parte entera, seguido de un punto, y luego la parte final.

real = 0.2703

-También puede expresarse en notación científica

real = 0.1e-3

NÚMEROS COMPLEJOS

Los números complejos son aquellos que tienen parte imaginaria. Usan un tipo “Complex” en Python, donde se almacenan usando coma flotante, debido a que estos números son una extensión de los números reales. En concreto, se almacenan en una estructura “C” compuesta por dos variables tipo “double”, una para los reales y otra para los imaginarios.

-Se representan de la siguiente forma:

complejo = 2.1 + 7.8j

OPERADORES ARITMÉTICOS

OperadorDescripciónEjemplo
+Sumar = 3 + 2 # r es 5
Restar = 4 – 7 # r es -3
Negaciónr = -7 # r es -7
*Multiplicaciónr = 2 * 6 # r es 12
**Exponenter = 2 ** 6 # r es 64
/Divisiónr = 3.5 / 2 # r es 1.75
//División enterar = 3.5 // 2 # r es 1.0
%Módulor = 7 % 2 # r es 1

-La división da como resultado un número real, mientras que la división entera da como resultado la parte entera.

-El operador de módulo (%) devuelve el resto de la división entre dos números.

-Si queremos obtener los decimales se podría hacer de dos maneras diferentes:

  • Bien indicando los decimales

r = 3.0 / 2

  • O bien utilizando la función “float”

r = float(3) / 2

OPERADORES LÓGICOS

Actúan sobre las representaciones en binario de los operandos, es decir, si vemos una operación; por ejemplo, entre 4 y 5, en realidad es como si fuese una operación entre 100 y 101; puesto que sería en código binario.

OperadorDescripciónEjemplo
&andr = 3 & 2 # r es 2
|orr = 3 | 2 # r es 3
^xorr = 3 ^ 2 # r es 1
~notr = ~3 # r es 0
<<Desplazamiento a la izquierdar = 3 << 1 # r es 6
>>Desplazamiento a la derechar = 3 >> 1 # r es 1

La operación 3&2; en código binario sería 11 y 10. El operador «and» devuelve 1 si el primer bit operando es 1 y el segundo bit operando es 1; es decir, como en 11 y 10; el primer dígito es 1 en ambos; pues el primer dígito del resultado sería 1 y, como en el segundo dígito ambos no tienen el 1, pues el primer dígito del resultado sería 0. Entonces, el resultado sería 10 (en binario), que corresponde al 2 en números en decimales. Por ello, el resultado de 3&2 es igual a 2.

El operador «or» es muy parecido al operador «and»; pero la única diferencia es que no es necesario que ambos dígitos sean 1. En los números 11 y 10, el primer dígito en ambos es 1, por lo que el primer dígito del resultado sería 1. En el segundo dígito de cada número, hay un 1 y un 0; por lo tanto, al haber un 1, el segundo dígito del resultado será 1. Entonces, el resultado será 11 (en binario), que corresponde al 3 en números decimales. Por ello, el resultado de 3|2 es 3.

El operador «xor» es parecido al operador «or» pero con una característica importante, puesto que para que el resultado sea 1, ambos dígitos deben ser distintos.. En los números 11 y 10; el primer dígito de cada uno es 1, por lo que el primer dígito del resultado será 0. En el segundo dígito de cada número, es 1 y 0, por lo que, al ser diferentes, el segundo dígito del resultado sería 1. Entonces, el resultado será 01 (en binario), que corresponde al 1 en números decimales. Por ello, el resultado de 3^2 es 1

El operador «not» sirve para negar uno a uno cada bit, es decir, los 0 cambian a 1 y los 1 cambian a 0. En el número decimal 3, en código binario 11, sería 00, que es números decimales sería 0, por ello, ~ 3 es 0

Los operadores de desplazamiento sirven para trasladar los bits «x» posiciones a la izquierda o a la derecha, por ejemplo, 3<<1. El 3 es 11 en código binario; por lo que desplazamos todos los dígitos hacia la izquierda una vez, por lo que se quedaría 110, que corresponde a 6 en números decimales. Por ello, el resultado de 3<<1 es 6. Lo mismo en el caso de que fuese 3>>1. Se trasladan todos los dígitos hacia la derecha una vez, por lo que se quedaría 01, que corresponde a 1 en números decimales. Por ello, el resultado de 3>>1 es 1

CADENAS

Es un texto encerrado entre comillas simples (‘cadena’) o dobles (“cadena”). Dentro de estas se pueden caracteres especiales escapándolos con ‘\’, como el caracter de nueva línea ‘\n’ o el de tabulación ‘\t’.

Una cadena puede estar precedida por el carácter ‘u’ o el carácter ‘r’ dependiendo si es una cadena que utiliza codificación Unicode y una cadena raw (cruda). Las cadenas raw se distinguen de las normales  en que los caracteres escapados mediante ‘\’ no se sustituyen por sus contrapartidas. Esto es bastante útil para las expresiones regulares.

unicode = u»äóè»

raw = r»\n»

-Las cadenas también admiten operadores como la suma y la multiplicación.

a = «uno» y b = «dos»

c = a + b # c es «unodos»

c = a * 3 # c es «unounouno»

BOOLEANOS

Solamente pueden tener dos valores: True y False. En realidad, el tipo “bool” es una subclase del tipo “int”.

Existen diferentes tipos de operadores que trabajan con valores booleanos:

OPERADORES LÓGICOS O CONDICIONALES 

OperadorDescripciónEjemplo
and¿se cumple a y b?r = True and False # r es False
or¿se cumple a o b?r = True or False # r es True
notNo ar = not True # r es False

OPERADORES RACIONALES

OperadorDescripciónEjemplo
==¿son iguales a y b?r = 5 == 3 # r es False
!=¿son distintos a y b?r = 5 != 3 # r es True
<¿es a menor que b?r = 5 < 3 # r es False
>¿es a mayor que b?r = 5 > 3 # r es True
<=¿es a menor o igual que b?r = 5 <= 5 # r es True
>=¿es a mayor o igual que b?r = 5 >= 3 # r es True

ESTRUCTURAS DE CONTROL

  • Sentencia IF (Si): Si se cumple la expresión condicional se ejecuta el bloque de sentencias seguidas.
  • Sentencia ELIF (De lo contrario si): De lo contrario si se cumple la expresión condicional se ejecuta el bloque de sentencias seguidas
  • Sentencia ELSE (De lo contrario): De lo contrario se cumple sin evaluar ninguna expresión condicional y ejecuta el bloque de sentencias seguidas.

numero = int(raw_input(«\nIngresa un número entero, por favor: «))

if numero < 0:

    numero = 0

    print ‘El número ingresado es negativo cambiado a cero.\n

elif numero == 0:

    print ‘El número ingresado es 0.\n

elif numero == 1:

    print ‘El número ingresado es 1.\n

else:

    print ‘El número ingresado es mayor que uno.\n

  • Bucle FOR: itera sobre los elementos de cualquier secuencia, en el orden que aparecen en la secuencia.

animales = [‘gato’, ‘perro’, ‘serpiente’]

for animal in animales:

    print «El animal es: {0}, tamaño de palabra es: {1}».format(

        animal, len(animal))

  • Bucle WHILE: permite repetir la ejecución de un grupo de instrucciones mientras se cumpla la condición.

suma, numero = 0, 1

while numero <= 10:

    suma = numero + suma

    numero = numero + 1

print «La suma es » + str(suma)

  • Sentencias TRY EXCEPT: este tipo de sentencias nos permiten “atrapar” excepciones o errores sin que el programa falle o se detenga.
12345678910111213import math def RaizCuadrada(numero):try:    return math.sqrt(numero)except ValueError:    return ‘Error: No se puede calcular la raíz cuadrada de ‘ + str(numero) print(RaizCuadrada(4))print(RaizCuadrada(13))print(RaizCuadrada(100))print(RaizCuadrada(-1))print(RaizCuadrada(25)) 

-Nos saltaría un error al intentar calcular la raíz cuadrada de -1; y para ello existen estas estructuras.

  • Sentencia BREAK: se puede usar en bucles for y while y simplemente termina el bucle actual y continúa con la ejecución de la siguiente instrucción 

# Primer ejemplo

for letra in «Python»:

    if letra == «h»:

        break

    print («Letra actual : » + letra)

  • Sentencia CONTINUE : al aparecer, este regresa al comienzo del bucle, ignorando todos los estamentos que quedan en la iteración actual del bucle e inicia la siguiente iteración.

# segundo ejemplo

for letra in «Python»:

    if letra == «h»:

        continue

    print («Letra actual : » + letra)

ESTRUCTURAS DE DATOS

Python es uno de los lenguajes más populares hoy en día gracias a su facilidad y velocidad con la que se desarrolla; y también a su orden y simplicidad.

Este lenguaje de datos posee diferentes estructuras de datos:

LISTAS

Son estructuras de datos muy flexibles en las que podemos mezclar valores de varios tipos. Tienen una declaración sencilla y es dirigido por un formato JSON estándar (JavaScript Object Notation); un formato de texto sencillo para el intercambio de datos.

>>> [1, 2, 3, 4]

[1, 2, 3, 4]

>>> [«hola», «mundo»]

[«hola», «mundo»]

>>> [0, 1.5, «hola»]

[0, 1.5, «hola»]

>>> [0, 1.5, «hola»]

[0, 1.5, «hola»]

-Las dos operaciones básicas en las listas son “Append” y “Extend”; cuya diferencia es que “Append” agrega un elemento al final de la lista, mientras que “Extend” es capaz de agregar otra lista al final de la lista.

  • “Append”

>>> lista = [‘a’,’b’]

>>> lista.append(‘c’)

>>> stack

[‘a’, ‘b’, ‘c’]

  • “Extend”

>>> lista = [‘a’, ’b’, ‘c’]

>>> lista.extend([‘d’, ‘e’, ‘f’])

>>> lista

[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]

Con las listas podemos hacer un montón de operaciones también:

  • “index”: nos devuelve la posición en la lista del elemento indicado.

>>> lista = [‘a’,‘b’,‘c’,’b’, ‘a’]

>>> lista.index(‘b’)

1

  • “insert”: inserta un elemento en la lista según el índice deseado.

#[‘b’, ‘c’, ‘b’]

>>> lista.insert(2, ‘a’)

>>> lista

[‘b’, ‘c’, ‘a’, ‘b’]

  • “remove”: elimina un elemento de la lista según el índice deseado

#[‘b’, ‘c’, ‘a’, ‘b’]

>>> lista.remove(2, ‘a’)

>>> lista

[‘b’, ‘c’, ‘b’]

  • “pop”: devuelve el último elemento de la lista y, posteriormente lo remueve de ella.

#[‘b’, ‘c’, ‘b’]

>>> lista.pop()

‘b’

>>> lista

[‘b’, ‘c’]

  • “count”: devuelve la cuenta de elementos actuales de la lista.

#[‘b’, ‘c’, ‘b’]

>>> lista.count(´b’)

2

  • “sort”: ordenan un arreglo tal y como se indique. Se pueden ordenar de diferentes maneras:

-Por orden ascendente

>>> mi_lista.sort()

>>> mi_lista

[‘a’, ‘b’, ‘b’, ‘c’]

-Por orden descendente

>>> mi_lista.sort(reverse=True)

>>> mi_lista

[‘c’, ‘b’, ‘b’, ‘a’]

-Invirtiendo el orden de los elementos sin ordenarlos

>>> my_list = [‘a’, ‘c’, ‘b’]

>>> my_list.reverse()

>>> my_list

[‘b’, ‘c’, ‘a’]

TUPLAS

Son parecidas a las listas; pero la diferencia es que las Tuplas son inmutables. Estas consisten en varios valores separados por comas.

>>> a = (1, 2, 3)

>>> a[0]

1

  • Función “LEN”

>>> len(a)

3

>>> a[1:]

2, 3

SETS

Son listas sin un orden específico; pero los elementos son únicos, es decir, que no se repiten. 

>>> x = set([3, 1, 2, 1])            aunque también se puede poner como >>> x = {3, 1, 2, 1}

set([1, 2, 3])

  • Sets con la función “ADD”

>>> x = set([1, 2, 3])

>>> x.add(4)

>>> x

set([1, 2, 3, 4])

  • Sets con la función “IN”

>>> x = set([1, 2, 3])

>>> 1 in x

True

>>> 5 in x

False

STRINGS

Podemos manipular “strings” de igual manera en la que se manipulan las listas. 

  • Strings con la función “LEN”: cuenta los caracteres de cualquier entrada que se añada.

>>> len(“abrakadabra”)

11

  • También puede encontrar partes del “string” que le indiquemos.

>>> a = “helloworld”

>>> a[1] #primer caracter

‘e’

>>> a[1:5] #caracteres del uno al cinco

“ello”

>>> a[:5] #caracteres del primero al quinto

“hello”

>>> a[5:] #caracteres del quinto al último

“world”

>>> a[-2:] # los últimos dos caracteres de la cadena

‘ld’

>>> a[:-2] # toda la cadena menos dos caracteres

‘helloworld’

>>> a[::-1] # revertir el orden de la cadena

  • Strings con el operador “IN”

>>> ‘hell’ in ‘hello’

True

>>> ‘full’ in ‘hello’

False

>>> ‘el’ in ‘hello’

True

DICCIONARIOS

Actúan de manera similar a una lista, excepto que el índice de este no necesariamente ha de ser un número entero.

>>> a = {‘x’ : 1, ‘y’ : 2, ‘z’ : 3}

>>> a[‘x’]

1

>>> a[‘z’]

3

>>> b = {}

>>> b[‘x’] = 2

>>> b[2] = ‘foo’

>>> b[(1, 2)] = 3

>>> b

{(1, 2): 3, ‘x’ : 2, 2: ‘foo’}

  • Diccionarios con comando “DEL”

>>> a = {‘x’ : 1, ‘y’ : 2, ‘z’ : 3}

>>> del a[‘x’]

>>> a

{‘y’ : 2, ‘z’ : 3}

  • Diccionarios con el método “KEYS”, “VALUE” e “ITEMS”: El método “Keys” devuelve todas las llaves al diccionario. El método “Value” devuelve todos los valores dentro del diccionario; y el método “Items” devuelve todos los pares “llave-valor” al diccionario.

>>> a.keys()

[‘x’, ‘y’, ‘z’]

>>> a.values()

[1, 2, 3]

>>> a.items()

[(‘x’ , 1), (‘y’ , 2), (‘z’ , 3)]

  • Diccionarios con la notación “FOR…IN”

>>> for key in a: print key

x

y

>>> for key, value in a.items() : print key, value

x 1

y 2

  • Diccionarios con la estructura “IN”: buscan dentro del diccionario una palabra.

>>> ‘x’ in a

True

>>> ‘p’ in a

False

>>> a.has_key(‘x’)

True

>>> a.has_key(‘p’)

False

SUBRUTINAS

Un procedimiento o subrutina es una porción de código dentro de un programa más grande que realiza una tarea específica y es, relativamente, independiente del resto del código. Suelen utilizarse para reducir la duplicación de códigos en un programa, permite reusar los códigos, descomponer problemas complejos en piezas simples, mejoran la lectura del código de un programa, oculta o regula parte de un programa…

Estos son ejecutados cuando son llamados por otros procedimientos, funciones o módulos.

-En Python, la definición de funciones se realiza mediante la instrucción “DEF” más un nombre de función descriptivo.

def mi_funcion(): 

    # aquí el algoritmo

-Una función no es ejecutada hasta que no sea invocada. Para invocar una función solamente es necesario llamarla por su nombre.

def mi_funcion(): 

    print «Hola Mundo» 

 funcion()

-Cuando una función haga un retorno de datos, estos pueden ser asignados a una variable.

def funcion(): 

    return «Hola Mundo» 

frase = funcion() 

print frase

DEFINIENDO FUNCIONES SOBRE LOS PARÁMETROS

Un parámetro es un valor que la función espera recibir cuando sea invocada; con el fin de ejecutar acciones en base al mismo. Los parámetros van separados por comas.

def mi_funcion(nombre, apellido): 

    # algoritmo

Existen diferentes tipos de variables:

VARIABLES LIBRES Y NO LOCALES

Si a la variable no se le asigna valor en un función, Python la considera libre y busca su valor en los niveles superiores a esa función. Si a la variable se le asigna un valor en algún nivel intermedio, la variable se considera no local y; si se le asigna en el programa principal, la variable se considera global

  • Variable libre global

def subrutina():

    print(a)

    return

a = 5

subrutina()

print(a)

  • Variable libre no local

def subrutina():

    def sub_subrutina():

        print(a)

        return

    a = 3

    sub_subrutina()

    print(a)

    return

    a = 4

  • Variable libre no definida

def subrutina():

    print(a)

    return

subrutina()

print(a)

VARIABLES DECLARADAS GLOBALES Y NO LOCALES

Si queremos asignar valor a una variable en una subrutina; pero queremos que Python no la considere local, debemos declararla como una función global o no local.

  • Variable declarada global

def subrutina():

    global a

    print(a)

    a = 1

    return

a = 5

subrutina()

print(a)

  • Variable declarada no local

def subrutina():

    def sub_subrutina():

        nonlocal a

        print(a)

        a = 1

        return

    a = 3

    sub_subrutina()

    print(a)

    return

a = 4

subrutina()

print(a)













Avatar de PabloRB

De PabloRB

Bienvenidos a mi perfil, mi nombre es Pablo y vengo a mostraros mi primer blog sobre Tecnología Informática. En caso de necesitar ayuda con algún tema relacionado con la Informática, házmelo saber en los comentarios e intentaré publicarlo cuanto antes.
Espero que os guste mi blog.

Deja un comentario

Diseña un sitio como este con WordPress.com
Comenzar