1

Tutorial Fundamentos Python

¿Por qué aprender a programar en Python?

  1. Python ocupa siempre los primeros puestos de los lenguajes mas queridos.
  2. Es fácil de aprender.
  3. Esta en el top 20 de los lenguajes de programación mejor pagos.
  4. Puede ser utilizado en diferentes áreas, especialmente en Análisis de datos (51%) y desarrollo web (45%).
  5. Tiene una demanda laboral muy grande en el mundo de la tecnología.

Herramientas del curso

Hay páginas Web para empezar a aprender Python como https://replit.com/

Algunos comandos y sus significados:

  • print : imprimir una palabra o realizar operaciones
  • <h1>: Se usa para hacer comentarios. Si uno por ejemplo pone # antes del “print” al correr el código, no hace la operación. No se pueden escribir varias líneas</h1>
  • “”” : Escribe un comentario de varias líneas
  • ‘’’ : Escribe un comentario de varias líneas

Herramientas para programar con Python

Algunas de estas herramientas son las siguientes:

  • Editores de código como Visual Studio Code.
  • Terminal y línea de comandos en diversos sistemas operativos.
  • Jupyter Notebooks (si decides entrar a data science).
  • Git para control de versiones.
  • Entornos virtuales con PIP.
  • Entornos integrados de desarrollo (IDE) como PyCharmVisual Studio o DataSpel

Variables

Una Variable es como una caja donde puedo almacenar información (números texto, etc)

Las variables en Python se ponen primero poniendo un identificador por ejemplo my_name = (”Nicolas”). Despues al imprimir “my_name” lo que se mostrará es “Nicolas”

En caso que en el código yo vuelva a asignar un valor a una misma variable, primero se muestra la inical y luego la segunda

input: es una función que hace que podamos asignar un valor a una variable a través de la interacción con el usuario. Todo lo va a tratar como un String

Tipos de datos

Tipos de datos primitivos

  • Integers: números Enteros
  • Floats: números de punto flotante (decimales)
  • Strings: cadena de caracteres (texto)
  • Boolean: boolenaos (Verdadero o Falso)

Tipos de dato adicionales

  • Datos en texto: str
  • Datos numéricos: int, float, complex
  • Datos en secuencia: list, tuple, range
  • Datos de mapeo: dict
  • Set Types: set, frozenset
  • Datos booleanos: bool
  • Datos binarios: bytes, bytearray, memoryview

type: Indica que tipo de dato estoy utilizando

Operadores Aritméticos

Son aquellos que nos permiten ejecutar cualquier calculo.

A continuación unos ejemplos:

