0% encontró este documento útil (0 votos)
10 vistas

Guía Python

Cargado por

gabrielhipolito1
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas

Guía Python

Cargado por

gabrielhipolito1
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 137

Guía Python

Qué es programar

Si buscamos una descripción en pocas palabras sobre qué es programar, encontraríamos frases
como: «crear software usando un lenguaje de programación», «darle instrucciones al
ordenador» o «enseñarle al ordenador a hacer algo».

Este es un curso práctico y creemos que es mejor que vayas descubriendo en qué consiste
programar, realizando precisamente esa actividad. En esta sección de introducción hablaremos
de forma breve sobre algunos conceptos esenciales, algo así como el «abc» que nos permita
comenzar a andar.

Algoritmos, programas y lenguajes de programación

Para ayudar a entender la programación a un nivel básico se suele utilizar símiles, como las
instrucciones de montaje de un mueble o una receta de cocina. En ellas explicamos cómo
realizar algo a través de una serie de pasos detallados. Por ejemplo, al escribir una receta,
primero hemos tenido que descomponer mentalmente el proceso de cocinar un plato en una
serie de tareas con un orden lógico:

Limpiar el pescado

Echarle dos pizcas de sal

Picar 20 gr. de cebolla

Calentar 2 cucharas de aceite en una sartén

Dorar la cebolla

etc…

Luego escribiremos esos pasos. Podría ser en español, en inglés o cualquier otro idioma, pero
las instrucciones seguirían siendo las mismas.

Pues bien, al desglose de un proceso en pasos detallados y ordenados le denominamos


algoritmo y el fichero donde transcribimos estas instrucciones usando un lenguaje de
programación concreto (Javascript, PHP, Python, Java…) para que pueda ser ejecutado por un
ordenador, le llamamos programa (*).

La sintaxis de estos lenguajes de programación es bastante más simple que nuestros idiomas y
utilizan un vocabulario y un conjunto de reglas mucho más reducido. Eso sí, son muy estrictas y
debemos seguirlas a rajatabla para que el ordenador pueda interpretarlas sin que produzca un
error.

En resumen, estos programas son un conjunto de sentencias escritas en un lenguaje de


programación que le dicen al ordenador qué tareas debe realizar y en qué orden, a través de
una serie de instrucciones que detallan completamente ese proceso sin ambigüedad.

Saber más (*): hay lenguajes interpretados y compilados.

En los primeros, como Javascript, un programa llamado intérprete ejecuta las sentencias a la
vez que las lee del fichero de texto donde están escritas. En estos casos, a los programas
también se le suele denominar scripts o guiones.

En un compilado, como Java, debemos previamente convertir el fichero de texto a una


‘traducción’ mediante un programa llamado compilador. Ese fichero resultante es el que se
ejecutará en el ordenador.

Instalaciones

Python para Windows

https://www.python.org/downloads/windows/
Descargar instalador ejecutable de Windows x86-64
Comprobando la instalación y la version.

Abrimos el interprete de comando colocando en el buscador o lupa de la barra de tareas las


siglas CMD y presionamos ENTER
Escribimos python --version y presionamos ENTER

Instalacion de sublime text3

Necesitamos una aplicación para correr el programa, puede ser cualquier interprete de
comandos como visual code studio o sublime text3 como en el ejemplo que les traigo

https://www.sublimetext.com/3

https://python-para-impacientes.blogspot.com/2017/02/instalar-python-paso-paso.html
(Para Windows 7)
Descargamos la versión que va para nuestro sistema operativo e instalamos

Una vez el programa abierto abrimos un nuevo archivo y modificamos las herramientas,
seleccionando Build System y tildando Python

Luego nuevamente en Tools seleccionamos Build y seleccionamos la opción Python que me da


la ventana al abrir.
Introducción a Python
¿Qué es Python?
Python es un lenguaje de programación de alto nivel popular. Fue creado
por Guido van Rossum, y lanzado en 1991.

Se utiliza para:

 desarrollo web (lado servidor),


 desarrollo de software,
 Matemáticas
 scripting del sistema.
 Computo científico
 Inteligencia artificial

Es muy popular y es utilizado por organizaciones como Google, NASA, la


CIA y Disney

Python es procesado a tiempo de ejecución por un interpretador. No hay


necesidad de compilar tu programa antes de ejecutarlo

¿Qué puede hacer Python?


 Python se puede utilizar en un servidor para crear aplicaciones
web.
 Python se puede utilizar junto con el software para crear flujos de
trabajo.
 Python puede conectarse a sistemas de base de datos. También
puede leer y modificar archivos.
 Python se puede utilizar para manejar big data y realizar
matemáticas complejas.
 Python se puede utilizar para la creación rápida de prototipos o
para el desarrollo de software listo para la producción.

¿Por qué Python?


 Python funciona en diferentes plataformas (Windows, Mac, Linux,
Raspberry Pi, etc.).
 Python tiene una sintaxis simple similar al idioma inglés.
 Python tiene una sintaxis que permite a los desarrolladores
escribir programas con menos líneas que algunos otros lenguajes
de programación.
 Python se ejecuta en un sistema de intérprete, lo que significa que
el código se puede ejecutar tan pronto como se escribe. Esto
significa que la creación de prototipos puede ser muy rápida.
 Python se puede tratar de una manera procedimental, orientada a
objetos o de una manera funcional.

Sintaxis de Python en comparación con otros


lenguajes de programación
 Python fue diseñado para la legibilidad, y tiene algunas similitudes
con el idioma inglés con la influencia de las matemáticas.
 Python utiliza nuevas líneas para completar un comando, a
diferencia de otros lenguajes de programación que a menudo usan
punto y coma o paréntesis.
 Python se basa en la sangría, utilizando espacios en blanco, para
definir el ámbito; como el ámbito de bucles, funciones y clases.
Otros lenguajes de programación a menudo utilizan llaves para
este propósito.

Sangría de Python
La sangría hace referencia a los espacios al principio de una línea de
código.

Cuando en otros lenguajes de programación la sangría en el código es


sólo para legibilidad, la sangría en Python es muy importante.

Python utiliza sangría para indicar un bloque de código.

if 5 > 2:

print("Cinco es mas grande que dos!")

Python le dará un error si omite la sangría:


if 5 > 2:
print("Cinco es mas grande que dos!")

El número de espacios depende de usted como programador, pero tiene


que ser al menos uno.
if 5 > 2:

print("Cinco es mas grande que dos!")

if 5 > 2:

print("Cinco es mas grande que dos!")

Usted tiene que utilizar el mismo número de espacios en el mismo


bloque de código, de lo contrario Python le dará un error:
if 5 > 2:

print("Cinco es mas grande que dos!")

print("Cinco es mas grande que dos!")

Python Variables
En Python, las variables se crean al asignarle un valor:

x=5

y = "¡Hola, mundo!"

print(x)

print(y)

Python no tiene ningún comando para declarar una variable.

Comentarios
Python tiene capacidad de comentarios con el propósito de
documentación en código.

