Usamos variables para almacenar valores que pueden usarse para controlar comandos en nuestro código. También podemos alterar estos valores a lo largo del código
# Crea una variable para almacenar el texto name = "Zach" # Crear variables que sean números number_one = 3 number_two = 4 sum_nums = number_one + number_two # También podemos asignar múltiples variables a la vez number_one, number_two = 3, 4 # El valor de una variable se puede cambiar después de haberla creado number_one = number_one + 1
Las variables tienen un type
asociado en función de sus características. Una string (str) es un elemento de texto, un integer (int) es un elemento numérico entero, un float (float) es un número con decimales y un boolean (bool) es un elemento que devuelve True
o False
. Utilizamos el comando type para determinar el type
de un elemento
.
# La salida será str, o cadena print(type(name)) # La salida será int, o entero print(type(sum_nums)) # La salida será bool, o booleano print(type(3==3)) # Podemos cambiar el tipo de un elemento utilizando el nombre abreviado del tipo # Hacemos esto cuando concatenamos cadenas, como: age = 16 print("Mi edad es " + str(age))
Usamos comentarios para dejar notas sobre el código al lector. Los comentarios en realidad no los ejecuta Python, sólo están ahí para ayudarnos a leer el código.
Podemos hacer comentarios multilínea con """
y comentarios de una línea con #
.
""" Un comentario de varias líneas describe su código a alguien que lo esté leyendo. """ Ejemplo: """ Este programa pedirá al usuario dos números. Luego sumará los números e imprimirá el valor final. """ number_one = int(input("Introduzca un número: ")) number_two = int(input("Introduzca un segundo número: ")) print("Suma: " + str(number_one + number_two)) # Utilice comentarios de una sola línea para aclarar partes del código. Ejemplo: # Este programa suma 1 y 2 added = 1 + 2 print(added)
El manejo de excepciones nos permite evitar que nuestros programas se bloqueen en caso de fallo.
# Try/Except with input try: my_number = int(input("Introduzca un número entero: ")) print("Tu número: " + str(my_number)) except ValueError: print("¡Eso no era un entero!") # Try/Except for Type Errors try: my_number = '2' + 2 except TypeError: print("¡Se ha producido un error de tipo!") # Try/Except for Key Errors dictionary = {'1':'k', '3':'A', '4':'R', '5':'E', '6':'L'} try: dictionary['2'] except KeyError: print("Error de tecla") # Try/Except for Attribute Errors try: dictionary.no_method() except AttributeError: print("¡Error de atributo!") # También puede tener try: my_number = int(input("Introduzca un número entero: ")) print("Tu número: " + str(my_number)) except: print("Se ha producido un error.")
Para poder utilizar las funciones randint o choice, debes utilizar import random al principio de tu código.
# Entero aleatorio entre (e incluyendo) bajo y alto import random random_num = random.randint(low, high) random_element = random.choice(string) # Ejemplo: # Devuelve un número aleatorio entre e incluyendo 0 y 10. random_num = random.randint(0,10) # Elemento aleatorio en una cadena random_element = random.choice('abcdefghij')
Podemos decirle al ordenador cómo tomar decisiones utilizando sentencias if/else. Asegúrese de que todo el código dentro de su sentencia if/else tiene una sangría de un nivel
Utilice una sentencia if para ordenar al ordenador que haga algo sólo cuando una condición sea verdadera. Si la condición es falsa, se omitirá el comando sangrado debajo.
if BOOLEAN_EXPRESSION: print("Esto se ejecuta si BOOLEAN_EXPRESSION se evalúa como True") # Ejemplo: # El texto sólo se imprimirá si el usuario introduce un número negativo number = int(input("Introduzca un número: ")) if number < 0: print(str(number) + " ¡es negativo!")
Utilice una sentencia if/else para obligar al ordenador a tomar una decisión entre varias condiciones. Si la primera condición es falsa, el ordenador saltará a la siguiente condición hasta que encuentre una que sea verdadera. Si ninguna condición es verdadera, se ejecutarán los comandos dentro del bloque else.
if condition_1: print("Esto se ejecuta si la condition_1 se evalúa como True") elif condition_2: print("Esto se ejecuta si la condition_2 se evalúa como True") else: print("Se ejecuta si ninguna de las condiciones anteriores se evalúa como True") # Ejemplo: # Este programa imprimirá que el color es secundario color == "púrpura" if color == "rojo" or color == "azul" or color == "amarillo": print("Color primario.") elif color == "verde" or color == "naranja" or color == "morado": print("Color secundario.") else: print("No es un color primario o secundario.")
Los operadores lógicos, de comparación y matemáticos se utilizan para comparar y alterar valores y tomar decisiones.
Utiliza operadores matemáticos para alterar valores.
+ Adición - Resta * Multiplicación / División ** Potencia % Módulo (resto) () Paréntesis (Para el orden de las operaciones) # Ejemplos z = x + y w = x * y # División a = 5.0 / 2 # Devuelve 2.5 b = 5.0 // 2 # Devuelve 2.0 c = 5/2 # Devuelve 2.5 d = 5 // 2 # Devuelve 2 # Incrementar (añadir uno) x += 1 # Disminuir (restar uno) x -= 1 # Valor absoluto absolute_value = abs(x) abs_val = abs(-5) # Devuelve 5 # Raíz cuadrada import math square_root = math.sqrt(x) # Subiendo a una potencia power = math.pow(x, y) # Calcula x^y # Alternate power = x**y # Calcula x^y # Redondeo rounded_num = round(2.675, 2) # Devuelve 2.68
Utiliza operadores de comparación para comparar elementos con el fin de tomar decisiones en tu código. Los operadores de comparación devuelven booleanos (Verdadero/Falso)
.
x == y # es x igual a y x != y # es x no igual a y x > y # es x mayor que y x >= y # es x mayor o igual que y x < y # es x menor que y x <= y # es x menor o igual que y # Operadores de comparación en sentencias if if x == y: print("x e y son iguales") if x > 5: print("x es mayor que 5.")
Utiliza operadores lógicos para comprobar varias condiciones a la vez o una condición de entre varias.
# And Operador and_expression = x and y # Or Operador or_expression = x or y # ¡Puedes combinar muchos booleans! boolean_expression = x and (y or z)
Los bucles nos ayudan a repetir comandos lo que hace nuestro código mucho más corto. Asegúrate de que todo lo que hay dentro del bucle tiene una sangría de un nivel
Utiliza los bucles for cuando quieras repetir algo un número fijo de veces.
# Este bucle for imprimirá "hola" 5 veces for i in range(5): print("hola") # Este bucle for imprimirá los números pares del 1 al 10 for i in range(5): print(i) # Este código se ejecuta en cada elemento de my_list # Este bucle imprimirá 1, luego 5, luego 10, luego 15 my_list = [1, 5, 10, 15] for item in my_list: print(item)
Utiliza bucles while cuando quieras repetir algo un número desconocido de veces o hasta que una condición se vuelva falsa. Si no hay un punto en el que la condición se convierte en falsa, se creará un bucle infinito que siempre debe evitarse.
# Este programa se ejecutará mientras la variable 'number' sea mayor que 0 # Cuenta atrás de 10 a 0 number = 10 while number >= 0: print(number) number -= 1 # También puedes usar la entrada del usuario para controlar un bucle while # Este código continuará ejecutándose mientras el usuario responda "Sí answer = input("¿Código de continuación?: ") while answer == "Sí": answer = input("¿Código de continuación?: ")
Podemos utilizar el comando break para finalizar nuestro código. El comando continue abandonará la estructura de control en ese punto y pasará a los comandos que se encuentren a continuación.
# Este código terminará cuando el usuario introduzca un número negativo o 42 number = int(input("Introduzca un número: ")) while number != 42: if number < 0: break else: print(number) number = int(input("Introduzca un número: ")) # Este código sólo imprimirá los números del 0 al 3 y el 6 for i in range(5): if i < 4: print(i) else: continue print(6)
Escribir una función es como enseñar al ordenador una palabra nueva.
Nombre de las funciones: Puedes nombrar tus funciones como quieras, pero no puedes tener espacios en el nombre de la función. En lugar de espacios, utilice guiones bajos ( _ ) como_este_por_ejemplo
¡Asegúrate de que todo el código dentro de tu función está sentado un nivel!
Definimos una función para enseñar al ordenador las instrucciones de una nueva palabra. Necesitamos usar el término def para decirle al ordenador que estamos creando una función.
def name_of_your_function(): # Código que se ejecutará cuando se haga una llamada a # esta función. # Ejemplo: # Enseña al ordenador a sumar dos números num_one = 1 num_two = 2 def add_numbers(): sum_nums = num_one + num_two
Podemos utilizar el comando return para que una función devuelva un valor al código que la llamó. Sin el comando return, no podríamos utilizar ningún valor alterado que haya sido determinado por la función.
# Añadimos una sentencia return para utilizar el valor de la variable suma num_one = 1 num_two = 2 def add_numbers(): sum_nums = num_one + num_two return sum_nums
Llamamos a una función para decirle al ordenador que lleve a cabo realmente el nuevo comando.
# Llama una vez a la función add_numbers() # El ordenador devolverá un valor de 3 add_numbers() # Llama a la función add_numbers() 3 veces e imprime la salida # La salida será el número 3 impreso en 3 líneas separadas print(add_numbers()) print(add_numbers()) print(add_numbers())
Podemos utilizar parámetros para alterar ciertos comandos en nuestra función. Tenemos que incluir argumentos para los parámetros en nuestra llamada a la función.
# En este programa, los parámetros se utilizan para dar dos números def add_numbers(num_one, num_two): sum_nums = num_one + num_two return sum_nums # Llamamos a la función con valores dentro de los paréntesis # Este programa imprimirá '7' print(add_numbers(3, 4)) # Si tenemos una lista con el mismo número de parámetros, nosotros # puede utilizar los elementos para asignar argumentos utilizando un asterisco my_list = [3, 4] print(add_numbers(*my_list))
Las cadenas son fragmentos de texto. Podemos obtener mucha información sobre las cadenas y alterarlas de muchas maneras utilizando diversos métodos.
Utilizamos la indexación para encontrar o tomar determinadas porciones de una cadena. Los valores del índice siempre comienzan en 0 para el primer carácter y aumentan en 1 a medida que nos movemos hacia la derecha. Desde el final de la cadena, el valor final también tiene un índice de -1 con los valores disminuyendo en 1 a medida que nos movemos hacia la izquierda.
# Imprime un carácter en un índice específico my_string = "hello!" print(my_string[0]) # print("h") print(my_string[5]) # print("!") # Imprime todos los caracteres después del índice específico my_string = "hello world!" print(my_string[1:]) # print("ello world!") print(my_string[6:]) # prints("world!") # Imprime todos los caracteres anteriores al índice específico my_string = "hello world!" print(my_string[:6]) # print("hello") print(my_string[:1]) # print("h") # Imprime todos los caracteres entre los índices específicos my_string = "hello world!" print(my_string[1:6]) # print("ello") print(my_string[4:7]) # print("o w") # Itera a través de cada carácter de la cadena print(len(my_string)) # Imprimirá una letra de la cadena en cada línea en orden my_string = "Turtle" for i in range(len(my_string)): print(my_string[i]) # Completa los comandos si la cadena se encuentra dentro de la cadena dada my_string = "hello world!" if "world" in my_string: print("world") # Concatenación my_string = "Tracy the" print(my_string + " turtle") # print("Tracy the turtle") # Divide la cadena en una lista de letras my_string = "Tracy" my_list = list(my_string) # my_list = ['T', 'r', 'a', 'c', 'y'] # Usando enumerate se imprimirá el número de índice seguido de dos puntos y el # palabra en ese índice para cada palabra de la lista my_string = "Tracy is a turtle" for index, word in enumerate(my_string.split()): print(str(index) + ": " + word)
Hay muchos métodos que se pueden utilizar para alterar las cadenas.
# upper: Para que una cadena esté en mayúsculas my_string = "Hola" my_string = my_string.upper() # devuelve "HOLA" # lower: Para poner una cadena en minúsculas my_string = "Hola" my_string = my_string.lower() # devuelve "hola" # isupper: Devuelve True si una cadena está toda en mayúsculas y False en caso contrario my_string = "HOLA" print(my_string.isupper()) # devuelve True # islower: Devuelve True si una cadena está toda en minúsculas y False en caso contrario my_string = "Hola" print(my_string.islower()) # devuelve False # swapcase: Devuelve una cadena en la que cada letra es la opuesta a la original my_string = "PyThOn" my_string = my_string.swapcase() # devuelve "pYtHoN" # strip: Devuelve una copia de la cadena sin ningún espacio en blanco al principio o al final my_string = " hola " my_string = my_string.strip() # devuelve "hola" # find: Devuelve el índice más bajo de la cadena donde se encuentra la subcadena # Devuelve -1 si no se encuentra la subcadena my_string = "eggplant" index = my_string.find("plant") # devuelve 3 index = my_string.find("Tracy") # devuelve -1 # split: Divide la cadena en una lista de palabras en el espacio en blanco my_string = "Tracy es una tortuga" my_list = my_string.split() # Devuelve ['Tracy', 'es', 'una', 'tortuga']
Las tuplas son secuencias inmutables de elementos.
Creamos una tupla enumerando elementos dentro de paréntesis. Podemos incluir elementos de cualquier tipo.
# my_tuple una nueva tupla llamada "mi_tupla" mi_tupla = (1, 2, 3, 4, 5) # Tuple with elements of different types my_tuple = (0, 1, "Tracy", (1, 2)) # Tuple with single element my_tuple = (3,) # Tuple of tuples my_tuple((0, 1), (2, 3))
Debido a la naturaleza inmutable de las tuplas, no podemos alterar los elementos individuales de la tupla, pero podemos realizar varias otras tareas con ellos.
# Obtener la longitud de la tupla print(len(my_tuple)) # Acceso a elementos dentro de tuplas anidadas print(my_tuple[0][0]) print(my_tuple[1][0]) # Concatenando tuplas x = (1, 2) y = (5, 6) my_tuple = x + (3,) + y
Las listas son secuencias mutables de elementos.
Creamos una lista enumerando elementos dentro de corchetes. Podemos incluir elementos de cualquier tipo.
# Crear una lista vacía my_list = [] # Crear una lista con cualquier número de elementos my_list = [elemento1, elemento2, elemento3] # Ejemplo: number_list = [1, 2, 4] # Una lista puede tener cualquier tipo my_list = [integer, string, boolean] # my_list: a_list = ["hola", 4, True]
Debido a la naturaleza mutable de las listas, podemos alterar elementos individuales de la lista.
# Accede a un elemento de una lista usando indexación a_list = ["hola", 4, True] first_element = a_list[0] # Devuelve "hola" # Accede a múltiples elementos de una lista usando slicing a_list = ["hola", 4, True] first_element = a_list[0:2] # Devuelve ["hola", 4] # Establecer un elemento en una lista a_list = ["hola", 4, True] a_list[0] = 9 # Cambia a_list para que sea [9, 4, True] # Looping over a list # Imprime cada elemento en una línea separada (9, luego 4, luego True) a_list = [9, 4, True] for item in a_list: print(item) # Longitud de una lista a_list = [9, 4, True] a_list_length = len(a_list) # Devuelve 3 # Crea una lista basada en la primera operación # Esto creará una lista con números del 0 al 4 a_list = [x for x in range(5)] # Esto creará una lista con múltiplos de 2 de 0 a 8 list_of_multiples = [2*x for x in range(5)]
Hay muchos métodos que se pueden utilizar para alterar las listas.
# append: Añadir a una lista a_list = ["hola", 4, True] a_list.append("Cachorro") # Ahora a_list = ["hola", 4, Verdadero, "Cachorro"] # pop: Elimina y devuelve el último elemento de la lista a_list = ["hola", 4, True] last_item = a_list.pop() # Elimina Verdadero, ahora a_list = ["hola", 4] # Elimina y devuelve un elemento de una lista en el índice i a_list = ["hola", 4, True] a_list.pop(0) # Elimina "hola", ahora a_list = [4, True] # index: Devuelve el valor del índice del primer elemento de la lista que coincide con el elemento # Hay un error si no existe tal elemento a_list = ["hola", 4, True] a_list.index(4) # Devuelve 1 porque 4 se encuentra en index[1] a_list.index("hi") # Error porque no hay ningún elemento "hi" # sort: Ordena una lista dada my_list = [9, 7, 1, 2, 3] my_list.sort() # Ordena la lista en [1, 2, 3, 7, 9] # reverse: Invierte una lista dada my_list = [1, 2, 3, 4] my_list.reverse() # Invierte la lista a [4, 3, 2, 1] # count: Devuelve el número de instancias de un elemento concreto que se han encontrado my_list = [1, 4, 2, -4, 10, 0, 4, 2, 1, 4] print(my_list.count(4)) # Devuelve 3 print(my_list.count(123)) # Devuelve 0 porque 123 no existe en la lista # extend: Nos permite añadir una lista a una lista my_list = [1, 2, 3] my_list.extend([4, 5, 6]) # Devuelve [1, 2, 3, 4, 5, 6] # remove: Nos permite eliminar un elemento concreto de una lista # Sólo elimina la primera instancia del elemento my_list = ["manzana", "plátano", "naranja", "pomelo"]. my_list.eliminar("naranja") # Devuelve ["manzana", "plátano", "pomelo"] # join: Crea una cadena a partir de una lista con la cadena especificada colocada entre cada elemento my_list = ["Tracy", "es", "a", "tortuga"] (" ").join(my_list) # Devuelve la lista como una cadena con espacios entre palabras
Las listas 2D nos permiten crear listas de listas.
# Crear una lista vacía my_list = [] # Añadir a la lista my_list.append([1, 2, 3]) my_list.append([4, 5, 6]) # Acceder a los elementos dentro de las listas anidadas print(my_list[0]) # Devuelve [1, 2, 3] print(my_list[0][1]) # Devuelve 2 # Toma un trozo de la lista exterior print(my_list[0:2]) # Devuelve [[1, 2, 3], [4, 5, 6]] # Toma un trozo de la lista interior print(my_list[0][0:2]) # Devuelve [1, 2]
Los diccionarios son colecciones de pares clave-valor.
a_dictionary = {key1:value1, key2:value2} # Ejemplo: my_farm = {pigs:2, cows:4} # Este diccionario mantiene el recuento de animales de una granja # Crea un diccionario vacío a_dictionary = {} # Inserta un par clave-valor a_dictionary[key] = value my_farm["horses"] = 1 # La granja tiene ahora un caballo # Obtiene un valor para una clave (key) my_dict[key] # Devolverá la clave my_farm["pigs"] # Devolverá 2, el valor de "pigs" # Usando la palabra clave 'in' my_dict = {"a": 1, "b": 2} print("a" in my_dict) # Devuelve True print("z" in my_dict) # Devuelve False print(2 in my_dict) # Devuelve False, porque 2 no es una clave # Iterando a través de un diccionario for key in my_dict: print("clave: " + str(key)) print("valor: " + str(mi_dict[key]))
Las clases contienen múltiples funciones.
# Declarar una clase class MyClass: # El método __init__ es llamado cada vez que instanciamos nuestra clase def __init__(self): print("Clase iniciada") self.my_num = 0 # Instantiate your class my_num = MyClass() # Accede a las variables de instancia de tu clase print(my_class.my_num) my_class.my_num = 10 # Añadir argumentos a tu clase class Point: def __init__(self, x = 0, y = 0): self.x = x self.y = y # Instanciar la clase p = Punto(3, 4)
Un conjunto contiene una colección desordenada de objetos únicos e inmutables.
# Crea un nuevo conjunto llamado "nuevo_conjunto" new_set = set([]) girl_scout_badges = set([]) # Añadir a un conjunto new_set.add(elemento) girl_scout_badges.add("Susurrador de ardillas") # Un conjunto contiene un valor item in my_set # Devuelve un booleano "Susurrador de ardillas" in girl_scout_badges # Devuelve True # Número de elementos del conjunto len(my_set) len(girl_scout_badges) # Devuelve 1 ya que sólo hay un elemento en el conjunto
Podemos imprimir elementos en la pantalla utilizando el comando print. Si queremos imprimir texto, necesitamos rodear el texto con comillas " ". A diferencia de versiones anteriores de Python, Python3 requiere paréntesis para imprimir
.
print("Hola mundo") print(2 + 2) print(10)
name = "Tracy" age = 13 print("¡Me llamo " + name + " y tengo " + str(age) + " años!")
print("¡Me llamo %s y tengo %d años!" % ('Zara', 21))
Podemos utilizar la entrada del usuario para controlar nuestro código.
# Pedir al usuario una entrada y guardarla en una variable para usarla en el código # Esto sólo funcionará si la entrada se utiliza como una cadena name = input("¿Cómo te llamas? ") # Si la entrada debe utilizarse como un número (por ejemplo, para una matemática # cálculo), incluya el término 'int' o 'float num_one = int(input("Introduzca un número: ")) num_two = int(input("Introduzca un segundo número: ")) num_three = float(input("Introduzca un tercer número: ")) # Esta entrada se puede utilizar para controlar diferentes partes del código print("Hola, " + name) sum_nums = num_one + num_two
Utilice lo siguiente al importar archivos.
# Extraer datos de un fichero: # Archivo de ejemplo: # test.txt # ------------------ # # Hello World # This is File Input # # ------------------ # Abrir el archivo, Crear un objeto Archivo y almacenarlo en una Variable: file = open('test.txt') # Obteniendo todo el texto: file.read() # Devuelve: # Hello World # This is File Input # Obtener una línea de texto: file.readline() # Devuelve: # Hello World # Obteniendo líneas en un archivo: for line in file: print(line + '!') # imprime: # ¡Hola World\n! # ¡Esto es File Input\n! # Nota '\n', que significa el final de una línea de texto for line in file: print(line + '!') # imprime: # Hello World ¡# ! # This is File Input ¡# ! # Para eliminar esta nueva línea extra, podemos usar: for line in file: print(line.strip() + '!') # imprime: # ¡Hola Mundo! # ¡Esto es entrada de archivo! # Cerrar un expediente file.close()