Modulo 3
Condicionales
Declaracion ELIF
elif se usa para verificar más de una condición, y para detener cuando se encuentra la primera declaración verdadera.
La forma de ensamblar las siguientes declaraciones if-elif-else a veces se denomina cascada.
Se debe prestar atención adicional a este caso:
- No debes usar else sin un if precedente.
- Else siempre es la última rama de la cascada , independientemente de si has usado elif o no.
- Else es una parte opcional de la cascada, y puede omitirse.
- Si hay una rama else en la cascada, solo se ejecuta una de todas las ramas.
- Si no hay una rama else, es posible que no se ejecute ninguna de las opciones disponibles.
Ciclos o bucles
While
En general, en Python, un ciclo se puede representar de la siguiente manera:
while expresión_condicional:
instrucción
Si observas algunas similitudes con la instrucción if, está bien. De hecho, la diferencia sintáctica es solo una: usa la palabra while en lugar de la palabra if. La diferencia semántica es más importante: cuando se cumple la condición, if realiza sus declaraciones sólo una vez; while repite la ejecución siempre que la condición se evalúe como True.
Nota: todas las reglas relacionadas con sangría también se aplican aquí.
For
Otro tipo de ciclo disponible en Python proviene de la observación de que a veces es más importante contar los "giros o vueltas" del ciclo que verificar las condiciones.
- La palabra reservada for abre el ciclo for; nota - No hay condición después de eso; no tienes que pensar en las condiciones, ya que se verifican internamente, sin ninguna intervención.
- Cualquier variable después de la palabra reservada for es la variable de control del ciclo; cuenta los giros del ciclo y lo hace automáticamente.
- La palabra reservada in introduce un elemento de sintaxis que describe el rango de valores posibles que se asignan a la variable de control.
- La función range() (esta es una función muy especial) es responsable de generar todos los valores deseados de la variable de control; en nuestro ejemplo, la función creará (incluso podemos decir que alimentará el ciclo con) valores subsiguientes del siguiente conjunto: 0, 1, 2 .. 97, 98, 99; nota: en este caso, la función range() comienza su trabajo desde 0 y lo finaliza un paso (un número entero) antes del valor de su argumento.
- Nota la palabra clave pass dentro del cuerpo del ciclo - no hace nada en absoluto; es una instrucción vacía : la colocamos aquí porque la sintaxis del ciclo for exige al menos una instrucción dentro del cuerpo (por cierto, if, elif, else y while expresan lo mismo).
Declaraciones break y continue
Python proporciona dos instrucciones especiales para la implementación de estas dos tareas. Digamos por razones de precisión que su existencia en el lenguaje no es necesaria: un programador experimentado puede codificar cualquier algoritmo sin estas instrucciones. Tales adiciones, que no mejoran el poder expresivo del lenguaje, sino que solo simplifican el trabajo del desarrollador, a veces se denominan dulces sintácticos o azúcar sintáctica.
Estas dos instrucciones son:
- Break: Sale del ciclo inmediatamente, e incondicionalmente termina la operación del ciclo; el programa comienza a ejecutar la instrucción más cercana después del cuerpo del ciclo.
- Continue: Se comporta como si el programa hubiera llegado repentinamente al final del cuerpo; el siguiente turno se inicia y la expresión de condición se prueba de inmediato.
Los ciclos FOR y WHILE también pueden tener la rama else, como los if.
- La rama else del ciclo siempre se ejecuta una vez, independientemente de si el ciclo ha entrado o no en su cuerpo .
i = 5
while i < 5:
print(i)
i += 1
else:
print("else:", i)
Logica de computadora
and
Un operador de conjunción lógica en Python es la palabra y. Es un operador binario con una prioridad inferior a la expresada por los operadores de comparación.
El resultado proporcionado por el operador and se puede determinar sobre la base de la tabla de verdad.
or
Un operador de disyunción es la palabra or. Es un operador binario con una prioridad más baja que and (al igual que + en comparación con *).
not
Además, hay otro operador que se puede aplicar para condiciones de construcción. Es un operador unario que realiza una negación lógica. Su funcionamiento es simple: convierte la verdad en falso y lo falso en verdad. Este operador se escribe como la palabra not, y su prioridad es muy alta: igual que el unario + y -.
Expresiones logicas
Puedes estar familiarizado con las leyes de De Morgan. Dicen que:
- La negación de una conjunción es la separación de las negaciones.
- La negación de una disyunción es la conjunción de las negaciones.
Escribamos lo mismo usando Python:
not (p and q) == (not p) or (not q)
not (p or q) == (not p) and (not q)
Operadores bitwise
Hay cuatro operadores que le permiten manipular bits de datos individuales. Se denominan operadores bitwise.
Cubren todas las operaciones que mencionamos anteriormente en el contexto lógico, y un operador adicional. Este es el operador xor (como en o exclusivo ), y se denota como ^ (signo de intercalación).
Aquí están todos ellos:
- & (ampersand) - conjunción a nivel de bits.
- | (barra vertical) - disyunción a nivel de bits.
- ~ (tilde) - negación a nivel de bits.
- ^ (signo de intercalación) - exclusivo a nivel de bits o (xor).
La diferencia en el funcionamiento de los operadores lógicos y de bits es importante: los operadores lógicos no penetran en el nivel de bits de su argumento. Solo les interesa el valor entero final.
Los operadores bitwise son más estrictos: tratan con cada bit por separado. Si asumimos que la variable entera ocupa 64 bits (lo que es común en los sistemas informáticos modernos), puede imaginar la operación a nivel de bits como una evaluación de 64 veces del operador lógico para cada par de bits de los argumentos. Su analogía es obviamente imperfecta, ya que en el mundo real todas estas 64 operaciones se realizan al mismo tiempo (simultáneamente).
Listas
La lista es un tipo de dato en Python que se utiliza para almacenar múltiples objetos. Es una colección ordenada y mutable de elementos separados por comas entre corchetes. Es una colección de elementos, pero cada elemento es un escalar.
El valor dentro de los corchetes que selecciona un elemento de la lista se llama un índice, mientras que la operación de seleccionar un elemento de la lista se conoce como indexación.
Nota: todos los índices utilizados hasta ahora son literales. Sus valores se fijan en el tiempo de ejecución, pero cualquier expresión también puede ser un índice. Esto abre muchas posibilidades.
La función len()
La longitud de una lista puede variar durante la ejecución. Se pueden agregar nuevos elementos a la lista, mientras que otros pueden eliminarse de ella. Esto significa que la lista es una entidad muy dinámica.
Si deseas verificar la longitud actual de la lista, puedes usar una función llamada len() (su nombre proviene de length - longitud).
La función toma el nombre de la lista como un argumento y devuelve el número de elementos almacenados actualmente dentro de la lista (en otras palabras, la longitud de la lista).
Eliminando elementos de una lista
Cualquier elemento de la lista puede ser eliminado en cualquier momento, esto se hace con una instrucción llamada del (eliminar). Nota: es una instrucción, no una función.
del numeros[1]
Funciones vs. metodos.
Un método es un tipo específico de función: se comporta como una función y se parece a una función, pero difiere en la forma en que actúa y en su estilo de invocación.
Una función no pertenece a ningún dato: obtiene datos, puede crear nuevos datos y (generalmente) produce un resultado.
Un método hace todas estas cosas, pero también puede cambiar el estado de una entidad seleccionada.
Un método es propiedad de los datos para los que trabaja, mientras que una función es propiedad de todo el código.
Esto también significa que invocar un método requiere alguna especificación de los datos a partir de los cuales se invoca el método.
Puede parecer desconcertante aquí, pero lo trataremos en profundidad cuando profundicemos en la programación orientada a objetos.
En general, una invocación de función típica puede tener este aspecto:
resultado = funcion(argumento)
La función toma un argumento, hace algo y devuelve un resultado.
Una invocación de un método típico usualmente se ve así:
resultado = data.method(arg)
Nota: el nombre del método está precedido por el nombre de los datos que posee el método. A continuación, se agrega un punto, seguido del nombre del método y un par de paréntesis que encierran los argumentos.
El método se comportará como una función, pero puede hacer algo más: puede cambiar el estado interno de los datos a partir de los cuales se ha invocado.
Agregar elementos a una lista: append() e insert()
Un nuevo elemento puede ser añadido al final de la lista existente: lista.append(valor)
Dicha operación se realiza mediante un método llamado append(). Toma el valor de su argumento y lo coloca al final de la lista que posee el método.
La longitud de la lista aumenta en uno.
El método insert() es un poco más inteligente: puede agregar un nuevo elemento en cualquier lugar de la lista, no solo al final.
lista.insert(ubicación,valor)
Toma dos argumentos:
- El primero muestra la ubicación requerida del elemento a insertar. Nota: todos los elementos existentes que ocupan ubicaciones a la derecha del nuevo elemento (incluido el que está en la posición indicada) se desplazan a la derecha, para hacer espacio para el nuevo elemento.
- El segundo es el elemento a insertar.
Forma para revertir valor de variables en python
Python ofrece una forma más conveniente de hacer el intercambio, echa un vistazo:
variable1 = 1
variable2 = 2
variable1, variable2 = variable2, variable1
Ordenamiento burbuja
La esencia de este algoritmo es simple: comparamos los elementos adyacentes y, al intercambiar algunos de ellos, logramos nuestro objetivo.
Rodajas
Las listas (y muchas otras entidades complejas de Python) se almacenan de diferentes maneras que las variables ordinarias (escalares).
Se podría decir que:
- El nombre de una variable ordinaria es el nombre de su contenido.
- El nombre de una lista es el nombre de una ubicación de memoria donde se almacena la lista.
La asignación: lista2 = lista1copia el nombre de la matriz, no su contenido. En efecto, los dos nombres (lista1 y lista2) identifican la misma ubicación en la memoria de la computadora. Modificar uno de ellos afecta al otro, y viceversa.
Una rodaja es un elemento de la sintaxis de Python que permite hacer una copia nueva de una lista, o partes de una lista. Una de las formas más generales de la rodaja es la siguiente: miLista[inicio:fin]. Una rodaja de este tipo crea una nueva lista (de destino), tomando elementos de la lista de origen: los elementos de los índices desde el principio hasta el
Nota: no hasta el fin, sino hasta fin-1. Un elemento con un índice igual a fin es el primer elemento el cual no participa en la segmentación.
INDICES NEGATIVOS EN RODAJAS
miLista[inicio:fin]
Para repetir:
- inicio es el índice del primer elemento incluido en la rodaja.
- fin es el índice del primer elemento no incluido en la rodaja.
Backlinks: Python Essentials