Los comentarios comienzan con un valor de tipo (#), y Python


representará el resto de la línea como un comentario:

#Esto es un comentario.

print("Hola, Mundo!")
Los comentarios se pueden colocar al final de una línea, y Python
ignorará el resto de la línea:

print("Hola, mundo!") #Esto es un comentario.

Los comentarios no tienen que ser texto para explicar el código, también
se puede utilizar para evitar que Python ejecute código:

#print("Hola, mundo!")

print("Salud, compañero!")

Comentarios de varias líneas


Python realmente no tiene una sintaxis para comentarios de varias
líneas.

Para agregar un comentario de varias líneas, puede insertar un para


cada línea:#

#Esto es un comentario

#Escribiendo en

#más de una línea de código

print("Hola, mundo!")

O, no exactamente como se pretendía, puede usar una cadena de varias


líneas.

Dado que Python omitirá los literales de cadena que no están asignados
a una variable, puede agregar una cadena de varias líneas (comillas
triples) en el código y colocar el comentario dentro de ella:

"""
Esto es un comentario

Escribiendo en

más de una línea de código

"""

print("Hola, mundo!")
Mientras la cadena no se asigne a una variable, Python leerá el código,
pero luego lo ignorará y ha realizado un comentario de varias líneas.

Variables
Creación de variables
Las variables son contenedores para almacenar valores de datos.

A diferencia de otros lenguajes de programación, Python no tiene ningún


comando para declarar una variable.

Se crea una variable en el momento en que se le asigna un valor por


primera vez.

x = 5 #x es de tipo int o entero

y = "John"#y es de tipo str o cadena de caracteres

print(x)

print(y)

Las variables no necesitan declararse con ningún tipo en particular e


incluso pueden cambiar el tipo después de que se hayan establecido.

x=4

x = "Sally"

print(x)

Las variables de cadena se pueden declarar mediante comillas simples o


dobles:

x = "John"

print(x)

#comillas dobles al igual que comillas simples:

x = 'John'

print(x)
Nombres de variables
Una variable puede tener un nombre corto (como x e y) o un nombre
más descriptivo (edad, nombre, total_volumen). Reglas para variables de
Python:

 Un nombre de variable debe comenzar con una letra o el carácter


guion bajo
 Un nombre de variable no puede comenzar con un número
 Un nombre de variable solo puede contener caracteres
alfanuméricos y guiones bajos (A-z, 0-9 y _ )
 Los nombres de variables distinguen mayúsculas de minúsculas
(age, Age y AGE son tres variables diferentes)

#Legal variable names:

myvar = "John"

my_var = "John"

_my_var = "John"

myVar = "John"

MYVAR = "John"

myvar2 = "John"

#Illegal variable names:

2myvar = "John"

my-var = "John"

my var = "John"

Recuerde que los nombres de variables distinguen mayúsculas de


minúsculas

Asignar valor a varias


variables
Python le permite asignar valores a varias variables en una línea:

x, y, z = "Orange", "Banana", "Cherry"

print(x)
print(y)

print(z)

Y puede asignar el mismo valor a varias variables en una línea:


x = y = z = "Orange"

print(x)

print(y)

print(z)

Variables de salida
La instrucción print Python se utiliza a menudo para generar variables.

Para combinar texto y una variable, Python utiliza el carácter: +

x = "Asombroso"

print("Python es " + x)

También puede utilizar el carácter + para agregar una variable a otra


variable:
x = "Python es "

y = "asombroso"

z=x+y

print(z)

Para los números, el signo + funciona como un operador matemático:


x=5

y = 10

print(x + y)

Si intenta combinar una cadena y un número, Python le dará un error:


x=5

y = "John"

print(x + y)
Variables globales
Las variables que se crean fuera de una función (como en todos los
ejemplos anteriores) se conocen como variables globales.

Las variables globales pueden ser utilizadas por todos, tanto dentro de
las funciones como fuera.

x = "Asombroso"

def myfunc():

print("Python es " + x)

myfunc()

Si crea una variable con el mismo nombre dentro de una función, esta
variable será local y solo se puede utilizar dentro de la función. La
variable global con el mismo nombre permanecerá como estaba, global y
con el valor original.
x = "Asombroso"

def myfunc():

x = "Fantastico"

print("Python es " + x)

myfunc()

print("Python es " + x)

La palabra clave global


Normalmente, cuando se crea una variable dentro de una función, esa
variable es local y solo se puede utilizar dentro de esa función.

Para crear una variable global dentro de una función, puede utilizar la
palabra clave.global

def myfunc():

global x

x = "fantastico"
myfunc()

print("Python es " + x)

Además, utilice la palabra clave global si desea cambiar una variable


global dentro de una función.
x = "Asombroso"

def myfunc():

global x

x = "fantastico"

myfunc()

print("Python es " + x)

Tipos de datos de Python


Tipos de datos integrados
En la programación, el tipo de datos es un concepto importante.

Las variables pueden almacenar datos de diferentes tipos, y diferentes


tipos pueden hacer cosas diferentes.

Python tiene los siguientes tipos de datos integrados de forma


predeterminada, en estas categorías:

Tipo de texto: str

Tipos numéricos: int, float, complex

Tipos de secuencia: list, tuple, range

Tipo de asignación: dict

Tipos de conjunto: set, frozenset


Tipo booleano: bool

Tipos binarios: bytes, byte, arraymemoryview

Obtención del tipo de datos


Puede obtener el tipo de datos de cualquier objeto utilizando la
función:type()

x=5

print(type(x))

Configuración del tipo de


datos
En Python, el tipo de datos se establece al asignar un valor a una
variable:

Ejemplo Tipo de dato

x = "Hola mundo " str

x = 20 int

x = 20.5 float

x = 1j complex

x = ["Manzana", "banana", "Frutilla"] list

x = ("Manzana", "banana", "Frutilla") tuple

x = range(6) range

x = {"name" : "John", "age" : 36} dict

x = {"apple", "banana", "cherry"} set

x = frozenset({"apple", "banana", "cherry"}) frozenset

x = True bool
x = b"Hello" bytes

x = bytearray(5) bytearray

x = memoryview(bytes(5)) memoryview

Configuración del tipo de


datos específico
Si desea especificar el tipo de datos, puede utilizar las siguientes
funciones constructoras:

Example Data Type

x = str("Hola Mundo") str

x = int(20) int

x = float(20.5) float

x = complex(1j) complex

x = list(("manzana", "banana", "frutilla")) list

x = tuple(("manzana", "banana", "frutilla ")) tuple

x = range(6) range

x = dict(name="John", age=36) dict

x = set(("manzana", "banana", "frutilla ")) set

x = frozenset(("manzana", "banana", "frutilla ")) frozenset

x = bool(5) bool

x = bytes(5) bytes

x = bytearray(5) bytearray

x = memoryview(bytes(5)) memoryview

Números de Python
Hay tres tipos numéricos en Python:

 int
 float
 complex

Las variables de tipos numéricos se crean al asignarles un valor:

x = 1 # int
y = 2.8 # float
z = 1j # complex
Para verificar el tipo de cualquier objeto en Python, utilice la
función:type()
x=1

y = 2.8

z = 1j

print(type(x))

print(type(y))

print(type(z))

Int
Int, o entero, es un número entero, positivo o negativo, sin decimales, de
longitud ilimitada.

x=1

y = 35656222554887711

z = -3255522

print(type(x))

print(type(y))

print(type(z))

Flotante
Flotar, o "número de punto flotante" es un número, positivo o negativo,
que contiene uno o más decimales.

x = 1.10

y = 1.0
z = -35.59

print(type(x))

print(type(y))

print(type(z))

El flotador también puede ser notación científica con una "e" para indicar
la potencia de 10.
x = 35e3

y = 12e4

z = -87.7e100

print(type(x))

print(type(y))

print(type(z))

Complejo
Los números complejos se escriben con una "j" como parte imaginaria:

x = 3+5j

y = 5j

z = -5j

print(type(x))

print(type(y))

print(type(z))

Conversión de tipos
Puede convertir de un tipo a otro con los métodos int(), float(), y:
complex()

#convertir de int a float:

x = float(1)

#convertir de float a int:

y = int(2.8)
#convertir de int a complejo:

z = complex(x)

print(x)

print(y)

print(z)

Nota: No puede convertir números complejos en otro tipo de número.

Conversión de Python
Especificar un tipo de variable
Puede haber ocasiones en las que desee especificar un tipo en una
variable. Esto se puede hacer con el casting. Python es un lenguaje
orientado a objetos y, como tal, utiliza clases para definir tipos de datos,
incluidos sus tipos primitivos.

Por lo tanto, la conversión en python se realiza mediante funciones


constructoras:

 int() - construye un número entero a partir de un literal entero,


un literal float (redondeando hacia abajo al número entero
anterior) o un literal de cadena (siempre que la cadena representa
un número entero)
 float() - construye un número flotante a partir de un literal
entero, un literal float o un literal de cadena (siempre que la
cadena representa un float o un entero)
 str() - construye una cadena a partir de una amplia variedad de
tipos de datos, incluyendo cadenas, literales enteros y literales
flotantes

x = int(1)

y = int(2.8)

z = int("3")

print(x)

print(y)

print(z)

Cadenas de Python
Literales de cadena
Los literales de cadena en python están rodeados por comillas simples o
comillas dobles.

'hola' es lo mismo que "hola".

Puede mostrar un literal de cadena con la función: print()

print("Hola")
print('Hola')

Asignar cadena a una variable


La asignación de una cadena a una variable se realiza con el nombre de
la variable seguido de un signo igual y la cadena:

a = "Hola"
print(a)

Cadenas multilínea
Puede asignar una cadena de varias líneas a una variable utilizando tres
comillas:

a = """Lorem ipsum dolor sit amet,


consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."""
print(a)

O tres comillas simples:


a = '''Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.'''
print(a)
Nota: en el resultado, los saltos de línea se insertan en la misma
posición que en el código.
Las cadenas son matrices
Al igual que muchos otros lenguajes de programación populares, las
cadenas en Python son matrices de bytes que representan caracteres
unicode.

Sin embargo, Python no tiene un tipo de datos de carácter, un solo


carácter es simplemente una cadena con una longitud de 1.

Los corchetes se pueden utilizar para acceder a los elementos de la


cadena.

a = "Hola, Mundo!"

print(a[1])

Rebanar
Puede devolver un intervalo de caracteres mediante la sintaxis de
sector.

Especifique el índice inicial y el índice final, separados por dos puntos,


para devolver una parte de la cadena.

b = " Hola, Mundo!"

print(b[2:5])

Indexación negativa
Utilice índices negativos para iniciar el sector desde el final de la cadena:
b = " Hola, Mundo!"

print(b[-5:-2])

Longitud de la cadena
Para obtener la longitud de una cadena, utilice la función. len()

a = " Hola, Mundo!"

print(len(a))
Métodos de cadena
Python tiene un conjunto de métodos integrados que puede usar en
cadenas

El método strip() elimina cualquier espacio en blanco del principio o del


final de forma visual:

a = " Hola, Mundo! "

print(a.strip())

El método lower() devuelve la cadena en minúsculas:

a = " HOLA, MUNDO!"

print(a.lower())

El método upper() devuelve la cadena en mayúsculas:

a = " Hola, Mundo!"

print(a.upper())

El método replace() reemplaza una cadena por otra cadena:

a = " Hola, Mundo!"

print(a.replace("H", "J"))

El método split() divide la cadena en subcadenas si encuentra


instancias del separador:

a = " Hola, Mundo!"

b = a.split(",")

print(b)
Comprobar cadena
Para comprobar si una determinada frase o carácter está presente en
una cadena, podemos usar las palabras clave in o not in

txt = " La lluvia en España se mantiene principalmente en la llanura. "

x = "uvi" in txt

print(x)

Compruebe si la frase "uvi" NO está presente en el siguiente texto:

txt = " La lluvia en España se mantiene principalmente en la llanura. "

x = "uvi" not in txt

print(x)

Concatenación de cadenas
Para concatenar o combinar dos cadenas puede usar el operador +.

a = "Hola"

b = "Mundo"

c=a+b

print(c)

Para añadir un espacio entre ellos, agregue un: " "

a = "Hello"

b = "World"

c=a+""+b

print(c)
Formato de cadena
Como aprendimos con las Variables de Python, no podemos combinar
cadenas y números como este:

age = 36

txt = "My name is John, I am " + age

print(txt)

Pero podemos combinar cadenas y números mediante el uso del


método!format()

El método format()toma los argumentos pasados, les da formato y los


coloca en la cadena donde están los marcadores de posición: {}

Utilice el método format() para insertar números en cadenas:

age = 36

txt = "Mi nombre es Juan, y tengo {} años"

print(txt.format(age))

El método format() toma un número ilimitado de argumentos y se


colocan en los marcadores de posición respectivos:

cantidad = 3

item= 567

precio = 49.95

myorder = "Yo quiero {} piezas del item {} por {} pesos."

print(myorder.format(cantidad, item, precio))

Carácter de escape
Para insertar caracteres que son ilegales en una cadena, utilice un
carácter de escape.

Un carácter de escape es una barra diagonal invertida seguida del


carácter que desea insertar.\
Un ejemplo de un carácter ilegal es una comilla doble dentro de una
"cadena que está rodeada de comillas dobles”:

txt = "Somos los llamados" vikingos "del norte"

# Obtendrá un error si usa comillas dobles dentro de una cadena que


está rodeada por comillas dobles:

Para solucionar este problema, utilice el carácter de escape : \"

txt = "Somos los llamados\" vikingos \" del norte"

print(txt)

Otros caracteres de escape utilizados en Python:

Code Result

\' Single Quote

\\ Backslash

\n New Line

\r Carriage Return

\t Tab

\b Backspace

\f Form Feed

\ooo Octal value

\xhh Hex value

Métodos de cadena
Python tiene un conjunto de métodos integrados que puede usar en
cadenas.
Nota: Todos los métodos de cadena devuelven nuevos valores. No
cambian la cadena original.

Metodo Descripcion

capitalize() Convierte el primer carácter a mayúsculas

casefold() Convierte la cadena en minúsculas

center() Devuelve una cadena centrada

count() Devuelve el número de veces que se produce un valor


especificado en una cadena

encode() Devuelve una versión codificada de la cadena.

endswith() Devuelve verdadero si la cadena termina con el valor


especificado

expandtabs() Establece el tamaño de la pestaña de la cadena

find() Busca en la cadena un valor especificado y devuelve la posición


donde se encontró

format() Formatea los valores especificados en una cadena

format_map() Formatea los valores especificados en una cadena

index() Busca en la cadena un valor especificado y devuelve la posición


donde se encontró

isalnum() Devuelve True si todos los caracteres de la cadena son


alfanuméricos

isalpha() Devuelve True si todos los caracteres de la cadena están en el


alfabeto.

isdecimal() Devuelve True si todos los caracteres de la cadena son


decimales

isdigit() Devuelve True si todos los caracteres de la cadena son dígitos

isidentifier() Devuelve True si la cadena es un identificado

islower() Devuelve True si todos los caracteres de la cadena son


minúsculas

isnumeric() Devuelve True si todos los caracteres de la cadena son


numéricos

isprintable() Devuelve True si todos los caracteres de la cadena son


imprimibles

isspace() Devuelve True si todos los caracteres de la cadena son espacios


en blanco

istitle() Devuelve True si la cadena sigue las reglas de un título


isupper() Devuelve True si todos los caracteres de la cadena son
mayúsculas

join() Une los elementos de un iterable al final de la cadena

ljust() Devuelve una versión justificada a la izquierda de la cadena

lower() Convierte una cadena en minúsculas

lstrip() Devuelve una versión de corte izquierda de la cadena

maketrans() Devuelve una tabla de traducción para ser utilizada en las


traducciones.

partition() Devuelve una tupla donde la cadena se divide en tres partes

replace() Devuelve una cadena donde un valor especificado se


reemplaza con un valor especificado

rfind() Busca en la cadena un valor especificado y devuelve la última


posición donde se encontró

rindex() Busca en la cadena un valor especificado y devuelve la última


posición donde se encontrórjust() Returns a right justified
version of the string

rpartition() Devuelve una tupla donde la cadena se divide en tres partes

rsplit() Divide la cadena en el separador especificado y devuelve una


lista

rstrip() Devuelve una versión de corte derecha de la cadena

split() Divide la cadena en el separador especificado y devuelve una


listasplitlines() Divide la cadena en los saltos de línea y devuelve una lista

startswith() Devuelve verdadero si la cadena comienza con el valor


especificado

strip() Devuelve una versión recortada de la

cadenaswapcase() Cambia los casos, las minúsculas se convierten en mayúsculas y


viceversa.

title() Convierte el primer carácter de cada palabra a mayúsculas

translate() Devuelve una cadena traducida

upper() Convierte una cadena en mayúsculas

zfill() Llena la cadena con un número especificado de valores 0 al


principio
Booleanos de Python
Los booleanos representan uno de los dos valores: True o . False

Valores booleanos
En la programación a menudo es necesario saber si una expresión es
True o False.

Puede evaluar cualquier expresión en Python y obtener una de las dos


respuestas, True o . False

Cuando se comparan dos valores, se evalúa la expresión y Python


devuelve la respuesta booleana:

print(10 > 9)

print(10 == 9)

print(10 < 9)

Cuando se ejecuta una condición en una instrucción if, Python devuelve


o:True False
a = 200

b = 33

if b > a:

print("b is greater than a")

else:

print("b is not greater than a")

Evaluar valores y variables


La función bool()le permite evaluar cualquier valor, y darle o a cambio,
True False

print(bool("Hello"))

print(bool(15))
x = "Hello"

y = 15

print(bool(x))

print(bool(y))

La mayoría de los valores son


verdaderos
Casi cualquier valor se evalúa True si tiene algún tipo de contenido.

Cualquier cadena es True, excepto las cadenas vacías.

Cualquier número es True, excepto 0(cero).

Cualquier lista, tupla, conjunto y diccionario son True, excepto los vacíos.

print(bool("abc"))

print(bool(123))

print(bool(["manzana", "frutilla", "banana"]))

Algunos valores son falsos


De hecho, no hay muchos valores que se evalúen como falso, excepto
valores vacíos, como , , , el número y el valor . Y, por supuesto, el valor
se evalúa como .False()[]{}""0 None False False

print(bool(False))

print(bool(None))

print(bool(0))

print(bool(""))

print(bool(()))

print(bool([]))

print(bool({}))

Un valor u objeto más, en este caso, se evalúa como , y es decir, si tiene


un objeto que se realiza a partir de una clase con una función que
devuelve: False__len__0False
class myclass():
def __len__(self):

return 0

myobj = myclass()

print(bool(myobj))

Las funciones pueden devolver


un valor booleano
Puede crear funciones que devuelvan un valor booleano:

def myFunction() :

return True

print(myFunction())

Puede ejecutar código basado en la respuesta booleana de una función:


def myFunction() :

return True

if myFunction():

print("YES!")

else:

print("NO!")

Python también tiene muchas funciones integradas que devuelven un


valor booleano, como la función isinstance()
, que se puede utilizar para determinar si un objeto es de un tipo de
datos determinado:
x = 200

print(isinstance(x, int))

Operadores de Python
Operadores de Python
Los operadores se utilizan para realizar operaciones en variables y
valores.
Python divide los operadores en los siguientes grupos:

 Operadores aritméticos
 Operadores de asignación
 Operadores de comparación
 Operadores lógicos
 Operadores de identidad
 Operadores de membresía
 Operadores bit a bit

Operadores aritméticos de
Python
Los operadores aritméticos se utilizan con valores numéricos para
realizar operaciones matemáticas comunes:

Operador Nombre Ejemplo


+ Addition x+y

- Subtraction x-y

* Multiplication x*y

/ Division x/y

% Modulus / Resto x%y

** Exponentiation x ** y

// Floor división/Redondea x // y

Operadores de asignación
Los operadores de asignación se utilizan para asignar valores a
variables:

Operador Ejemplo Igual que

= x=5 x=5

+= x += 3 x=x+3

-= x -= 3 x=x-3

*= x *= 3 x=x*3
/= x /= 3 x=x/3

%= x %= 3 x=x%3

//= x //= 3 x = x // 3

**= x **= 3 x = x ** 3

&= x &= 3 x=x&3

|= x |= 3 x=x|3

^= x ^= 3 x=x^3

>>= x >>= 3 x = x >> 3

<<= x <<= 3 x = x << 3

Operadores de comparación
Los operadores de comparación se utilizan para comparar dos valores
Operator Name Example
== Igual x == y

!= No igual x != y

> Mayor que x>y

< Menor que x<y

>= Mayor igual que x >= y

<= Menor igual que x <= y

Operadores lógicos
Los operadores lógicos se utilizan para combinar instrucciones
condicionales
Operador Descripción Ejemplo
and Devuelve True si ambas afirmaciones son verdaderas x < 5 and x < 10

or Devuelve True si una de las declaraciones es verdadera x < 5 or x < 4


not Invierte el resultado, devuelve False si el resultado es verdadero not(x < 5 and x < 10)

Operadores de identidad
Los operadores de identidad se utilizan para comparar los objetos, no si
son iguales, sino si en realidad son el mismo objeto, con la misma
ubicación de memoria:
Operador Descripcion Ejemplo
is Devuelve True si ambas variables son el mismo objeto x is y

is not Devuelve True si ambas variables no son el mismo objeto x is not y

Operadores de membresía
Los operadores de pertenencia se utilizan para comprobar si se presenta
una secuencia en un objeto
Operador Descripcion Ejemplo
in Devuelve True si una secuencia con el valor especificado está presente en el objeto
x in y

not in Devuelve True si una secuencia con el valor especificado no está presente en el objeto
x not in y

Operadores bit a bit


Los operadores bit a bit se utilizan para comparar números (binarios):

Operador Nombre Descripcion

& AND Establece cada bit en 1 si ambos bits son 1


OR Establece cada bit en 1 si uno de los dos bits es
1

^ XOR Establece cada bit en 1 si solo uno de dos bits


es 1

~ NOT Invierte todos los bits

<< Zero rellenar desplazamiento a la izquierda


Desplazar a la izquierda presionando ceros desde la derecha y dejar caer los bits más a
la izquierda

>> Desplazamiento a la derecha firmado Desplace a la derecha


empujando copias del bit más a la izquierda desde la izquierda, y deje que los bits más
a la derecha se caigan

Colecciones de Python (Arrays)


Hay cuatro tipos de datos de colección en el lenguaje de programación
Python:
 List es una colección que se ordena y se puede cambiar. Permite
miembros duplicados.
 Tuple es una colección que se ordena e inmutable. Permite
miembros duplicados.
 Set es una colección que no está ordenada y no está indizada. No
hay miembros duplicados.
 Dictionary es una colección que es desordenada, cambiable e
indizada. No hay miembros duplicados.

Al elegir un tipo de colección, es útil comprender las propiedades de ese


tipo. Elegir el tipo adecuado para un conjunto de datos determinado
podría significar la retención de significado y, podría significar un
aumento en la eficiencia o la seguridad.

Lista
Una lista es una colección que se ordena y se puede cambiar. En Python
las listas se escriben con corchetes.

thislist = ["manzana", "banana", "cherry"]

print(thislist)

Acceder a los elementos


Puede acceder a los elementos de la lista haciendo referencia al número
de índice:

thislist = ["apple", "banana", "cherry"]

print(thislist[1])

Indexación negativa
La indexación negativa significa comenzar desde el final, -1 se refiere al
último elemento, -2 se refiere al segundo último elemento, etc.

thislist = ["apple", "banana", "cherry"]

print(thislist[-1])

Rango de índices
Puede especificar un rango de índices especificando dónde empezar y
dónde finalizar el intervalo.
Al especificar un intervalo, el valor devuelto será una nueva lista con los
elementos especificados.

thislist = ["manzana", "banana", "frutilla", "Naranja", "kiwi", "melon", "mango"]

print(thislist[2:5])

# Esto devolverá los artículos de la posición 2 a la 5.

# Recuerde que el primer elemento es la posición 0,

#y tenga en cuenta que el elemento en la posición 5 NO está incluido

Nota: La búsqueda comenzará en el índice 2 (incluido) y finalizará en el


índice 5 (no incluido).

Recuerde que el primer elemento tiene el índice 0.

Al dejar fuera el valor inicial, el rango comenzará en el primer elemento


thislist = ["manzana", "banana", "frutilla", "Naranja", "kiwi", "melon", "mango"]

print(thislist[:4])

# Esto devolverá los elementos del índice 0 al índice 4.

# Recuerde que el índice 0 es el primer elemento, y el índice 4 es el quinto elemento

# Recuerde que el elemento en el índice 4 NO está incluido

Al dejar fuera el valor final, el rango pasará al final de la lista:


thislist = ["manzana", "banana", "frutilla", "Naranja", "kiwi", "melon", "mango"]

print(thislist[2:])

# Esto devolverá los elementos del índice 2 hasta el final.

# Recuerde que el índice 0 es el primer elemento, y el índice 2 es el tercero

Rango de índices negativos


Especifique los índices negativos si desea iniciar la búsqueda desde el
final de la lista

Este ejemplo devuelve los elementos del índice -4 (incluido) al índice -1


(excluido)
thislist = ["manzana", "banana", "cereza", "naranja", "kiwi", "melon", "mango"]

print(thislist[-4:-1])

# La indexación negativa significa comenzar desde el final de la lista.


# Este ejemplo devuelve los elementos del índice -4 (incluido) al índice -1 (excluido)

# Recuerde que el último elemento tiene el índice -1,

Cambiar valor de elemento


Para cambiar el valor de un elemento específico, consulte el número de
índice:
thislist = ["manzana", "banana", "cereza"]
thislist[1] = "coco"
print(thislist)

Bucle a través de una lista


Puede recorrer los elementos de la lista mediante un bucle: for

Imprima todos los elementos de la lista, uno por uno:


thislist = ["manzana", "banana", "cereza"]

for x in thislist:

print(x)

Compruebe si el elemento
existe
Para determinar si un elemento especificado está presente en una lista,
utilice la palabra clave:in

Compruebe si "manzana" está presente en la lista:


thislist = ["manzana", "banana", "cereza"]

if "manzana" in thislist:

print("Si, 'manzana' esta en la lista de frutas")

Longitud de la lista
Para determinar cuántos elementos tiene una lista, utilice la
función: len()

Imprima el número de elementos de la lista:


thislist = ["manzana", "banana", "cereza"]

print(len(thislist))
Añadir elementos
Para añadir un elemento al final de la lista, utilice el método append():

thislist = ["manzana", "banana", "cereza"]

thislist.append("naranja")

print(thislist)

Para añadir un elemento en el índice especificado, utilice el


método insert():
thislist = ["manzana", "banana", "cereza"]

thislist.insert(1, "naranja")

print(thislist)

Eliminar elemento
Existen varios métodos para eliminar elementos de una lista:

El método remove() quita el elemento especificado:


thislist = ["manzana", "banana", "cereza"]

thislist.remove("banana")

print(thislist)

El método pop() quita el índice especificado (o el último elemento si no


se especifica index):
thislist = ["manzana", "banana", "cereza"]

thislist.pop()

print(thislist)

La palabra clave del quita el índice especificado:


thislist = ["manzana", "banana", "cereza"]

del thislist[0]

print(thislist)

La palabra clave del también puede eliminar la lista por completo:


thislist = ["manzana", "banana", "cereza"]

del thislist

print(thislist) #this provocará un error porque ha eliminado correctamente "thislist".


NameError: el nombre 'thislist' no está definido
El método clear() vacía la lista:
thislist = ["manzana", "banana", "cereza"]

thislist.clear()

print(thislist)

Copiar una lista


Hay maneras de hacer una copia, una forma es usar el método copy()
List integrado.

thislist = ["manzana", "banana", "cereza"]

mylist = thislist.copy()

print(mylist)

Otra forma de hacer una copia es utilizar el método integrado. list()


thislist = ["manzana", "banana", "cereza"]

mylist = list(thislist)

print(mylist)

Unirse a dos listas


Hay varias maneras de unir, o concatenar, dos o más listas en Python.

Una de las formas más fáciles son mediante el uso del operador. +

list1 = ["a", "b" , "c"]

list2 = [1, 2, 3]

list3 = list1 + list2

print(list3)

Otra forma de unir dos listas es añadiendo todos los elementos de list2 a
list1, uno por uno:
list1 = ["a", "b" , "c"]

list2 = [1, 2, 3]

for x in list2:

list1.append(x)
print(list1)

O puede utilizar el método extend(), cuyo propósito es agregar


elementos de una lista a otra lista:
list1 = ["a", "b" , "c"]

list2 = [1, 2, 3]

list1.extend(list2)

print(list1)

El constructor list()
También es posible utilizar el constructor list() para crear una nueva
lista.

thislist = list(("manzana", "banana", "cereza")) # tener en cuenta los parentesis dobles

print(thislist)

Métodos de lista

Python tiene un conjunto de métodos integrados que puede usar en listas.

Método Descripción

append() Agrega un elemento al final de la lista

clear() Elimina todos los elementos de la lista.

copy() Devuelve una copia de la lista.

count() Devuelve el número de elementos con el valor especificado.

extend()
Agregue los elementos de una lista (o cualquier iterable) al final de la lista actual

index()
Devuelve el índice del primer elemento con el valor especificado

insert()
Agrega un elemento en la posición especificada

pop()
Elimina el elemento en la posición especificada.

remove()
Elimina el elemento con el valor especificado.

reverse() Invierte el orden de la lista

sort() Ordena la lista

Tupla
Una tupla es una colección que se ordena e inmutable. En Python las
tuplas se escriben con parentesis.

thistuple = ("manzana", "banana", "cereza")

print(thistuple)

Algunos de los métodos igual a List

Establecer (Set)
Un conjunto es una colección que no está ordenada y no está indizada.
En Python, los conjuntos se escriben entre llaves.

thisset = {"manzana", "banana", "cereza"}

print(thisset)

# Nota: la lista establecida no está ordenada, lo que significa que los


elementos aparecerán en un orden aleatorio.

# Actualice esta página para ver el cambio en el resultado.

Nota: Los conjuntos no están ordenados, por lo que no puede estar


seguro en qué orden aparecerán los elementos.
Acceder a los elementos
No se puede tener acceso a los elementos de un conjunto haciendo
referencia a un índice, ya que los conjuntos no están ordenados los
elementos no tienen ningún índice.

Pero puede recorrer los elementos de conjunto mediante un bucle for o


preguntar si un valor especificado está presente en un conjunto,
mediante la palabra clave. in

thisset = {"manzana", "banana", "cereza"}

for x in thisset:

print(x)

Compruebe si "banana" está presente en el set:


thisset = {"manzana", "banana", "cereza"}

print("banana" in thisset)

Cambiar elementos
Una vez creado un conjunto, no puede cambiar sus elementos, pero
puede agregar nuevos elementos.

Añadir elementos
Para agregar un elemento a un conjunto, utilice el método. add()

Para agregar más de un elemento a un conjunto, utilice el


método.update()

thisset = {"manzana", "banana", "cereza"}

thisset.add("naranja")

print(thisset)

Agregue varios elementos a un conjunto, utilizando el método: update()


thisset = {"manzana", "banana", "cereza"}

thisset.update(["naranja", "mango", "peras"])

print(thisset)
Obtener la longitud de un
conjunto
Para determinar cuántos elementos tiene un conjunto, utilice el
método.len()

thisset = {"apple", "banana", "cherry"}

print(len(thisset))

Eliminar elemento
Para quitar un elemento de un conjunto, utilice el método remove() , o el
método. discard()

thisset = {"manzana", "banana", "cereza"}

thisset.remove("banana")

thisset.discard("cereza")

print(thisset)

Nota: Si el elemento que se va a quitar no existe, remove() generará


un error.
Nota: Si el elemento que se va a quitar no existe, discard()
NO generará un error.

También puede usar el método pop(), para quitar un elemento, pero este
método quitará el último elemento. Recuerde que los conjuntos no están
ordenados, por lo que no sabrá qué elemento se elimina.

El valor devuelto del método pop() es el elemento eliminado.

thisset = {"manzana", "banana", "cereza"}

x = thisset.pop()

print(x)

print(thisset)

El método clear() vacía el conjunto:


thisset = {"manzana", "banana", "cereza"}

thisset.clear()
print(thisset)

La palabra clave del eliminará el conjunto por completo:


thisset = {"apple", "banana", "cherry"}

del thisset

print(thisset) # esto generará un error porque el conjunto ya no existe

Unirse a dos conjuntos


Hay varias maneras de unir dos o más conjuntos en Python.

Puede utilizar el método union() que devuelve un nuevo conjunto que


contiene todos los elementos de ambos conjuntos o el método update()
que inserta todos los elementos de un conjunto en otro:

El método union() devuelve un nuevo conjunto con todos los


elementos de ambos conjuntos:
set1 = {"a", "b" , "c"}

set2 = {1, 2, 3}

set3 = set1.union(set2)

print(set3)

El método update() inserta los elementos de set2 en set1:


set1 = {"a", "b" , "c"}

set2 = {1, 2, 3}

set1.update(set2)

print(set1)

Nota: Ambos y excluirá cualquier elemento duplicado. union()update()

El constructor set()
También es posible utilizar el constructor set() para crear un conjunto.

thisset = set(("manzana", "banana", "cereza"))

print(thisset)#Nota: la lista establecida no está ordenada, por lo que el resultado mostrará los
elementos en un orden aleatorio.
Establecer métodos
Python tiene un conjunto de métodos integrados que puede usar en
conjuntos.

Método Descripción

add() Agrega un elemento al conjunto

clear()
Elimina todos los elementos del conjunto.

copy()
Devuelve una copia del conjunto.

difference()
Devuelve un conjunto que contiene la diferencia entre dos o más conjuntos

difference_update()
Elimina los elementos de este conjunto que también se incluyen en otro conj

discard()
Eliminar el elemento especificado

intersection()
Devuelve un conjunto, es decir, la intersección de otros dos conjuntos.

intersection_update()
Elimina los elementos de este conjunto que no están presentes en

otros conjuntos especificados.

isdisjoint()
Devuelve si dos conjuntos tienen una intersección o no

issubset()
Devuelve si otro conjunto contiene este conjunto o no

issuperset()
Devuelve si este conjunto contiene otro conjunto o no

pop()
Elimina un elemento del conjunto.

remove()
Elimina el elemento especificado.

symmetric_difference()
Devuelve un conjunto con las diferencias simétricas de dos conjuntos.

symmetric_difference_update() inserta las diferencias simétricas de este conjunto y otro

union() Devuelve un conjunto que contiene la unión de conjuntos

update()
Actualice el conjunto con la unión de este conjunto y otros

Diccionario
Un diccionario es una colección que es desordenada, cambiable e
indizada. En Python, los diccionarios se escriben entre llaves y tienen
claves y valores.

thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

print(thisdict)

Acceso a los elementos


Puede acceder a los elementos de un diccionario haciendo referencia a
su nombre de clave, entre corchetes:

thisdict = {

"brand": "Ford",
"model": "Mustang",

"year": 1964

x = thisdict["model"]

print(x)

También hay un método llamado get() que le dará el mismo resultado:


thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

x = thisdict.get("model")

print(x)

Cambiar valores
Puede cambiar el valor de un elemento específico haciendo referencia a
su nombre de clave:

thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

thisdict["year"] = 2018

print(thisdict)

Bucle a través de un
diccionario
Puede recorrer un bucle a través de un diccionario mediante un bucle. for
Al recorrer en bucle un diccionario, el valor devuelto son las claves del
diccionario, pero también hay métodos para devolver los valores.

thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

for x in thisdict:

print(x)

Imprima todos los valores en el diccionario, uno por uno:


thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

for x in thisdict:

print(thisdict[x])

También puede utilizar el método values()para devolver valores de un


diccionario:
thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

for x in thisdict.values():

print(x)

Recorra ambas claves y valoresmediante el método:items()


thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

}
for x, y in thisdict.items():

print(x, y)

Compruebe si la clave existe


Para determinar si una clave especificada está presente en un
diccionario, utilice la palabra clave:in

thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

if "model" in thisdict:

print("Yes, 'model' is one of the keys in the thisdict dictionary")

Adición de elementos
La adición de un elemento al diccionario se realiza mediante una nueva
clave de índice y asignándole un valor:

thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

thisdict["color"] = "red"

print(thisdict)

Eliminación de elementos
Existen varios métodos para eliminar elementos de un diccionario:

El método pop() quita el elemento con el nombre de clave especificado:


thisdict = {

"brand": "Ford",

"model": "Mustang",
"year": 1964

thisdict.pop("model")

print(thisdict)

El método popitem() quita el último elemento insertado):


thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

thisdict.popitem()

print(thisdict)

La palabra clave del quita el elemento con el nombre de clave


especificado:
thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

del thisdict["model"]

print(thisdict)

La palabra clave del también puede eliminar el diccionario por


completo:
thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

del thisdict

print(thisdict) # esto causará un error porque "thislist" ya no existe.

El método vacía el diccionario:clear()


thisdict = {
"brand": "Ford",

"model": "Mustang",

"year": 1964

thisdict.clear()

print(thisdict)

Copiar un diccionario
Hay maneras de hacer una copia, una forma es usar el método
Dictionary integrado. copy()

Haga una copia de un diccionario con el método: copy()


thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

mydict = thisdict.copy()

print(mydict)

Otra forma de hacer una copia es utilizar la función dict() integrada .


thisdict = {

"brand": "Ford",

"model": "Mustang",

"year": 1964

mydict = dict(thisdict)

print(mydict)

Diccionarios anidados
Un diccionario también puede contener muchos diccionarios, esto se
denomina diccionarios anidados.

myfamily = {
"child1" : {

"name" : "Emil",

"year" : 2004

},

"child2" : {

"name" : "Tobias",

"year" : 2007

},

"child3" : {

"name" : "Linus",

"year" : 2011

print(myfamily)

O bien, si desea anidar tres diccionarios que ya existen como


diccionarios:
child1 = {

"name" : "Emil",

"year" : 2004

child2 = {

"name" : "Tobias",

"year" : 2007

child3 = {

"name" : "Linus",

"year" : 2011

myfamily = {
"child1" : child1,

"child2" : child2,

"child3" : child3

print(myfamily)

El constructor dict()
También es posible utilizar el constructor dict() para crear un nuevo
diccionario:

thisdict = dict(brand="Ford", model="Mustang", year=1964)

# tenga en cuenta que las palabras clave no son literales de cadena

# tenga en cuenta el uso de iguales en lugar de dos puntos para la asignación

print(thisdict)

Métodos de diccionario
Método Descripción

clear() Elimina todos los elementos del diccionario.

copy()
Devuelve una copia del diccionario.

fromkeys()
Devuelve un diccionario con las claves y el valor especificados

get()
Devuelve el valor de la clave especificada
items()
Devuelve una lista que contiene una tupla para cada par de

valores clave

keys()
Devuelve una lista que contiene las claves del diccionario

pop()
Elimina el elemento con la clave especificada

popitem()
Elimina el último par clave-valor insertado

setdefault()
Devuelve el valor de la clave especificada. Si la clave no existe: inserte

update()
Actualiza el diccionario con los pares clave-valor especificados.

values()
Devuelve una lista de todos los valores del diccionario.

Python If ... Else


Condiciones de Python y
sentencias If
Python admite las condiciones lógicas habituales de las matemáticas:
 Es igual a: a == b
 No es igual a: a != b
 Menos de: a < b
 Menos o igual que: a <= b
 Mayor que: a > b
 Mayor o igual que: a a >= b

Estas condiciones se pueden utilizar de varias maneras, más


comúnmente en declaraciones "if " y “loops”.

Una "declaración if" se escribe mediante la palabra clave if.

a = 33

b = 200

if b > a:

print("b is greater than a")

Sangría
Python se basa en la sangría (espacio en blanco al principio de una línea)
para definir el ámbito en el código. Otros lenguajes de programación a
menudo utilizan llaves para este propósito.

a = 33

b = 200

if b > a:

print("b is greater than a") # obtendrá un error

Elif
La palabra clave elif es una forma de decir pythons "si las condiciones
anteriores no eran verdaderas, entonces pruebe esta condición".

a = 33

b = 33

if b > a:

print("b is greater than a")

elif a == b:
print("a and b are equal")

Else
La palabra clave else detecta cualquier cosa que no sea detectada por
las condiciones anteriores.

a = 200

b = 33

if b > a:

print("b is greater than a")

elif a == b:

print("a and b are equal")

else:

print("a is greater than b")

También puede tener un sin :elif

a = 200

b = 33

if b > a:

print("b is greater than a")

else:

print("b is not greater than a")

Short Hand If
Si solo tiene una instrucción que ejecutar, puede colocarla en la misma
línea que la instrucción if.

a = 200

b = 33
if a > b: print("a is greater than b")

Short Hand If ... Else


Si solo tiene una instrucción que ejecutar, una para if y otra para ELSE,
puede ponerla todo en la misma línea:

a=2

b = 330

print("A") if a > b else print("B")

Esta técnica se conoce como Operadores ternarios o Expresiones


condicionales.

También puede tener varias sentencias else en la misma línea:

a = 330

b = 330

print("A") if a > b else print("=") if a == b else print("B")

And
La palabra clave and es un operador lógico y se utiliza para combinar
instrucciones condicionales:
a = 200

b = 33

c = 500

if a > b and c > a:

print("Both conditions are True")

Or
La palabra clave or es un operador lógico y se utiliza para combinar
instrucciones condicionales:
a = 200
b = 33

c = 500

if a > b or a > c:

print("At least one of the conditions is True")

Anidado Si
Puede tener instrucciones if dentro de instrucciones if, esto se
denomina instrucciones if anidadas.

x = 41

if x > 10:

print("Above ten,")

if x > 20:

print("and also above 20!")

else:

print("but not above 20.")

La Declaración de pass
if instrucciones if no pueden estar vacías, pero si por alguna razón
tiene una instrucción sin contenido, coloque la instrucción pass para
evitar recibir un error.

a = 33

b = 200

if b > a:

pass

# tener una declaración if vacía como esta, generaría un error sin la declaración pass

Bucles de Python
Python tiene dos comandos de bucle primitivos:
 While los bucles
 for bucles

El bucle de tiempo
Con el bucle while podemos ejecutar un conjunto de instrucciones
siempre que una condición sea verdadera.

i=1

while i < 6:

print(i)

i += 1

Nota: recuerde incrementar i, o de lo contrario el bucle continuará para


siempre.

El bucle while requiere que las variables relevantes estén listas, en este
ejemplo necesitamos definir una variable de indexación, i, que
establecemos en 1.

La Declaración de ruptura
(Break)
Con la instrucción break podemos detener el bucle incluso si la
condición while es verdadera:

i=1

while i < 6:

print(i)

if (i == 3):

break

i += 1
La Declaración continue
Con la instrucción continue podemos detener la iteración actual y
continuar con la siguiente:

i=0

while i < 6:

i += 1

if i == 3:

continue

print(i)

# Faltara el numero 3 en el resultado

La declaración de else
Con la instrucción else podemos ejecutar un bloque de código una vez
cuando la condición ya no es verdadera:

i=1

while i < 6:

print(i)

i += 1

else:

print("i ya no es menor que 6")

Python para bucles


Un bucle for se utiliza para recorrer en iteración una secuencia (es
decir, una lista, una tupla, un diccionario, un conjunto o una cadena).

Esto se parece menos a la palabra clave for en otros lenguajes de


programación y funciona más como un método de iterador como se
encuentra en otros lenguajes de programación orientados a objetos.
Con el bucle for podemos ejecutar un conjunto de instrucciones, una
vez para cada elemento de una lista, tupla, set, etc.

frutas = ["manzana", "banana", "cereza"]

for x in frutas:

print(x)

El bucle for no requiere una variable de indexación para establecer de


antemano.

Bucle a través de una cadena


Incluso las cadenas son objetos iterables, contienen una secuencia de
caracteres:

for x in "banana":

print(x)

La Declaración de ruptura
Con la instrucción break podemos detener el bucle antes de que haya
atravesado todos los elementos:

frutas = ["manzana", "banana", "cereza"]

for x in frutas:

if x == "banana":

break

print(x)

La Declaración continua
Con la instrucción continue podemos detener la iteración actual del
bucle y continuar con la siguiente:

frutas = ["manzana", "banana", "cereza"]

for x in frutas:

if x == "banana":
continue

print(x)

La función range()
Para recorrer un conjunto de código un número especificado de veces,
podemos usar la función range(),

La función range() devuelve una secuencia de números, a partir de 0


de forma predeterminada, e incrementa en 1 (de forma predeterminada)
y termina en un número especificado.

for x in range(6):

print(x)

Tenga en cuenta que range(6) no es los valores de 0 a 6, sino los


valores 0 a 5.

El valor predeterminado de la función range() es 0 como valor inicial,


sin embargo, es posible especificar el valor inicial añadiendo un
parámetro: range(2, 6),lo que significa valores de 2 a 6 (pero sin
incluir 6):

for x in range(2, 6):

print(x)

La función range() por defecto incrementa la secuencia en 1, sin


embargo, es posible especificar el valor de incremento añadiendo un
tercer parámetro: range(2, 30, 3):

for x in range(2, 30, 3):

print(x)

Else in For Loop


La palabra clave else de un bucle especifica un bloque de código que se
ejecutará cuando finalice el bucle: for

for x in range(6):

print(x)

else:
print("Finalmente Terminado!")

Bucles anidados
Un bucle anidado es un bucle dentro de un bucle.

El "bucle interno" se ejecutará una vez para cada iteración del "bucle
externo":

adj = ["rojo", "grande", "sabrosa"]

frutas = ["manzana", "banana", "cereza"]

for x in adj:

for y in frutas:

print(x, y)

La Declaración de pass
Los bucles for no pueden estar vacíos, pero si por alguna razón tiene un
bucle for sin contenido, coloque la instrucción pass para evitar obtener
un error.

for x in [0, 1, 2]:

pass

# tener un ciclo for vacío como este, generaría un error sin la instrucción
pass

Funciones de Python
Una función es un bloque de código que solo se ejecuta cuando se
llama.

Puede pasar datos, conocidos como parámetros, a una función.

Una función puede devolver datos como resultado.


Creación de una función
En Python, una función se define mediante la palabra clave def:

def my_function():
print("Hello from a function")

Llamar a una función


Para llamar a una función, utilice el nombre de la función seguido de
paréntesis:

def my_function():

print("Hello from a function")

my_function()

Argumentos
La información se puede pasar a funciones como argumentos.

Los argumentos se especifican después del nombre de la función, dentro


de los paréntesis. Puede agregar tantos argumentos como desee,
simplemente sepárelos con una coma.

En el ejemplo siguiente se tiene una función con un argumento (fname).


Cuando se llama a la función, pasamos un nombre, que se utiliza dentro
de la función para imprimir el nombre completo:

def my_function(fname):

print(fname + " Refsnes")

my_function("Emil")

my_function("Tobias")

my_function("Linus")

Los argumentos a menudo se acortan a args en la documentación de


Python.
¿Parámetros o argumentos?
Los términos parámetro y argumento se pueden utilizar para la misma
cosa: información que se pasa a una función.

Desde la perspectiva de una función:

Un parámetro es la variable que aparece entre paréntesis en la


definición de función.

Un argumento es el valor que se envía a la función cuando se llama.

Número de argumentos
De forma predeterminada, se debe llamar a una función con el número
correcto de argumentos. Lo que significa que si la función espera 2
argumentos, debe llamar a la función con 2 argumentos, no más, y no
menos.

def my_function(fname, lname):

print(fname + " " + lname)

my_function("Emil", "Refsnes")

#Si intenta llamar a la función con 1 o 3 argumentos, obtendrá un error:

def my_function(fname, lname):

print(fname + " " + lname)

my_function("Emil")

Argumentos arbitrarios, *args


Si no sabe cuántos argumentos se pasarán a la función, agregue un
*antes del nombre del parámetro en la definición de función.

De esta manera, la función recibirá una tupla de argumentos y podrá


acceder a los elementos en consecuencia:

def my_function(*kids):
print("The youngest child is " + kids[2])

my_function("Emil", "Tobias", "Linus")

Los argumentos arbitrarios a menudo se acortan a *args en la


documentación de Python.

Argumentos de palabras clave


También puede enviar argumentos con la sintaxis de clave - valor.

De esta manera el orden de los argumentos no importa.

def my_function(child3, child2, child1):

print("The youngest child is " + child3)

my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")

La frase Argumentos de palabra clave a menudo se acorta a kwargs en


la documentación de Python.

Argumentos de palabras clave


arbitrarias, **kwargs
Si no sabe cuántos argumentos de palabra clave se pasarán a la función,
agregue dos asteriscos: antes del nombre del parámetro en la definición
de función.**

De esta manera, la función recibirá un diccionario de argumentos y


podrá acceder a los elementos en consecuencia:

def my_function(**kid):

print("His last name is " + kid["lname"])


my_function(fname = "Tobias", lname = "Refsnes")

Valor de parámetro
predeterminado
En el ejemplo siguiente se muestra cómo utilizar un valor de parámetro
predeterminado.

Si llamamos a la función sin argumento, utiliza el valor predeterminado:

def my_function(country = "Norway"):

print("I am from " + country)

my_function("Sweden")

my_function("India")

my_function()

my_function("Brazil")

Pasar una lista como


argumento
Puede enviar cualquier tipo de argumento de datos a una función
(cadena, número, lista, diccionario, etc.) y se tratará como el mismo tipo
de datos dentro de la función.

Por ejemplo, si envía una lista como argumento, seguirá siendo una lista
cuando llegue a la función:

def my_function(food):

for x in food:

print(x)

fruits = ["apple", "banana", "cherry"]

my_function(fruits)
Valores devueltos
Para permitir que una función devuelva un valor, utilice la
instrucción:return

def my_function(x):

return 5 * x

print(my_function(3))

print(my_function(5))

print(my_function(9))

La Declaración de pase
function las definiciones no pueden estar vacías, pero si por alguna
razón tiene una definición sin contenido, coloque la instrucción para
evitar recibir un error.functionpass

def myfunction():

pass

# tener una definición de función vacía como esta, generaría un error sin
la instrucción pass

Entrada por teclado: la


función input()
En Informática, la "entrada" de un programa son los datos que llegan
al programa desde el exterior. Actualmente, el origen más habitual es
el teclado.
Abrimos el CMD desde el buscador de programas
Cambiar la ruta de las carpetas donde tenemos alojados los
archivos .py
En mi caso están en un disco E: por eso escribo después de la
sintaxis E:

Para entrar en las carpetas utilizo el comando CD


con el comando DIR podre ver el contenido o directorio de la unidad o
carpeta

Los ejemplos de esta lección se deben ejecutar en un


programa, no en el prompt de IDLE (a menos que se vayan
ejecutando línea a línea).
Para ejecutar un programa colocamos el nombre del programa con su
extensión. “Ejemplo.py”
Y presiono enter del teclado

1) TOOLS – INSTALL PACKAGE CONTROL – (SALE UN


CARTEL INDICANDO QUE SE INSTALO EL PAQUETE
2) PREFERENCIAS – PACKAGE CONTROL –
(ESCRIBIMOS EN EL CUADRO DE DIALOGO INSTALL
PACKAGE) NOS APARECE LUEGO DE UNOS
SEGUNDOS UNA VENTANA PARA INGRESAR EL
SIGUIENTE TEXTO, SUBLIMEREPL, LO
SELECCIONAMOS.
3) SE AGREGARÁ EN EL MENU TOOLS LA HERRAMIENTA
SUBLIMEREPL – ENTRAMOS A PYTHON – PYTHON-
RUN CURRENT FILE (ESTA PARTE DEBE ESTAR
ABIERTO UN ARCHIVO DE PYTHON ANTES)

Acceso directo
[ { "keys": ["ctrl+alt+b"], "command": "run_existing_window_command", "args":
{
"id": "repl_python_run",
"file": "config/Python/Main.sublime-menu"
}}
]

La función input()
La función input() permite obtener texto escrito por teclado. Al llegar a
la función, el programa se detiene esperando que se escriba algo y se
pulse la tecla Intro, como muestra el siguiente ejemplo:
print("¿Cómo se llama? ")
nombre = input()
print("Me alegro de conocerle," ,nombre)
En el ejemplo anterior, el usuario escribe su respuesta en una línea
distinta a la pregunta porque Python añade un salto de línea al final de
cada print().
Si se prefiere que el usuario escriba su respuesta a continuación de la
pregunta, se podría utilizar el argumento opcional end en la
función print(), que indica el carácter o caracteres a utilizar en vez del
salto de línea. Para separar la respuesta de la pregunta se ha añadido
un espacio al final de la pregunta.
print("¿Cómo se llama? ", end="")
nombre = input()
print("Me alegro de conocerle," ,nombre)

Otra solución, más compacta, es aprovechar que a la función input()


se le puede enviar un argumento que se escribe en la pantalla (sin
añadir un salto de línea): como haría?
nombre = input("¿Cómo se llama? ")
print("Me alegro de conocerle", nombre)

Conversión de tipos
De forma predeterminada, la función input() convierte la entrada en
una cadena, aunque escribamos un número. Si intentamos hacer
operaciones, se producirá un error.
Round() es una función incorporada disponible con python. Le
devolverá un número de flotador que se redondeará a los decimales
que se dan como entrada. Si no se especifican los decimales a
redondear, se considera como 0, y se redondeará al entero más
cercano
Ejercicio:
Realizar una entrada de datos que indique la cantidad de pesos que
tiene y que le de la cantidad de dólares que puede comprar a un valor
de 72.55 pesos cada dólar.
cantidad = int(input("Dígame una cantidad en pesos: "))
print(cantidad, "pesos son", round(cantidad / 72.55), "dolares")

Si se quiere que Python interprete la entrada como un número entero,


se debe utilizar la función int() de la siguiente manera:
cantidad = int(input("Dígame una cantidad en pesos: "))
print(f"{cantidad} pesos son {round(cantidad / 72.55)} dolares")

De la misma manera, para que Python interprete la entrada como un


número decimal, se debe utilizar la función float() de la siguiente
manera:
Ejercicios:
Ingresar por pantalla la cantidad de dólares indicando con hasta dos
decimales y realizar la conversión a pesos a un valor de 72.55
cantidad = float(input("Dígame una cantidad en dolares (hasta con 2
decimales): "))
print(f"{cantidad} dolares son {round(cantidad * 72.55)} pesos")
Variables como argumento de la función input()
La función input() sólo puede tener un argumento.
En versiones de Python anteriores a la versión 3.6 esto causaba
problemas cuando se querían incorporar variables en el argumento de
la función input(), pero las cadenas "f" permiten hacerlo fácilmente:
Ejercicio
Realice una entrada de datos que pregunte el nombre, luego pregunte
por su apellido mostrando su nombre en pantalla y por ultimo imprimir
me alegro de conocerte mostrando su nombre y apellido
nombre = input("Dígame su nombre: ")
apellido = input(f"Dígame su apellido, {nombre}: ")
print(f"Me alegro de conocerle, {nombre} {apellido}.")
Ejercicios
Realizar una entrada de un numero, luego indicar que ingrese otro
numero mayor al anterior y por último mostrar la diferencia entre ellos.
numero1 = int(input("Dígame un número: "))
numero2 = int(input(f"Dígame un número mayor que {numero1}: "))
print(f"La diferencia entre ellos es {numero2 - numero1}.")

Ejercicios opcionales
1)
Escriba un programa que pida dos números y que escriba su media
aritmética.
Se recuerda que la media aritmética de dos números es la suma de
ambos números dividida por 2.
print("CÁLCULO DE LA MEDIA DE DOS NÚMEROS")
numero_1 = float(input("Escriba un número: "))
numero_2 = float(input("Escriba otro número: "))

media = (numero_1 + numero_2) / 2


print(f"La media aritmética de {numero_1} y {numero_2} es {media}")
2)
Escriba un programa que pida el peso (en kilogramos) y la altura (en
metros) de una persona y que calcule su índice de masa corporal
(imc).
Se recuerda que el imc se calcula con la fórmula imc = peso / altura 2

Clasificación IMC (kg/m²)

Valores principales Valores adicionales

Bajo peso <18,50 <18,50

Delgadez severa <16,00 <16,00

Delgadez moderada 16,00 - 16,99 16,00 - 16,99

Delgadez leve 17,00 - 18,49 17,00 - 18,49

18,5 - 22,99

Normal 18,5 - 24,99

23,00 - 24,99

Sobrepeso ≥25,00 ≥25,00

25,00 - 27,49

Preobesidad 25,00 - 29,99

27,50 - 29,99

Obesidad ≥30,00 ≥30,00


30,00 - 32,49

Obesidad leve 30,00 - 34,99

32,50 - 34,99

35,00 - 37,49

Obesidad media 35,00 - 39,99

37,50 - 39,99

≥40,00 ≥40,00
Obesidad mórbida

print("CÁLCULO DEL ÍNDICE DE MASA CORPORAL (IMC)")


peso = float(input("¿Cuánto pesa? "))
altura = float(input("¿Cuánto mide en metros? "))

imc = peso / altura ** 2

print(f"Su imc es {round(imc, 1)}")


print("Un ímc muy alto indica obesidad. Los valores normales de imc
están entre 20 y 25,")
print("pero esos límites dependen de la edad, del sexo, de la
constitución física, etc.")

3)
Escriba un programa que pida una distancia en pies y pulgadas y que
escriba esa distancia en centímetros.
Se recuerda que un pie son doce pulgadas y una pulgada son 2,54
cm.
print("CONVERTIDOR DE PIES Y PULGADAS A CENTÍMETROS")
pies = float(input("Escriba una cantidad de pies: "))
pulgadas = float(input("Escriba una cantidad de pulgadas: "))

centimetros = (pies * 12 + pulgadas) * 2.54


print(f"{pies} pies y {pulgadas} pulgadas son {centimetros} cm")

4)
Escriba un programa que pida una distancia en pulgadas y que
escriba esa distancia en centímetros.
Se recuerda que una pulgada son 2,54 cm.
5)
Escriba un programa que pida una distancia en pies y que escriba esa
distancia en centímetros.
Se recuerda que un pie son doce pulgadas y una pulgada son 2,54
cm.
6)
Escriba un programa que pida una temperatura en grados Celsius y
que escriba esa temperatura en grados Fahrenheit.
Se recuerda que la relación entre grados Celsius (C) y grados
Fahrenheit (F) es la siguiente: F = 1,8 * C + 32
def main():
print("CONVERTIDOR DE GRADOS FAHRENHEIT A GRADOS CELSIUS")
fahrenheit = float(input("Escriba una temperatura en grados
Fahrenheit: "))

celsius = (fahrenheit - 32) / 1.8

print(f"{fahrenheit} ºF son {round(celsius, 1)} ºC")

if __name__ == "__main__":
main()

7)
Escriba un programa que pida una temperatura en grados Fahrenheit
y que escriba esa temperatura en grados Celsius.
Se recuerda que la relación entre grados Celsius (C) y grados
Fahrenheit (F) es la siguiente: C = (F - 32) / 1,8
8)
Escriba un programa que pida una cantidad de segundos y que
escriba cuántos minutos y segundos son.

def main():
print("CONVERTIDOR DE SEGUNDOS A MINUTOS")
segundos = int(input("Escriba una cantidad de segundos: "))

minutos = segundos // 60
resto = segundos % 60

print(f"{segundos} segundos son {minutos} minutos y {resto}


segundos")

if __name__ == "__main__":
main()

9)
Escriba un programa que pida una cantidad de segundos y que
escriba cuántas horas, minutos y segundos son

def main():
print("CONVERTIDOR DE SEGUNDOS A HORAS Y MINUTOS")
segundos = int(input("Escriba una cantidad de segundos: "))
horas = segundos // 3600
resto_1 = segundos % 3600
minutos = resto_1 // 60
resto = resto_1 % 60

print(
f"{segundos} segundos son {horas} horas, {minutos} minutos y
{resto} segundos"
)

if __name__ == "__main__":
main()

Las expresiones anteriores se pueden simplificar sin recurrir a


variables intermedias:
def main():
print("CONVERTIDOR DE SEGUNDOS A HORAS Y MINUTOS")
segundos = int(input("Escriba una cantidad de segundos: "))

horas = segundos // 3600


minutos = segundos % 3600 // 60
resto = segundos % 60

print(
f"{segundos} segundos son {horas} horas, {minutos} minutos y
{resto} segundos"
)

if __name__ == "__main__":
main()

10)
Escriba un programa que pida una cantidad y que escriba cuántas
gruesas, docenas y unidades son.
Se recuerda que una gruesa son doce docenas.
def main():
print("CONVERTIDOR A GRUESAS Y DOCENAS")
unidades = int(input("Escriba una cantidad (entera): "))

gruesas = unidades // 144


docenas = unidades % 144 // 12
resto = unidades % 12

print(
f"{unidades} unidades son {gruesas} gruesas, {docenas} docenas
y {resto} unidades"
)

if __name__ == "__main__":
main()

11)

Escriba un programa que pida primero un número par y luego un número


impar (positivos o negativos). En caso de que uno o los dos valores no
sea correcto, se mostrará un único aviso.

PAR E IMPAR (1)

Escriba un número par: -42

Escriba un número impar: 55

¡Gracias por su colaboración!

PAR E IMPAR (1)


Escriba un número par: 4

Escriba un número impar: 4

Uno o más de los valores que ha escrito no son correctos.

Ejecute de nuevo el programa para volver a intentarlo.

PAR E IMPAR (1)

Escriba un número par: 9

Escriba un número impar: 2

Uno o más de los valores que ha escrito no son correctos.

Ejecute de nuevo el programa para volver a intentarlo.

def main():
print("PAR E IMPAR (1)")
par = int(input("Escriba un número par: "))
impar = int(input("Escriba un número impar: "))

if par % 2 == 1 or impar % 2 == 0:
print("Uno o más de los valores que ha escrito no son
correctos.")
print("Ejecute de nuevo el programa para volver a
intentarlo.")
else:
print("¡Gracias por su colaboración!")

if __name__ == "__main__":
main()

12)

Escriba un programa que pida primero un número par (positivo o


negativo) y si el valor no es correcto, muestre un aviso. Si el valor es
correcto, pedirá un número impar (positivo o negativo) y si el valor no
es correcto, mostrará un aviso.

def main():
print("PAR E IMPAR (2)")
par = int(input("Escriba un número par: "))
if par % 2 == 1:
print("No ha escrito un número par.")
print("Ejecute de nuevo el programa para volver a
intentarlo.")
else:
impar = int(input("Escriba un número impar: "))
if impar % 2 == 0:
print("No ha escrito un número impar.")
print("Ejecute de nuevo el programa para volver a
intentarlo.")
else:
print("¡Gracias por su colaboración!")

if __name__ == "__main__":
main()

13)

Escriba un programa que pida dos números enteros y que calcule su


división, escribiendo si la división es exacta o no.

DIVISOR DE NÚMEROS

Escriba el dividendo: 14

Escriba el divisor: 5

La división no es exacta. Cociente: 2 Resto: 4

DIVISOR DE NÚMEROS

Escriba el dividendo: 20

Escriba el divisor: 4

La división es exacta. Cociente: 5

def main():
print("DIVISOR DE NÚMEROS")
dividendo = int(input("Escriba el dividendo: "))
divisor = int(input("Escriba el divisor: "))

if dividendo % divisor == 0:
print(f"La división es exacta. Cociente: {dividendo //
divisor}")
else:
print(
f"La división no es exacta. Cociente: {dividendo //
divisor} "
f"Resto: {dividendo % divisor}"
)

if __name__ == "__main__":
main()

14)

Mejore el programa anterior haciendo que tenga en cuenta que no se


puede dividir por cero:

def main():

print("DIVISOR DE NÚMEROS")

dividendo = int(input("Escriba el dividendo: "))

divisor = int(input("Escriba el divisor: "))

if divisor == 0:

print("No se puede dividir por cero.")

else:

if dividendo % divisor == 0:

print(f"La división es exacta. Cociente: {dividendo // divisor}")


else:

print(

f"La división no es exacta. Cociente: {dividendo // divisor} "

f"Resto: {dividendo % divisor}"

if __name__ == "__main__":

main()

15)

Escriba un programa que pida dos números y que conteste cuál es el


menor y cuál el mayor o que escriba que son iguales.

COMPARADOR DE NÚMEROS

Escriba un número: 23

Escriba otro número: 14.5

Menor: 14.5; Mayor: 23.0

COMPARADOR DE NÚMEROS

Escriba un número: 5.0

Escriba otro número: 5

Los dos números son iguales.

def main():

print("COMPARADOR DE NÚMEROS")

numero_1 = float(input("Escriba un número: "))

numero_2 = float(input("Escriba otro número: "))


if numero_1 > numero_2:

print(f"Menor: {numero_2} Mayor: {numero_1}")

elif numero_1 < numero_2:

print(f"Menor: {numero_1} Mayor: {numero_2}")

else:

print("Los dos números son iguales.")

if __name__ == "__main__":

main()

16)

Escriba un programa que pida el año actual y un año cualquiera y que


escriba cuántos años han pasado desde ese año o cuántos años
faltan para llegar a ese año.

def main():

print("COMPARADOR DE AÑOS")

fecha_1 = int(input("¿En qué año estamos?: "))

fecha_2 = int(input("Escriba un año cualquiera: "))

if fecha_1 > fecha_2:

print(f"Desde el año {fecha_2} han pasado {fecha_1 - fecha_2}


años.")

elif fecha_1 < fecha_2:

print(f"Para llegar al año {fecha_2} faltan {fecha_2 - fecha_1}


años.")
else:

print("¡Son el mismo año!")

if __name__ == "__main__":

main()

17)

Mejore el programa anterior haciendo que cuando la diferencia sea


exactamente un año, escriba la frase en singular:

def main():

print("COMPARADOR DE AÑOS")

fecha_1 = int(input("¿En qué año estamos?: "))

fecha_2 = int(input("Escriba un año cualquiera: "))

if fecha_1 - fecha_2 == 1:

print(f"Desde el año {fecha_2} ha pasado 1 año.")

elif fecha_1 > fecha_2:

print(f"Desde el año {fecha_2} han pasado {fecha_1 - fecha_2}


años.")

elif fecha_1 - fecha_2 == -1:

print(f"Para llegar al año {fecha_2} falta 1 año.")

elif fecha_1 < fecha_2:

print(f"Para llegar al año {fecha_2} faltan {fecha_2 - fecha_1}


años.")

else:
print("¡Son el mismo año!")

if __name__ == "__main__":

main()

El siguiente programa calcula la diferencia antes de evaluar las


condiciones:

def main():

print("COMPARADOR DE AÑOS")

fecha_1 = int(input("¿En qué año estamos?: "))

fecha_2 = int(input("Escriba un año cualquiera: "))

diferencia = fecha_1 - fecha_2

if diferencia == 1:

print(f"Desde el año {fecha_2} ha pasado 1 año.")

elif diferencia > 1:

print(f"Desde el año {fecha_2} han pasado {diferencia} años.")

elif diferencia == -1:

print(f"Para llegar al año {fecha_2} falta 1 año.")

elif diferencia < -1:

print(f"Para llegar al año {fecha_2} faltan {-diferencia} años.")

else:

print("¡Son el mismo año!")


if __name__ == "__main__":

main()

18)

Escriba un programa que pida dos números enteros y que escriba si el


mayor es múltiplo del menor.

def main():

print("COMPARADOR DE MÚLTIPLOS")

numero_1 = int(input("Escriba un número: "))

numero_2 = int(input("Escriba otro número: "))

if numero_1 >= numero_2 and numero_1 % numero_2 != 0:

print(f"{numero_1} no es múltiplo de {numero_2}.")

elif numero_1 >= numero_2 and numero_1 % numero_2 == 0:

print(f"{numero_1} es múltiplo de {numero_2}.")

elif numero_1 < numero_2 and numero_2 % numero_1 != 0:

print(f"{numero_2} no es múltiplo de {numero_1}.")

else:

print(f"{numero_2} es múltiplo de {numero_1}.")

if __name__ == "__main__":

main()
19)

Mejore el programa anterior haciendo que el programa avise cuando


se escriben valores negativos o nulos.

def main():

print("COMPARADOR DE MÚLTIPLOS")

numero_1 = int(input("Escriba un número: "))

numero_2 = int(input("Escriba otro número: "))

if numero_1 == 0 or numero_2 == 0:

print("Lo siento, este programa no admite valores nulos.")

elif numero_1 < 0 or numero_2 < 0:

print("Lo siento, este programa no admite valores negativos.")

elif numero_1 >= numero_2 and numero_1 % numero_2 != 0:

print(f"{numero_1} no es múltiplo de {numero_2}.")

elif numero_1 >= numero_2 and numero_1 % numero_2 == 0:

print(f"{numero_1} es múltiplo de {numero_2}.")

elif numero_1 < numero_2 and numero_2 % numero_1 != 0:

print(f"{numero_2} no es múltiplo de {numero_1}.")

else:

print(f"{numero_2} es múltiplo de {numero_1}.")

if __name__ == "__main__":

main()
20)

Escriba un programa que pida tres números y que escriba si son los
tres iguales, si hay dos iguales o si son los tres distintos.

def main():

print("COMPARADOR DE TRES NÚMEROS")

numero_1 = float(input("Escriba un número: "))

numero_2 = float(input("Escriba otro número: "))

numero_3 = float(input("Escriba otro número más: "))

if (numero_1 == numero_2 != numero_3 or numero_1 ==


numero_3 != numero_2 or

numero_2 == numero_3 != numero_1):

print("Ha escrito uno de los números dos veces.")

elif numero_1 == numero_2 == numero_3:

print("Ha escrito tres veces el mismo número.")

else:

print("Los tres números que ha escrito son distintos.")

if __name__ == "__main__":

main()

21)