print(10 + 10) # Suma
print(10 - 5) # Resta
print(10 * 2) # multiplicación
print(10 / 2) # 5
print(10 % 2) # 0 Indica cual es el residuo
print(10 / 3) # División
print(10 % 3) # Indica cual es el residuo
print(10 // 3) # Indica el número entero de una división
print(2 ** 3) # Exponencial

Ahora, si tenemos una operación matemática como: print(2 ** 3 + 3 - 7 / 1 // 4) debemos recordar el orden en que se resuelven las operaciones:

Untitled

Operadores de Comparación

Para este punto tenemos los operadores:

  • : Mayor que. Devuelve como respuesta un booleano - print(7 > 3)

  • < : Menor que. Devuelve como respuesta un booleano - print(7 < 3)
  • = : Mayor o igual que. Devuelve como respuesta un boolean - print(2 >= 1)

  • <= : Menor o igual que. Devuelve como respuesta un boolean - print(1 <= 2)
  • == : Igualación. Devuelve como respuesta un boolean - print(6 == 6)
  • != : Diferente. Devuelve como respuesta un boolean - print(6 != 10)

Otro ejemplos:

  • print(‘Apple’ == “Apple”) : True ya que las comisllas no alteran el resultado
  • print(‘Apple’ == “apple”) : False, ya que las mayúsculas si afectan el resultado
  • print(“1” == 1) : False, ya que se está comparando un string con un entero
  • age = 37
    print(age >= 18) : True, ya que se está comparando 2 enteros, solo que uno se definió con una variable

Comparación Números Flotantes

Se debe tener cuidado al comparar flotantes, porque el resultado a no ser el mismo, el resultado va a ser un False cuando sabemos que no lo es. Ejemplo:

x = 3.3
print(x) : 3.3
y = 1.1 + 2.2
print(y) : 3.3000000003
print(x == y) : False

  • Comparación por Strings:

y_str = format(y, “.2g”) : estoy creando una variable string formateando el numero y dejándole solo 2 dígitos de largo
print(‘str =>’, y_str) : Al imprimir me sale 3.3
print(y_str == str(x)) : Con esto compare 2 strings

  • Comparar números:

print(y, x)
tolerance = 0.00001 # Estoy agregando o definiendo una tolerancia
print(abs(x - y) < tolerance) # Estoy volviendo como absoluto la operación y después indicando si el resultado es menor que la tolerancia definida

Operadores Lógicos

  • and

print(‘True and True =>’, True and True) # Da True
print(‘True and False =>’, True and False) # Da False

La condición para que de True es que las dos partes de la comparación de un verdadero para que el resultado también de verdadero

Untitled
  • or

print(‘OR’)
print(‘True and True =>’, True or True) # True
print(‘True and False =>’, True or False) # True
print(‘False and True =>’, False or True) # True
print(‘False and False =>’, False or False) # False

Evalúa si alguno de los 2 es verdadero y si si, retorna un True

Untitled

Operador lógico not

Este operador se utiliza para ejecutar negaciones. Uno de los ejemplos mas vistos, es la negación de and

Condicionales

Esto es donde le damos a la computadora que ejecute ciertas instrucciones de acuerdo a las condiciones

String recargado

Con el string se puede hacer muchas mas cosas que considerarlo una cadena de caracteres. A continuación algunos ejemplos:

  • Buscar una palabra dentro de un String

    text = ‘Ella sabe programar en Python’ # nombramos la variable
    print(‘JavaScript’ in text) # estamos preguntando si la palabra “Javascript” está dentro de la frase a lo que será False la respuesta
    print(‘Python’ in text) # estamos preguntando si la palabra “Python” está dentro de la frase a lo que será True la respuesta (Las mayúsculas también cuentan)

  • Contar cantidad de caracteres

    size = len(‘amor’) # estamos asignando a la variable size los caracteres amor, pero la función len se usa para contar los caracteres (incluido espacios)
    print(size) # imprimir

  • Pasar a mayúsculas

    print(text)
    print(text.upper()) # upper sirve para esto

  • Pasar a minúsculas

    rint(text)
    print(text.lower()) # lower sirve para esto

  • Contar caracteres específicos

    print(text.count(‘a’)) # Cuanta la cantidad de a que aparece en el text

  • Pasar de Mayus a Minusc o viceversa

    print(text.swapcase()) # Cambia carácter por carácter

  • Validar si el texto empieza con una serie de caracteres

    print(text.startswith(‘Ella’)) # Saldría True

  • Validar si el texto termina con una serie de caracteres

    print(text.endswith(‘Rust’)) # Saldría False

  • Reemplazar caracteres

    print(text.replace(‘Python’, ‘Go’))

  • Poner el primer caracter en mayúscula

    text_2 = 'este es un titulo’
    print(text_2)
    print(text_2.capitalize())

  • Poner en mayúscula la primera letra de cada palabra

    print(text_2.title())

  • Validar si el texto es un digito o no

    print(text_2.isdigit()) # Nos daría False
    print(‘398’.isdigit()) # Nos daría True porque puede ser un potencial digito

  • Otros comandos

    1. capitaliza Cambia todas las letras a minúsculas menos la primera.
    2. casefold Utilizada para compara cadenas sin importar el tamaño de los caracteres.
    3. center Formaseta una cadena alineandola al centro
    4. count Cuenta las ocurrencias de una cadena
    5. encode Codifica una cadena según la codificación deseada.
    6. endswith Comprueba si la cadena termina con una cadena específica.
    7. expandtabs Convierte los tabuladores en espacios.
    8. find Devuelve el índice de la cadena buscada o -1 si no se encuentra.
    9. format Formatea una cadena de forma avanzada.
    10. format_map Igual que format, pero sin hacer una copia de los parámetros.
    11. index Devuelve el índice de una cadena de caracteres o ValueError.
    12. isalnum Comprueba si la cadena es alfanumérica.
    13. isalpha Comprueba si la cadena es alfabética.
    14. isascci Comprueba si la cadena es ASCII.
    15. isdecimal Comprueba si la cadena es un decimal.
    16. isdigit Comprueba si la cadena es un dígito.
    17. isidentifier Comprueba si la cadena es un identificador.
    18. islower Comprueba si todos los caracteres son minúsculos.
    19. isnumeric Comprueba si la cadena es numérica.
    20. isprintable Comprueba si la cadena es imprimible.
    21. isspace Comprueba si la cadena solo contiene espacios.
    22. istitle Comprueba si la cadena tiene formato de título.
    23. isupper Comprueba si todos los caracteres son mayúsculas.
    24. join Une todos los elementos de un iterador en una cadena.
    25. ljust Justifica la cadena a la izquierda.
    26. lower Convierte la cadena a minúsculas.
    27. lstrip Elimina los caracteres de espacio de la izquierda.
    28. maketrans Crea una tabla de traducción para translate.
    29. partition Crea particiones de una cadena usando un separador.
    30. replace Reemplaza en la misma cadena un carácter por otro.
    31. removeprefix Devuelve una nueva cadena con el prefijo especificado como argumento eliminado si se encuentra en la cadena origina.
    32. removesuffix Devuelve una nueva cadena con el sufijo especificado
    33. rfin Devuelve el índice de la cadena como parámetro buscando por la derecha o -1 si no se encuentra.
    34. rindex Devuelve el índice de la cadena como parámetro buscando por la derecha o ValueError.
    35. rjust Justifica la cadena a la derecha.
    36. rpartition Crea particiones de una cadena usando un separador y comenzando por la derecha.
    37. rsplit Devuelve una lista de cadenas al separar la original por un separador buscando por la derecha.
    38. rstrip Devuelve una lista de cadenas separando la original por saltos de línea.
    39. split Devuelve una lista de cadenas al separar la original por un separador.
    40. splitlines Devuelve una lista de cadenas separando la original por saltos de línea.
    41. startswith Comprueba si la cadena comienza con una cadena específica.
    42. strip Elimina los espacios iniciales y finales de la cadena.
    43. swapcase Cambia el tamaño de cada letra de minúsculas a Mayúsculas y las que estan en Mayúsculas a minúsculas.
    44. title Convierte la cadena a formato título.
    45. translate Reemplaza cada carácter por otro siguiendo una tabla de traducciones.
    46. upper Convierte la cadena a mayúsculas.
    47. zfill Añade ceros a la izquierda a una cadena numérica.

Indexing y slicing

Indexing significa que los textos tienen un indicador, el cual puedo ingresar a nivel de posiciones. Ejemplo

text = 'Ella sabe Python’
print(text[0]) # Me devuelve la E
print(text[1]) # Me devuelve la l

  • Sacar el último carácter

    size = len(text) # Me va a contar la cantidad de caracteres que tiene el texto
    print('size => ', size) # Me va a mostrar que hay 16 caracteres
    print(text[size - 1]) # Como en código empieza en 0, es decir no hay 16 caracteres, se le pone el -1

  • Otra forma de sacar el último carácter

    print(text[-1]) # Esto es porque el -1 de inmediato actúa de izquierda a derecha como contador

Untitled

slicing significa que basado en las posiciones de los caracteres dentro de nuestro string podemos sacar ciertas partes del texto. Por ejemplo:

print(text[0:5]) # saco los caracteres de la posición 0 a la 5 y sale la palabra Ella
print(text[10:16])

print(text[:10]) # Si no le pongo el 0, Python va a saber que inicia desde el principio

  • Ir de un punto al final

    rint(text[5:-1]) # El problema es que sale Sabe Pyhto obviando la n, para solucionar esto
    print(text[5:]) # Sale Sabe Python

  • Saltos

    print(text[10:16:1]) # Me devuelve la palabra Python porque desde el carácter 10 que es la P, salta de 1 en 2
    print(text[10:16:2]) # Me devuelve la palabra Pto porque desde el carácter 10 que es la P, salta de 2 en 2

Listas

Es una variable que me permite guardar varios elementos y no solo uno de ellos. ejemplo:

numbers = [1, 2, 3, 4]
print(numbers)
print(type(numbers)) # Me indica que es una list

tasks = [‘make a dishes’, ‘play PS4’]
print(tasks)

types = [1, True, ‘hola’]
print(types)

  • Al llamar a una posición de la lista:

print(numbers[0]) # Me muestra 1
print(tasks[0]) # Me muestra make a dishes

  • Mutar: Los Strings son inmutables pero las listas si nos permite hacer estos cambios

    tasks[0] = 'estudiar Platzi’
    print(tasks) # Nos cambia make a dishes por estudiar Platzi

Métodos de listas

crud hace referencia a la posibilidad de crear, leer, actualizar y eliminar

  • Agregar un elemento al final

    numbers.append(700) # agrega el 700 siempre al final de la lista
    print(numbers)

  • Agregar un elemento en cualquier posición

    numbers.insert(0, ‘hola’)
    print(numbers)

    numbers.insert(3, ‘change’) # donde se crea un espacio en la posición 3, se inserta change y el resto se corre a la derecha

  • Unir una lista con otra

    tasks = [‘todo 1’, ‘todo 2’, ‘todo 3’]
    new_list = numbers + tasks
    print(new_list)

  • Saber en que posición está y actualizarlo

    index = new_list.index(‘todo 2’) # Me indica en que posición está todo 2. Si lo imprimo sale la posición, pero al cambiarlo así estoy indicando que index es la posición buscada
    new_list[index] = ‘todo changed’ # Lo que quiero cambiar de la posición que ubique
    print(new_list) = El resultasdo

  • Remover o eliminar elementos

    new_list.remove(‘todo 1’) # busca el todo 1 y lo remueve al imprimir la lista
    print(new_list)

  • Eliminar el ultimo elemento de la lista

    new_list.pop() # Si no le envío nada por defecto va a eliminar el último
    print(new_list)

    new_list.pop(0) # En este ejemplo elimino el primero
    print(new_list)

  • Imprimir la lista al revés

    new_list.reverse()
    print(new_list)

  • Ordenar la lista

    numbers_a = [1, 4, 6, 3]
    numbers_a.sort()
    print(numbers_a) # Sale como resultado la lista ordenada

    strings = [‘re’, ‘ab’, ‘ed’]
    strings.sort()
    print(strings) # Sale la lista con los elemento ordenados

    NOTA: Si tengo una lista con palabras y numeros, no sirve el sort

  • Otros Métodos:

    • append(): Añade un ítem al final de la lista.
    • clear(): Vacía todos los ítems de una lista.
    • extend(): Une una lista a otra.
    • count(): Cuenta el número de veces que aparece un ítem.
    • index(): Devuelve el índice en el que aparece un ítem (error si no aparece).
    • insert(): Agrega un ítem a la lista en un índice específico.
    • pop(): Extrae un ítem de la lista y lo borra.
    • remove(): Borra el primer ítem de la lista cuyo valor concuerde con el que indicamos.
    • reverse(): Le da la vuelta a la lista actual.
    • sort(): Ordena automáticamente los ítems de una lista por su valor de menor a mayor.

Tuplas

Las Tuplas son inmutables como las cadenas de texto. y para buscar las posiciones , funciona igual que las listas. Con una tupla solo puedo hjacer una declaración, pero no puedo insertar más elementos allí:

  • Los elementos están separados por espacios luego de las comas
  • Puede contener cualquier tipo de datos
  • Cada posición de la tupla tiene un índice
  • Es inmutable y por lo tanto no puede ser modificada, lo que permite proteger mejor la data si no queremos que se modifique por error

Que se puede hacer:

numbers = (1, 2, 3, 5)
string = (‘nico’, ‘zule’, ‘santi’)

  • Buscar un elemento dentro de la tupla y ver en que posición está:

    print(string)
    print(string.index(‘zule’))

  • Contar cuantas veces está un elemento dentro de la tupla

    Supongamos que la lista sea string = (‘nico’, ‘zule’, ‘santi’, ‘nico’)

    print(string.count(‘nico’)) # saldra el numero 2

  • Pasar de una tupla a una lista

    my_list = list(string)

  • Transformar de una lista a una tupla

Diccionarios

Es un conjunto de elementos que pueden ir agrupados.

my_dict = {
  'avion': 'definición de avión va aca',
  'name': 'Esteban',
  'last_name': 'Benavides Manosalva',
  'age': 37
}

los cuales si los cuento me indica que tengo 4 pares de elementos

También puedo pedir directamente una variable a lo que se arroja la respuesta de esa variable. Si se digita algo que no es da un error directamente

print(my_dict['age'])
print(my_dict['last_name'])

Pero hay otra forma de buscar, en donde si no lo encuentra devuelve none

print(my_dict.get('age'))

De igual forma podemos validar si la palabra contenida se encuentra o no

print('avion'in my_dict)
print('otroqueno'in my_dict)

También es posible cambiar los valores de un diccionario

person = {
  'name': 'Esteban',
  'last_name': 'Benavides Manosalva',
  'langs': ['python', 'javascript'],
  'age': 37
}

print(person)

person['name'] = 'Juan'
person['age'] -= 10
person['langs'].append('rust')

print(person)

De igual forma podemos eliminar un valor completamente de 2 formas diferentes:

del person['last_name']
person.pop('age') # siempre debe tener un valor

Hay otras funciones que se pueden ver

print('items')
print(person.items()) # devuelve los pares en forma de tuplas que sirve para recorrer un diccionario

print('keys')
print(person.keys()) # devuelve una lista de las llaves que se estan utilizando

print('values')
print(person.values()) # devuelve una lista con los valores que se están utilizando

Loops: While

Son ciclos que es una forma de ejecutar un código múltiples veces hasta que una condicional se cumpla.

Ctrl + C : Detiene un ciclo infinito

Con la función “while” que es un mientras, se ejecuta un comando, por lo que se recomienda que siempre se le de una condición para el cumplimiento del comando y así evitar que se vuelva un ciclo infinito

counter = 0while counter < 10:
  counter += 1
  print(counter) # hace que exista un contador que llega hasta 10
while counter < 20:
  counter += 1if counter == 15:
    break# se usa para romper un ciclo de manera forzada y llega hasta el 14
  print(counter)
counter = 0while counter < 20:
  counter += 1# hace que cuente de uno en unoif counter < 15: # le indica al contador que pase algo si el contador es menos a 15continue# esa acción es que continue, es decir que sale a 15 y cuenta hasta 20
  print(counter)

Loops: For

Se utiliza cuando tenemos un numero de elementos o iteraciones dadas por otro elemento

for element in range(20):
  print(element) # devuelve un contador de 0 a 19for element in range(1, 21):
  print(element) # devuelve un contador de 1 a 20

con una lista, es posible utilizar for para que recorra una vez cada elemento

my_list = [36, 25, 89, 92, 95]
for element in my_list:
  print(element)
Untitled

Cúando usar “while” o “for” ?

  • while: cuando no nonozcas la cantidad de elementos a recorrer o la cantidad de iteraciones a realizar.
  • for: cuando conozas la cantidad de elementos a recorrer o el número de iteraciones a relaizar.

Ejercicio:

En este desafío, se te proporcionará una lista de números llamada my_list. Tu tarea es recorrer esta lista y utilizar un ciclo para seleccionar solo los números positivos. Luego, debes agregar estos números a una nueva lista llamada new_list. Al final del ciclo, debes imprimir los valores contenidos en new_list utilizando la función print.

Por ejemplo, si la lista es [1, -1, 2, -2, 3, -3, 4, -4], después de realizar las operaciones descritas, la lista new_list debería contener solo los números positivos, es decir, [1, 2, 3, 4].

Input: [1, -1, 2, -2, 3, -3, 4, -4]
Output: [1, 2, 3, 4]

Desarrollo

my_list = [1, -1, 2, -2, 3, -3, 4, -4]
new_list = []

# Escribe tu solución 👇for number in my_list:
  if number > 0:
      new_list.append(number)

print(new_list)

o

Untitled

Ciclos anidados

Es un ciclo dentro de otro ciclo.

Escribe tu comentario
+ 2