Python 101
Autor
Vanessa ReteguínDiferencias significativas de python respecto a otros lenguajes
- A diferencia de otros lenguajes como C++ o PHP, los cuales emplean llaves ("{}") para delimitar secciones de código que pertenecen a condiciones, ciclos, etc.; en python todo lo que esté dentro a cierta identación pertenece a lo que esté a un nivel arriba.
- Las sentencias de código no se terminan con ";"
- No es obligatorio inicializar las variables antes de emplearlas ni especificar su tipo de variable
- No es necesario importar librerías relacionadas a la manipulación de entradas y salidas (como
<iostream>en C++ ySystemen C#), un método main o clases de inicialización (como en Java)
Por ejemplo:
C++
#include
using namespace std;
int main() {
int i;
for(i = 0; i < 5; i++){
cout << "hi";
}
return 0;
}
Python
for i in range(0, 5):
print("hi")
elif: A diferencia de otros lenguajes en los que una condición alternativa a la primaria se puede denotar mediante un else if(), python emplea la palabra reservada elif. Por ejemplo:C++
string food = "sandwich";
if (food == "tacos"){
cout << "Favorite food";
} else if (food == "chilaquiles"){
cout << "Favorite food";
} else {
cout << "Not favorite food";
}
Python
food = "sandwich"
if (food == "tacos"):
print("Favorite food")
elif (food == "chilaquiles"):
print("Favorite food")
else:
print("Not favorite food")
+= : Los operadores ++ y -- para incrementar y disminuir variables en 1 unidad se denotan como += y -= en python. Nóteste que existen otros operadores con operaciones similares como *= y :=:Datos
Comandos esenciales
¿Cómo imprimir datos?
print("Hello world")
Hello world
¿Cómo agregar un comentario?
# Comentario
print("Esto es código")
"""
Este es
un comentario
multilínea
"""
Esto es código
Observemos que los comentarios fueron ignorados por el interpredador
¿Cómo agregar un TODO/FIXME?
Cuando hacemos un programa, muchas veces no tenemos bien definido cómo vamos a crear cada uno de las clases o funciones específicas de nuestro programa, pero por ejemplo, tenemos metas claras de elementos que debe tener o elementos que queremos recordar optimizar en el futuro. Dentro del IDE PyCharm, es posible agregar tareas (TODO) o recordatorios (FIXME) que serán resaltados e indexados dentro de la ventana de TODO de PyCharm.
¿Cómo imprimir sin salto de línea?
Agrega el parámetro end=" " dentro de la función print()
print("Hello with newline")
print("Hello without newline", end=" ")
print("******")
Hello with newline
Hello without newline ******
¿Cómo imprimir/concatenar una variable dentro de una cadena?
Para concatenar variables dentro de una cadena, podemos emplear un “f-string”, el cual consiste en agregar una “f” antes de la cadena y posicionar las variables en el lugar deseado envuelata en corchetes (”{}”).
age = 21
print(f"I'm {age} years old")
favorite_number = 42
text = f"My favorite number is {favorite_number}"
print(text)
I'm 21 years old
My favorite number is 42
int age = 21
float price = 19.25
print(age)
print(price)
¿Cómo ingresar datos?
name = input("Cómo te llamas?: ")
print(f"Hola {name}!")
Cómo te llamas?: Cardui
Hola Cardui!
Nótese que la función input retornará una cadena. Por lo tanto, si la entrada esperada es un número por ejemplo, es necesario transformar la entrada en el tipo de dato adecuado; es decir, hacer un cast.
favNum = int(input("Cuál es tu número favorito?: "))
if favNum < 100:
print("Tú número favorio es menor a 100")
else:
print("Tú número favorio es mayor a 100")
Cuál es tu número favorito?: 42
Tú número favorio es menor a 100
Tipos de variables
¿Cómo obtener un tipo de variable?
dog = 'Kypton'
age = 12
alive = True
print(type(dog))
print(type(age))
print(type(alive))
<class 'str'>
<class 'int'>
<class 'bool'>
Cadenas str
name = “Sherlock”
print(name)
Sherlock
Números int, float, complex
Nótese que Python maneja operaciones con números complejos
age = 21 # int
price = 19.25 # float
print(f"age: {age}")
print(f"price: {price}")
z = 2+3j # complex
print(f"z: {z}")
coodinate = complex(1.6, 8.3)
print(coodinate)
print(coodinate.real)
print(coodinate.imag)
age: 21
price: 19.25
z: (2+3j)
(1.6+8.3j)
1.6
8.3
Boleanos bool
Los clásicos verdadero (True) y falso (False)
human = True
reptile = False
me = human
if me == human:
print("I am human")
else:
print("I'm not human")
I am human
Secuencias (estructuras lineares) list, tuple, range
List vs tuple
List (lista) Mutable Puedes cambiar sus valores en el futuro
Tuple (tupla) Inmutable NO puedes cambiar sus valores en el futuro
Ejemplo:
tacos = ["lechón", "birria", "costilla"] # list
tacos_forever = ("pastor", "bisteck", "arrachera") # tuple
print(tacos)
print(tacos_forever)
x = range(1, 10, 2)
y = list(x)
print(x)
print(y)
['lechón', 'birria', 'costilla']
('pastor', 'bisteck', 'arrachera')
range(1, 10, 2)
[1, 3, 5, 7, 9]
Range range(start, stop, step)
Generar elementos de en un rango especificado. No es lo mismo que una lista. Es un tipo de objeto diferente.
ages = range(1, 10, 2)
print(ages)
for i in ages:
print(i)
range(1, 10, 2)
1
3
5
7
9
Diccionarios (estructuras multidimensionales) dict
Su característica principal es almacenar la información a manera de {Key: Value}, por ello son común mente conocidos como diccionarios. Además de poder accesar a su información fácilmente mediante índices. Por ejemplo:
# Simple dictionary
capitals = {
"Mexico": "Mexico City",
"France": "Paris",
"Germany": "Berlin"
}
print(capitals)
print(capitals["Mexico"]) # Mexico City
# Nesting Dictionaries in Lists
starwars = [
{
"name": "Anakin Skywalker",
"forceSensitive": True,
"kids": ["Luke", "Leia"]
},
{
"name": "Bo-Katan Kryze",
"forceSensitive": False,
"kids": None
}
]
print(starwars)
print(starwars[1]["name"]) # Bo-Katan Kryze
# Nesting a List in a Dictionary
cities = {
"France": ["Paris", "Lille", "Dijon"],
"Germany": ["Berlin", "Hamburg", "Stuttgart"],
}
print(cities)
print(cities["Germany"][1]) # Hamburg
# Nesting a Dictionary in a Dictionary
movies_rating = {
"The Phantom Menace": {
"main_planets": ["Tatooine", "Naboo", "Coruscant"],
"score": 8.2
},
"The Revenge of the Sith": {
"main_planets": ["Mustafar", "Kashyyyk", "Coruscant"],
"score": 9.3
}
}
print(movies_rating)
print(movies_rating["The Revenge of the Sith"]["main_planets"][1]) # Kashyyyk
{'Mexico': 'Mexico City', 'France': 'Paris', 'Germany': 'Berlin'}
Mexico City
[{'name': 'Anakin Skywalker', 'forceSensitive': True, 'kids': ['Luke', 'Leia']}, {'name': 'Bo-Katan Kryze', 'forceSensitive': False, 'kids': None}]
Bo-Katan Kryze
{'France': ['Paris', 'Lille', 'Dijon'], 'Germany': ['Berlin', 'Hamburg', 'Stuttgart']}
Hamburg
{'The Phantom Menace': {'main_planets': ['Tatooine', 'Naboo', 'Coruscant'], 'score': 8.2}, 'The Revenge of the Sith': {'main_planets': ['Mustafar', 'Kashyyyk', 'Coruscant'], 'score': 9.3}}
Kashyyyk