Escriba un programa que pida un año y que escriba si es bisiesto o no.


Se recuerda que los años bisiestos son múltiplos de 4, pero los
múltiplos de 100 no lo son, aunque los múltiplos de 400 sí.

COMPROBADOR DE AÑOS BISIESTOS


Escriba un año y le diré si es bisiesto: 2012

El año 2012 es un año bisiesto porque es múltiplo de 4 sin ser múltiplo


de 100.

COMPROBADOR DE AÑOS BISIESTOS

Escriba un año y le diré si es bisiesto: 2010

El año 2010 no es un año bisiesto.

COMPROBADOR DE AÑOS BISIESTOS

Escriba un año y le diré si es bisiesto: 2000

El año 2000 es un año bisiesto porque es múltiplo de 400.

COMPROBADOR DE AÑOS BISIESTOS

Escriba un año y le diré si es bisiesto: 1900

El año 1900 no es un año bisiesto porque es múltiplo de 100 sin ser


múltiplo de 400.

def main():

print("COMPROBADOR DE AÑOS BISIESTOS")

fecha = int(input("Escriba un año y le diré si es bisiesto: "))

if fecha %4 != 0:

print(f"El año {fecha} no es un año bisiesto.")

elif fecha % 100 == 0 and fecha % 400 != 0:

