Please enable JavaScript to use CodeHS

Documentación sobre Python3

Básicos

Variables

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))

Comentarios

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)

Excepciones

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.")

Números aleatorios

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')

Estructuras de control

Estados If/If Else

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

Declaraciones If

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!")

Instrucciones if/else

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.")

Operadores

Los operadores lógicos, de comparación y matemáticos se utilizan para comparar y alterar valores y tomar decisiones.

Operadores matemáticos

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

Operadores de comparación

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.")

Operadores lógicos

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)

Bucles

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

Bucle fors

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)

Bucles While

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?: ")

Interrumpir y continuar

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)

Funciones

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!

Definiendo una función

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

Devolver valores en funciones

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

Llamando a una función

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())

Uso de parámetros en funciones

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))

Estructuras de datos

Cadenas

Las cadenas son fragmentos de texto. Podemos obtener mucha información sobre las cadenas y alterarlas de muchas maneras utilizando diversos métodos.

Indexación de una cadena

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)

Métodos de cadena

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']

Tuplas

Las tuplas son secuencias inmutables de elementos.

Crear una tupla

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))

Alterar una tupla

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

Listas

Las listas son secuencias mutables de elementos.

Crear una lista

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]

Alterar una lista

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)]

Métodos de lista

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

Listas 2D

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]

Diccionarios

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]))

Clases

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)

Conjuntos

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

Input/Output (I/O)

Impresión

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)

Formato de cadena

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))

Entrada del usuario

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

Entrada de archivos

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()