print(f"El año {fecha} no es un año bisiesto porque es múltiplo de


100 "

f"sin ser múltiplo de 400.")

elif fecha % 4 == 0 and fecha % 100 != 0:

print(f"El año {fecha} es un año bisiesto porque es múltiplo de 4 sin


ser múltiplo de 100.")

else:
print(f"El año {fecha} es un año bisiesto porque es múltiplo de
400.")

if __name__ == "__main__":

main()

22)

Escriba un programa que pida los coeficientes de una ecuación de primer


grado (a x + b = 0) y escriba la solución.

Se recuerda que una ecuación de primer grado puede no tener solución,


tener una solución única, o que todos los números sean solución. Se
recuerda que la fórmula de las soluciones es x = -b / a

Estos son algunos ejemplos de posibles respuestas (el orden de los


ejemplos no tiene por qué corresponder con el orden de las condiciones):

ECUACIÓN A X + B = 0

Escriba el valor del coeficiente a: 0

Escriba el valor del coeficiente b: 3

La ecuación no tiene solución.

ECUACIÓN A X + B = 0

Escriba el valor del coeficiente a: 4.2

Escriba el valor del coeficiente b: 21

La ecuación tiene una solución: -5.0

ECUACIÓN A X + B = 0

Escriba el valor del coeficiente a: 0

Escriba el valor del coeficiente b: 0


Todos los números son solución.

def main():

print("ECUACIÓN A X + B = 0")

a = float(input("Escriba el valor del coeficiente a: "))

b = float(input("Escriba el valor del coeficiente b: "))

if a == b == 0:

print("Todos los números son solución.")

elif a == 0:

print("La ecuación no tiene solución.")

else:

print(f"La ecuación tiene una solución: {- b / a}")

if __name__ == "__main__":

main()

23)

Escriba un programa que pida los coeficientes de una ecuación de


segundo grado (a x² + b x + c = 0) y escriba la solución.

Se recuerda que una ecuación de segundo grado puede no tener


solución, tener una solución única, tener dos soluciones o que todos los
números sean solución. Se recuerda que la fórmula de las soluciones
cuando hay dos soluciones es x = (-b √(b2-4ac) ) / (2a)

Estos son algunos ejemplos de posibles respuestas (el orden de los


ejemplos no tiene por qué corresponder con el orden de las condiciones).
a b c Solución

1 -2 2 Sin solución real

2 -7 3 Dos soluciones: 0.5 y 3.0

1 2 1 Una solución: -1.0

0 0 5 Sin solución

0 0 0 Todos los números son solución

0 3 2 Una solución: -0.666...

ECUACIÓN A X² + B X + C = 0

Escriba el valor del coeficiente a: 2

Escriba el valor del coeficiente b: -7

Escriba el valor del coeficiente c: 3

La ecuación tiene dos soluciones: 3.0 y 0.5

def main():

print("ECUACIÓN A X² + B X + C = 0")

a = float(input("Escriba el valor del coeficiente a: "))

b = float(input("Escriba el valor del coeficiente b: "))

c = float(input("Escriba el valor del coeficiente c: "))

d=b*b-4*a*c

if a == b == c == 0:

print("Todos los números son solución.")

elif a == b == 0:

print("La ecuación no tiene solución.")

elif a == 0:

print(f"La ecuación tiene una solución: {- c / b}")

elif d < 0:
print("La ecuación no tiene solución real.")

elif d == 0:

print(f"La ecuación tiene una solución: {- b / (2 * a)}")

else:

print(

f"La ecuación tiene dos soluciones: {(-b - d ** 0.5) / (2 * a)} y {(-


b + d ** 0.5) / (2 * a)}"

if __name__ == "__main__":

main()

24)

Escriba un programa que pregunte primero si se quiere calcular el área


de un triángulo o la de un círculo. Si se contesta que se quiere calcular el
área de un triángulo (escribiendo T o t), el programa tiene que pedir
entonces la base y la altura y escribir el área. Si se contesta que se
quiere calcular el área de un círculo (escribiendo C o c), el programa
tiene que pedir entonces el radio y escribir el área.

Se recuerda que el área de un triángulo es base por altura dividido por 2


y que el área de un círculo es Pi (aproximadamente 3,141592) por el
radio al cuadrado.

Nota: Utilice como valor de pi el valor 3.141592.

CÁLCULO DE ÁREAS

Elija una figura geométrica:

a) Triángulo

b) Círculo
¿Qué figura quiere calcular (Escriba T o C)? T

Escriba la base: 3

Escriba la altura: 5.5

Un triángulo de base 3.0 y altura 5.0 tiene un área de 8.25

CÁLCULO DE ÁREAS

Elija una figura geométrica:

a) Triángulo

b) Círculo

¿Qué figura quiere calcular (Escriba T o C)? C

Escriba el radio: 2

Un círculo de radio 2.0 tiene un área de 12.566370614359172

def main():

print("CÁLCULO DE ÁREAS")

print("Elija una figura geométrica:")

print("a) Triángulo")

print("b) Círculo")

respuesta = input("¿Qué figura quiere calcular (Escriba T o C)? ")

if respuesta == "T" or respuesta == "t":

base = float(input("Escriba la base: "))

altura = float(input("Escriba la altura: "))

print(

f"Un triángulo de base {base} y altura {altura} tiene un área de


{base * altura / 2}"

elif respuesta == "C" or respuesta == "c":


r = float(input("Escriba el radio: "))

print(f"Un círculo de radio {r} tiene un área de {3.141592 * r * r}")

if __name__ == "__main__":

main()

25)

Escriba un programa que pida una distancia en centímetros y que


escriba esa distancia en kilómetros, metros y centímetros (escribiendo
todas las unidades).

def main():

print("CONVERTIDOR DE CM A KM, M Y CM")

centimetros = int(input("Escriba una distancia en centímetros: "))

if centimetros <= 0:

print("Escriba una distancia mayor que cero.")

else:

kilometros = centimetros // 100_000

metros = centimetros % 100_000 // 100

resto = centimetros % 100

print(f"{centimetros} centímetros son {kilometros} km {metros} m


{resto} cm.")
if __name__ == "__main__":

main()

26)

Mejore el programa anterior haciendo que no se escriban las unidades


innecesarias (cuando el valor es cero).

def main():

print("CONVERTIDOR DE CM A KM, M Y CM")

centimetros = int(input("Escriba una distancia en centímetros: "))

if centimetros <= 0:

print("Escriba una distancia mayor que cero.")

else:

kilometros = centimetros // 100000

metros = centimetros % 100000 // 100

resto = centimetros % 100

if centimetros < 0:

print("No se admiten valores negativos")

elif centimetros == 1:

print("1 cm es 1 cm")

else:

print(f"{centimetros} cm son ", end="")

if kilometros:

if (metros and resto == 0) or (metros == 0 and resto):

print(f"{kilometros} km y ", end="")


elif metros or resto:

print(f"{kilometros} km, ", end="")

else:

print(f"{kilometros} km")

if metros:

if resto:

print(f"{metros} m y ", end="")

else:

print(f"{metros} m")

if centimetros == 0 or resto:

print(resto, "cm")

if __name__ == "__main__":

main()

Recursividad
Python también acepta recursividad de función, lo que significa que una
función definida puede llamarse a sí misma.

La recursividad es un concepto matemático y de programación común.


Significa que una función se llama a sí misma. Esto tiene la ventaja de
significado que puede recorrer los datos en bucle para alcanzar un
resultado.

El desarrollador debe tener mucho cuidado con la recursividad, ya que


puede ser bastante fácil deslizarse en la escritura de una función que
nunca termina, o una que utiliza cantidades excesivas de memoria o
potencia del procesador. Sin embargo, cuando se escribe correctamente
la recursividad puede ser un enfoque muy eficiente y matemáticamente
elegante para la programación.

def atras(segundos):

segundos-=1

if segundos >= 0:

print(segundos)

atras(segundos)

else:

print("Termino la cuenta regresiva")

atras(10)

Función recursiva sin retorno

Un ejemplo de una función recursiva sin retorno, es el ejemplo de cuenta


regresiva hasta cero a partir de un número:

def cuenta_regresiva(numero):

numero -= 1

if numero > 0:

print (numero)

cuenta_regresiva(numero)

else:

print ( "Boooooooom!")

print ("Fin de la función", numero)

cuenta_regresiva(5)

Función recursiva con retorno

Un ejemplo de una función recursiva con retorno, es el ejemplo del


calculo del factorial de un número corresponde al producto de todos los
números desde 1 hasta el propio número. Es el ejemplo con retorno más
utilizado para mostrar la utilidad de este tipo de funciones:
def factorial(numero):

print ("Valor inicial ->",numero)

if numero > 1:

numero = numero * factorial(numero -1)

print ("valor final ->",numero)

return numero

print (factorial(5))

En este ejemplo, tri_recursion() es una función que hemos definido


para llamarse a sí misma ("recurse"). Usamos la variable k como los
datos, que disminuyen (-1) cada vez que nos recursivos. La recursividad
termina cuando la condición no es mayor que 0 (es decir, cuando es 0).

Para un nuevo desarrollador puede tomar algún tiempo para averiguar


cómo funciona exactamente esto, la mejor manera de averiguarlo es
probando y modificándolo.

def tri_recursion(k):

if(k > 0):

result = k + tri_recursion(k - 1)

print(result)

else:

result = 0

return result

print("\n\nRecursion Example Results")

tri_recursion(6)

Lambda de Python
Una función lambda es una pequeña función anónima.
Una función lambda puede tomar cualquier número de argumentos,
pero solo puede tener una expresión.

Sintaxis
lambda arguments : expression

Se ejecuta la expresión y se devuelve el resultado:

Ejemplo
Una función lambda que agrega 10 al número pasado como argumento e
imprime el resultado:

x = lambda a: a + 10

print(x(5))

Las funciones de Lambda pueden tomar cualquier número de


argumentos:

Ejemplo
Función lambda que multiplica el argumento a con el argumento b e
imprime el resultado

x = lambda a, b: a * b

print(x(5, 6))

Función lambda que suma el argumento a, b y c e imprime el resultado:

x = lambda a, b, c: a + b + c

print(x(5, 6, 2))

¿Por qué utilizar Lambda


Functions?
El poder de lambda se muestra mejor cuando se utilizan como una
función anónima dentro de otra función.

Supongamos que tiene una definición de función que toma un


argumento y ese argumento se multiplicará por un número desconocido:
def myfunc(n):
return lambda a : a * n

Utilice esa definición de función para crear una función que siempre
duplique el número que envíe:

def myfunc(n):

return lambda a : a * n

mydoubler = myfunc(2)

print(mydoubler(11))

O bien, utilice la misma definición de función para crear una función que
siempre triplica el número que envía:

def myfunc(n):

return lambda a : a * n

mytripler = myfunc(3)

print(mytripler(11))

O bien, utilice la misma definición de función para realizar ambas


funciones, en el mismo programa:

def myfunc(n):

return lambda a : a * n

mydoubler = myfunc(2)

mytripler = myfunc(3)

print(mydoubler(11))

print(mytripler(11))

Utilice funciones lambda cuando se requiera una función anónima


durante un breve período de tiempo.

Clases y objetos de Python


Clases/objetos de Python
Python es un lenguaje de programación orientado a objetos.

Casi todo en Python es un objeto, con sus propiedades y métodos.

Una clase es como un constructor de objetos o un "blueprint" para crear


objetos.

Crear una clase


Para crear una clase, utilice la palabra clave : class

Ejemplo
Cree una clase denominada MyClass, con una propiedad denominada x:

class MyClass:

x=5

print(MyClass)

Crear objeto
Ahora podemos usar la clase denominada MyClass para crear objetos:

Ejemplo
Cree un objeto denominado p1 e imprima el valor de x:

class MyClass:

x=5

p1 = MyClass()

print(p1.x)
La función __init__()
Los ejemplos anteriores son clases y objetos en su forma más simple y
no son realmente útiles en aplicaciones de la vida real.

Para entender el significado de las clases tenemos que entender la


función __init__() integrada.

Todas las clases tienen una función llamada __init__(), que siempre se
ejecuta cuando se inicia la clase.

Utilice la función __init__() para asignar valores a propiedades de objeto


u otras operaciones que sean necesarias realizar cuando se crea el
objeto:

Cree una clase denominada Person, utilice la función __init__() para


asignar valores para name y age:

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

p1 = Person("John", 36)

print(p1.name)

print(p1.age)

Nota: La función __init__()se llama automáticamente cada vez que


se utiliza la clase para crear un nuevo objeto

Métodos de objeto
Los objetos también pueden contener métodos. Los métodos de los
objetos son funciones que pertenecen al objeto.

------------------------------------------------------------------------

¿Cuál es la diferencia entre un método y una función? ... Un método puede operar
con datos que están contenidos dentro de la clase (recordando que un objeto es una
instancia de una clase - la clase es la definición, el objeto es una instancia de esos
datos).

Una funcion es una pieza de código que se llama por su nombre. Se pueden pasar
datos para operar (es decir, los parámetros) y, opcionalmente, se pueden devolver
datos (el valor de retorno). Todos los datos que se pasan a una función se pasan
explícitamente.

Un metodo es una pieza de código que se llama con un nombre que está asociado con
un objeto. En la mayoría de los aspectos, es idéntico a una función, excepto por dos
diferencias clave:

A un método se le pasa implícitamente el objeto sobre el que fue llamado.

Un método puede operar con datos que están contenidos dentro de la clase
(recordando que un objeto es una instancia de una clase - la clase es la definición, el
objeto es una instancia de esos datos).

Vamos a crear un método en la clase Person:

Inserte una función que imprima un saludo y ejecútela en el objeto p1:

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

def myfunc(self):

print("Hello my name is " + self.name)

p1 = Person("John", 36)

p1.myfunc()

El parámetro self
El parámetro self es una referencia a la instancia actual de la clase y se
utiliza para tener acceso a las variables(propiedades) que pertenecen a
la clase.

No tiene que ser nombrado self, se puede llamar como quieras, pero
tiene que ser el primer parámetro de cualquier función de la clase:

Utilice las palabras mysillyobject y abc en lugar de self:


class Person:

def __init__(mysillyobject, name, age):

mysillyobject.name = name

mysillyobject.age = age

def myfunc(abc):

print("Hello my name is " + abc.name)

p1 = Person("John", 36)

p1.myfunc()

Modificar propiedades de
objeto
Puede modificar propiedades en objetos como este:

Establezca la edad de p1 en 40:

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

def myfunc(self):

print("Hello my name is " + self.name)

p1 = Person("John", 36)

p1.age = 40
print(p1.age)

Eliminar propiedades de objeto


Puede eliminar propiedades en objetos mediante la palabra clave: del

Elimine la propiedad age del objeto p1: Nos dará un error

class Person:

def __init__(self, name, age):

self.name = name

self.age = age

def myfunc(self):

print("Hello my name is " + self.name)

p1 = Person("John", 36)

del p1.age

print(p1.age)

Eliminar objetos
Puede eliminar objetos utilizando la palabra clave: del

Elimine el objeto p1: Nos dará error

class Person:

def __init__(self, name, age):

self.name = name
self.age = age

def myfunc(self):

print("Hello my name is " + self.name)

p1 = Person("John", 36)

del p1

print(p1)

La Declaración de pass
class las definiciones no pueden estar vacías, pero si por alguna razón
tiene una definición sin contenido, coloque la instrucción para evitar
recibir un error.classpass

class Person:

pass

Herencia de Python
La herencia nos permite definir una clase que hereda todos los métodos
y propiedades de otra clase.

Clase primaria es la clase de la que se hereda, también denominada


clase base.

Clase secundaria es la clase que hereda de otra clase, también


denominada clase derivada.

Crear una clase principal


Cualquier clase puede ser una clase primaria, por lo que la sintaxis es la
misma que crear cualquier otra clase:
Cree una clase denominada Person, with y properties, y un método:
firstname lastname printname

class Person:

def __init__(self, fname, lname):

self.firstname = fname

self.lastname = lname

def printname(self):

print(self.firstname, self.lastname)

#Utilice la clase Person para crear un objeto y luego ejecute el método


printname:

x = Person("John", "Doe")

x.printname()

Crear una clase secundaria


Para crear una clase que herede la funcionalidad de otra clase, envíe la
clase primaria como parámetro al crear la clase secundaria:

Cree una clase denominada Student, que heredará las propiedades y


métodos de la clase:

class Student(Person):
pass

Nota: Utilice la palabra clave pass cuando no desee agregar ninguna


otra propiedad o método a la clase.

Ahora la clase Student tiene las mismas propiedades y métodos que la


clase Person.

Utilice la clase para crear un objeto y, a continuación, ejecute el


método:Studentprintname

class Person:

def __init__(self, fname, lname):

self.firstname = fname
self.lastname = lname

def printname(self):

print(self.firstname, self.lastname)

class Student(Person):

pass

x = Student("Mike", "Olsen")

x.printname()

Añadir la función __init__()


Hasta ahora hemos creado una clase secundaria que hereda las
propiedades y métodos de su elemento primario.

Queremos agregar la función __init__() a la clase secundaria (en lugar


de la palabra clave). pass

Nota: La función __init__() se llama automáticamente cada vez que se


utiliza la clase para crear un nuevo objeto. __init__()

Agregue la función __init__() a la clase: Student

class Student(Person):
def __init__(self, fname, lname):
#agregar propiedades etc.

Al agregar la función__init__(), la clase secundaria ya no heredará la


función __init__() del elemento primario.

Nota: La función__init__() del elemento secundario reemplaza la


herencia de la función __init__()del elemento primario.

Para conservar la herencia de la función__init__() del elemento


primario, agregue una llamada a la función del elemento primario:
__init__()

class Person:

def __init__(self, fname, lname):

self.firstname = fname

self.lastname = lname
def printname(self):

print(self.firstname, self.lastname)

class Student(Person):

def __init__(self, fname, lname):

Person.__init__(self, fname, lname)

x = Student("Mike", "Olsen")

x.printname()

Ahora hemos agregado correctamente la función __init__() y hemos


mantenido la herencia de la clase primaria, y estamos listos para
agregar funcionalidad en la función.__init__()

Utilice la función super()


Python también tiene una función super() que hará que la clase
secundaria herede todos los métodos y propiedades de su elemento
primario:

class Person:

def __init__(self, fname, lname):

self.firstname = fname

self.lastname = lname

def printname(self):

print(self.firstname, self.lastname)

class Student(Person):
def __init__(self, fname, lname):

super().__init__(fname, lname)

x = Student("Mike", "Olsen")

x.printname()

Mediante el uso de la función super(), no es necesario utilizar el


nombre del elemento primario, heredará automáticamente los métodos
y propiedades de su elemento primario.

Añadir propiedades
Agregue una propiedad llamada graduationyear a la clase: Student

class Person:

def __init__(self, fname, lname):

self.firstname = fname

self.lastname = lname

def printname(self):

print(self.firstname, self.lastname)

class Student(Person):

def __init__(self, fname, lname):

super().__init__(fname, lname)

self.graduationyear = 2019

x = Student("Mike", "Olsen")

print(x.graduationyear)
En el ejemplo siguiente, el año debe ser una variable y pasar a la clase al
crear objetos de alumno. Para ello, añada otro parámetro en la función
__init__():2019Student

Agregue un parámetro y pase el año correcto al crear objetos: year

class Person:

def __init__(self, fname, lname):

self.firstname = fname

self.lastname = lname

def printname(self):

print(self.firstname, self.lastname)

class Student(Person):

def __init__(self, fname, lname, year):

super().__init__(fname, lname)

self.graduationyear = year

x = Student("Mike", "Olsen", 2019)

print(x.graduationyear)

Añadir métodos
class Person:

def __init__(self, fname, lname):

self.firstname = fname

self.lastname = lname

def printname(self):
print(self.firstname, self.lastname)

Agregue un método llamado a la clase:welcomeStudent

class Student(Person):

def __init__(self, fname, lname, year):

super().__init__(fname, lname)

self.graduationyear = year

def welcome(self):

print("Welcome", self.firstname, self.lastname, "to the class of",


self.graduationyear)

x = Student("Mike", "Olsen", 2019)

x.welcome()

Si agrega un método en la clase secundaria con el mismo nombre que


una función en la clase primaria, se invalidará la herencia del método
primario.

Iteradores de Python
Un iterador es un objeto que contiene un número contable de valores.

Un iterador es un objeto sobre el que se puede iterar, lo que significa


que puede recorrer todos los valores.

Técnicamente, en Python, un iterador es un objeto que implementa el


protocolo de iterador, que consiste en los métodos __iter__() y .
__next__()

Iterador vs Iterable
Las listas, tuplas, diccionarios y conjuntos son objetos iterables.
Son contenedores iterables de los que puede obtener un iterador.
Todos estos objetos tienen un método iter() que se utiliza para obtener
un iterador:

Devuelve un iterador de una tupla e imprime cada valor:

mytuple = ("apple", "banana", "cherry")

myit = iter(mytuple)

print(next(myit))

print(next(myit))

print(next(myit))

Incluso las cadenas son objetos iterables y pueden devolver un iterador:

Las cadenas también son objetos iterables, que contienen una secuencia
de caracteres:

mystr = "banana"

myit = iter(mystr)

print(next(myit))

print(next(myit))

print(next(myit))

print(next(myit))

print(next(myit))

print(next(myit))

Bucle a través de un iterador


También podemos usar un bucle para iterar a través de un objeto
iterable:for

Iterar los valores de una tupla:

mytuple = ("apple", "banana", "cherry")


for x in mytuple:

print(x)

Iterar los caracteres de una cadena:

mystr = "banana"

for x in mystr:

print(x)

El bucle realmente crea un objeto de iterador y ejecuta el método next()


para cada bucle.for

Crear un iterador
Para crear un objeto/clase como iterador, debe implementar los métodos
y el objeto.__iter__() __next__()

todas las clases tienen una función llamada. __init__() , que le permite
inicializarse cuando se crea el objeto

El método actúa de forma similar, puede realizar operaciones


(inicialización, etc.), pero siempre debe devolver el propio objeto de
iterador.__iter__()

El método __next__() también permite realizar operaciones y debe


devolver el siguiente elemento de la secuencia.

Cree un iterador que devuelva números, empezando por 1, y cada


secuencia aumentará en uno (devolviendo 1,2,3,4,5 etc.):

class MyNumbers:

def __iter__(self):

self.a = 1

return self

def __next__(self):

x = self.a
self.a += 1

return x

myclass = MyNumbers()

myiter = iter(myclass)

print(next(myiter))

print(next(myiter))

print(next(myiter))

print(next(myiter))

print(next(myiter))

StopIteration
El ejemplo anterior continuaría para siempre si tuviera suficientes
instrucciones next(), o si se utilizaba en un bucle. for

Para evitar que la iteración se siga para siempre, podemos usar la


instrucción.StopIteration

En el método, podemos agregar una condición de terminación para


generar un error si la iteración se realiza un número especificado de
veces:__next__()

Detener después de 20 iteraciones:

class MyNumbers:

def __iter__(self):

self.a = 1

return self

def __next__(self):

if self.a <= 20:


x = self.a

self.a += 1

return x

else:

raise StopIteration

myclass = MyNumbers()

myiter = iter(myclass)

for x in myiter:

print(x)

Módulos Python
¿Qué es un módulo?
Considere que un módulo es el mismo que una biblioteca de código.

Un archivo que contiene un conjunto de funciones que desea incluir en la


aplicación.

Crear un módulo
Para crear un módulo sólo tiene que guardar el código que desea en un
archivo con la extensión de archivo :.py

Guarde este código en un archivo denominado mymodule.py

def greeting(name):
print("Hello, " + name)
Usar un módulo
Ahora podemos usar el módulo que acabamos de crear, usando la
instrucción:import

Importe el módulo denominado mymodule y llame a la función de


saludo:

import mymodule

mymodule.greeting("Jonathan")

Nota: Cuando utilice una función de un módulo, utilice la


sintaxis: module_name.function_name.

Variables en el módulo
El módulo puede contener funciones, como ya se ha descrito, pero
también variables de todos los tipos (arrays, diccionarios, objetos, etc.)

Guarde este código en el archivo mymodule.py

person1 = {
"name": "John",
"age": 36,
"country": "Norway"
}

Importe el módulo denominado mymodule y acceda al diccionario


person1:

import mymodule

a = mymodule.person1["age"]
print(a)

Volver a nombrar un módulo


Puede crear un alias al importar un módulo mediante la palabra clave: as

Cree un alias para mymodule llamado: mx

import mymodule as mx

a = mx.person1["age"]
print(a)
Módulos incorporados
Hay varios módulos integrados en Python, que puede importar cuando lo
desee.

Importe y utilice el módulo:platform

import platform

x = platform.system()
print(x)

Uso de la función dir()


Hay una función integrada para enumerar todos los nombres de función
(o nombres de variables) en un módulo. La función: dir()

Enumere todos los nombres definidos que pertenecen al módulo de


platform:

import platform

x = dir(platform)
print(x)

Nota: La función dir() se puede utilizar en todos los módulos, también en


los que usted mismo crea.

Importar desde módulo


Puede elegir importar solo piezas de un módulo mediante la palabra
clave.from

El módulo denominado mymodule tiene una función y un diccionario:

def greeting(name):
print("Hello, " + name)

person1 = {
"name": "John",
"age": 36,
"country": "Norway"
}

Importe sólo el diccionario person1 del módulo:


from mymodule import person1

print (person1["age"])

Nota: Al importar utilizando la palabra clave, no utilice el nombre del


módulo al hacer referencia a los elementos del módulo. Ejemplo: , no
fromperson1["age"] mymodule.person1["age"]

Python Datetime
Fechas de Python
Una fecha en Python no es un tipo de datos propio, pero podemos
importar un módulo denominado datetime para trabajar con fechas como
objetos de fecha.

Importe el módulo datetime y muestre la fecha actual:

import datetime

x = datetime.datetime.now()
print(x)

Salida de fecha
Cuando ejecutamos el código del ejemplo anterior, el resultado será:

2020-08-12 14:18:57.666217

La fecha contiene año, mes, día, hora, minuto, segundo y microsegundo.

El módulo datetime tiene muchos métodos para devolver información


sobre el objeto de fecha.

Devolver el año y el nombre del día de la semana:

import datetime

x = datetime.datetime.now()

print(x.year)
print(x.strftime("%A"))

Creación de objetos de fecha


Para crear una fecha, podemos usar la clase (constructor) del
módulo.datetime()datetime
La clase requiere tres parámetros para crear una fecha: año, mes,
día.datetime()

Crear un objeto de fecha:

import datetime

x = datetime.datetime(2020, 5, 17)

print(x)

La clase también toma parámetros para la hora y la zona horaria (hora,


minuto, segundo, microsegundo, tzone), pero son opcionales y tienen un
valor predeterminado de , (para la zona horaria).datetime()0None

El método strftime()
El objeto tiene un método para dar formato a los objetos de fecha en
cadenas legibles.datetime

Se llama al método strftime(), y toma un parámetro, format , para


especificar el formato de la cadena devuelta:

Mostrar el nombre del mes:

import datetime

x = datetime.datetime(2018, 6, 1)

print(x.strftime("%B"))
Directive Description Example

%a Weekday, short version Wed

%A Weekday, full version Wednesday

%w Weekday as a number 0-6, 0 is Sunday 3

%d Day of month 01-31 31

%b Month name, short version Dec

%B Month name, full version December

%m Month as a number 01-12 12

%y Year, short version, without century 18


%Y Year, full version 2018

%H Hour 00-23 17

%I Hour 00-12 05

%p AM/PM PM

%M Minute 00-59 41

%S Second 00-59 08

%f Microsecond 000000-999999 548513

%z UTC offset +0100

%Z Timezone CST

%j Day number of year 001-366 365

%U Week number of year, Sunday as the first day of 52


week, 00-53

%W Week number of year, Monday as the first day of 52


week, 00-53

%c Local version of date and time Mon Dec 31 17:41:00 2018

%x Local version of date 12/31/18

%X Local version of time 17:41:00

%% A % character %

Matemáticas de Python
Python tiene un conjunto de funciones matemáticas integradas,
incluyendo un extenso módulo matemático, que le permite realizar
tareas matemáticas en números.

Funciones matemáticas
integradas
Las funciones y se pueden utilizar para encontrar el valor más bajo o
más alto en un iterable:min()max()

x = min(5, 10, 25)


y = max(5, 10, 25)

print(x)
print(y)
La función devuelve el valor absoluto (positivo) del número
especificado:abs()

x = abs(-7.25)

print(x)

La función devuelve el valor de x a la potencia de y (x pow(x, y)y).

Devolver el valor de 4 a la potencia de 3 (igual que 4 * 4 * 4):

x = pow(4, 3)

print(x)

El módulo de matemáticas
Python también tiene un módulo integrado llamado math, que amplía la
lista de funciones matemáticas.

Para usarlo, debe importar el módulo:math

import math

Cuando haya importado el módulo, puede empezar a utilizar métodos y


constantes del módulo.math

El método sqrt(), por ejemplo, devuelve la raíz cuadrada de un


número:math.

import math

x = math.sqrt(64)

print(x)

El método math.ceil()redondea un número hacia arriba hasta su


entero más cercano y el método math.floor()redondea un número
hacia abajo a su entero más cercano y devuelve el resultado:

import math

x = math.ceil(1.4)
y = math.floor(1.4)

print(x) # returns 2
print(y) # returns 1

La constante math.pi, devuelve el valor de PI (3.14...):


import math

x = math.pi

print(x)

Módulo matemático de Python


Python tiene un módulo integrado que puede usar para tareas
matemáticas.

El módulo tiene un conjunto de métodos y constantes. math

Métodos matemáticos
Method Description

math.acos(x) Returns the arc cosine value of x

math.acosh(x) Returns the hyperbolic arc cosine of x

math.asin(x) Returns the arc sine of x

math.asinh(x) Returns the hyperbolic arc sine of x

math.atan(x) Returns the arc tangent value of x

math.atan2(y, x) Returns the arc tangent of y/x in radians

math.atanh(x) Returns the hyperbolic arctangent value of x

math.ceil(x) Rounds a number upwards to the nearest integer, and returns the result

math.comb(n, k) Returns the number of ways to choose k items from n items without repetition and order

math.copysign(x, y) Returns a float consisting of the value of the first parameter and the sign of the
second parameter

math.cos(x) Returns the cosine of x

math.cosh(x) Returns the hyperbolic cosine of x

math.degrees(x) Converts an angle from radians to degrees


math.dist(p, q) Calculates the euclidean distance between two specified points (p and q),
where p and q are the coordinates of that point

math.erf(x) Returns the error function of x

math.erfc(x) Returns the complementary error function of x

math.exp(x) Returns the value of Ex, where E is Euler's number (approximately 2.718281...),
and x is the number passed to it

math.expm1(x) Returns the value of Ex - 1, where E is Euler's number (approximately 2.718281...),


and x is the number passed to it

math.fabs(x) Returns the absolute value of a number

math.factorial() Returns the factorial of a number

math.floor(x) Rounds a number downwards to the nearest integer, and returns the result

math.fmod(x, y) Returns the remainder of specified numbers when a number is divided by another number

math.frexp() Returns the mantissa and the exponent, of a specified value

math.fsum(iterable) Returns the sum of all items in an iterable (tuples, arrays, lists, etc.)

math.gamma(x) Returns the gamma value of x

math.gcd() Returns the highest value that can divide two integers

math.hypot() Find the Euclidean distance from the origin for n inputs

math.isclose() Checks whether two values are close, or not

math.isfinite(x) Checks whether x is a finite number

math.isinf(x) Check whether x is a positive or negative infinty

math.isnan(x) Checks whether x is NaN (not a number)

math.isqrt(n) Returns the nearest integer square root of n

math.ldexp(x, i) Returns the expression x * 2i where x is mantissa and i is an exponent

math.lgamma(x) Returns the log gamma value of x

math.log(x, base) Returns the natural logarithm of a number, or the logarithm of number to base
math.log10(x) Returns the base-10 logarithm of x

math.log1p(x) Returns the natural logarithm of 1+x

math.log2(x) Returns the base-2 logarithm of x

math.perm(n, k) Returns the number of ways to choose k items from n items with order and
without repetition

math.pow(x, y) Returns the value of x to the power of y

math.prod(iterable, *, Returns the product of an iterable (lists, array, tuples, etc.)


start=1)

math.radians(x) Converts a degree value (x) to radians

math.remainder(x, y) Returns the closest value that can make numerator completely divisible by the denominator

math.sin(x) Returns the sine of x

math.sinh(x) Returns the hyperbolic sine of x

math.sqrt(x) Returns the square root of x

math.tan(x) Returns the tangent of x

math.tanh(x) Returns the hyperbolic tangent of x

math.trunc(x) Returns the truncated integer parts of x

Constantes matemáticas
Constant Description

math.e Returns Euler's number (2.7182...)

math.inf Returns a floating-point positive infinity

math.nan Returns a floating-point NaN (Not a Number) value

math.pi Returns PI (3.1415...)


math.tau Returns tau (6.2831...)

JSON de Python
JSON es una sintaxis para almacenar e intercambiar datos.

JSON es texto, escrito con notación de objetos JavaScript.

JSON (acrónimo de JavaScript Object Notation, «notación de objeto de


JavaScript») es un formato de texto sencillo para el intercambio de
datos. Se trata de un subconjunto de la notación literal de objetos de
JavaScript, aunque, debido a su amplia adopción como alternativa a
XML, se considera (año 2019) un formato independiente del lenguaje.

Una de las supuestas ventajas de JSON sobre XML como formato de


intercambio de datos es que resulta mucho más sencillo escribir un
analizador sintáctico (parser) para él. En JavaScript, un texto JSON se
puede analizar fácilmente usando la función eval(), algo que (debido
a la ubicuidad de JavaScript en casi cualquier navegador web) ha sido
fundamental para que haya sido aceptado por parte de la comunidad
de desarrolladores AJAX.

En la práctica, los argumentos a favor de la facilidad de desarrollo de


analizadores o de sus rendimientos son poco relevantes, debido a las
cuestiones de seguridad que plantea el uso de eval() y el auge del
procesamiento nativo de XML incorporado en los navegadores
modernos. Por esa razón, JSON se emplea habitualmente en entornos
donde el tamaño del flujo de datos entre cliente y servidor es de vital
importancia (de aquí su uso por Yahoo!, Google, Mozilla, etc, que
atienden a millones de usuarios) cuando la fuente de datos es
explícitamente de fiar y donde no es importante el hecho de no
disponer de procesamiento XSLT para manipular los datos en el
cliente.

Si bien se tiende a considerar JSON como una alternativa a XML, lo


cierto es que no es infrecuente el uso de JSON y XML en la misma
aplicación; así, una aplicación de cliente que integra datos de Google
Maps con datos meteorológicos en SOAP necesita hacer uso de
ambos formatos.

Sintaxis

Los tipos de datos disponibles con JSON son:


Números: Se permiten números negativos y opcionalmente pueden
contener parte fraccional separada por puntos. Ejemplo: 123.456

Cadenas: Representan secuencias de cero o más caracteres. Se


ponen entre doble comilla y se permiten cadenas de escape. Ejemplo:
"Hola"

Booleanos: Representan valores booleanos y pueden tener dos


valores: true y false

null: Representan el valor nulo.

Array: Representa una lista ordenada de cero o más valores los


cuales pueden ser de cualquier tipo. Los valores se separan por
comas y el vector se mete entre corchetes. Ejemplo
["juan","pedro","jacinto"]

Objetos: Son colecciones no ordenadas de pares de la forma


<nombre>:<valor> separados por comas y puestas entre llaves. El
nombre tiene que ser una cadena y entre ellas. El valor puede ser de
cualquier tipo. Ejemplo:
{"departamento":8,"nombredepto":"Ventas","director": "juan
rodriguez","empleados":[{"nombre":"Pedro","apellido":"Fernandez"},
{"nombre":"Jacinto","apellido":"Benavente"} ]}

JSON en Python
Python tiene un paquete integrado llamado json, que se puede utilizar
para trabajar con datos JSON.

pip install jsonlib # instalamos

Importe el módulo json:

import json

Analizar JSON - Convertir de


JSON a Python
Si tiene una cadena JSON, puede analizarla mediante el
método.json.loads()

El resultado será un diccionario Python.

Convertir de JSON a Python:


import json

# some JSON:
x = '{ "name":"John", "age":30, "city":"New York"}'

# parse x:
y = json.loads(x)

# the result is a Python dictionary:


print(y["age"])

Convertir de Python a JSON


Si tiene un objeto Python, puede convertirlo en una cadena JSON
mediante el método.json.dumps()

Convertir de Python a JSON:

import json

# a Python object (dict):


x = {
"name": "John",
"age": 30,
"city": "New York"
}

# convert into JSON:


y = json.dumps(x)

# the result is a JSON string:


print(y)

Puede convertir objetos Python de los siguientes tipos en cadenas JSON:

 dict
 list
 tuple
 string
 int
 float
 True
 False
 None

Convierta objetos Python en cadenas JSON e imprima los valores:

import json
print(json.dumps({"name": "John", "age": 30}))

print(json.dumps(["apple", "bananas"]))

print(json.dumps(("apple", "bananas")))

print(json.dumps("hello"))

print(json.dumps(42))

print(json.dumps(31.76))

print(json.dumps(True))

print(json.dumps(False))

print(json.dumps(None))

Al convertir de Python a JSON, los objetos de Python se convierten en el


equivalente JSON (JavaScript):

Python JSON

dict Object

list Array

tuple Array

str String

int Number

float Number

True true
False false

None null

Convierta un objeto Python que contenga todos los tipos de datos


legales:

import json

x = {
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ("Ann","Billy"),
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}

print(json.dumps(x))

Dar formato al resultado


En el ejemplo anterior se imprime una cadena JSON, pero no es muy fácil
de leer, sin sangrías ni saltos de línea.

El método tiene parámetros para facilitar la lectura del


resultado:json.dumps()

Utilice el parámetro para definir el número de sangrías: indent

import json

x = {

"name": "John",

"age": 30,

"married": True,

"divorced": False,
"children": ("Ann","Billy"),

"pets": None,

"cars": [

{"model": "BMW 230", "mpg": 27.5},

{"model": "Ford Edge", "mpg": 24.1}

#use cuatro sangrías para facilitar la lectura del


resultado::

print(json.dumps(x, indent=4))

También puede definir los separadores, el valor predeterminado es (", ",


": "), lo que significa usar una coma y un espacio para separar cada
objeto, y dos puntos y un espacio para separar las claves de los valores:

Utilice el parámetro para cambiar el separador


predeterminado:separators

import json

x={

"name": "John",

"age": 30,

"married": True,

"divorced": False,

"children": ("Ann","Billy"),

"pets": None,

"cars": [

{"model": "BMW 230", "mpg": 27.5},

{"model": "Ford Edge", "mpg": 24.1}

]
}

#Utilizar . y un espacio para separar objetos, y un espacio, un = y un


espacio para separar claves de sus valores:

print(json.dumps(x, indent=4, separators=(". ", " = ")))

Ordene el resultado
El método tiene parámetros para ordenar las claves en el
resultado:json.dumps()

Utilice el parámetro para especificar si el resultado debe ordenarse o


no:sort_keys

import json

x={

"name": "John",

"age": 30,

"married": True,

"divorced": False,

"children": ("Ann","Billy"),

"pets": None,

"cars": [

{"model": "BMW 230", "mpg": 27.5},

{"model": "Ford Edge", "mpg": 24.1}

#ordenar el resultado alfabéticamente por teclas:


print(json.dumps(x, indent=4, sort_keys=True))

También podría gustarte