|
1 | | -# Clase en vídeo: https://youtu.be/Kp4Mvapo5kc?t=5665 |
2 | | - |
3 | | -''' |
4 | | -
|
5 | | -''' |
6 | | - |
7 | | -### Operadores Aritméticos ### |
8 | | - |
9 | | -# Operaciones con enteros |
10 | | -print(3 + 4) |
11 | | -print(3 - 4) |
12 | | -print(3 * 4) |
13 | | -print(3 / 4) |
14 | | -print(10 % 3) |
15 | | -print(10 // 3) |
16 | | -print(2 ** 3) |
17 | | -print(2 ** 3 + 3 - 7 / 1 // 4) |
18 | | - |
19 | | -# Operaciones con cadenas de texto |
20 | | -print("Hola " + "Python " + "¿Qué tal?") |
21 | | -print("Hola " + str(5)) |
22 | | - |
23 | | -# Operaciones mixtas |
24 | | -print("Hola " * 5) |
25 | | -print("Hola " * (2 ** 3)) |
26 | | - |
27 | | -my_float = 2.5 * 2 |
28 | | -print("Hola " * int(my_float)) |
29 | | - |
30 | | -### Operadores Comparativos ### |
31 | | - |
32 | | -# Operaciones con enteros |
33 | | -print(3 > 4) |
34 | | -print(3 < 4) |
35 | | -print(3 >= 4) |
36 | | -print(4 <= 4) |
37 | | -print(3 == 4) |
38 | | -print(3 != 4) |
39 | | - |
40 | | -# Operaciones con cadenas de texto |
41 | | -print("Hola" > "Python") |
42 | | -print("Hola" < "Python") |
43 | | -print("aaaa" >= "abaa") # Ordenación alfabética por ASCII |
44 | | -print(len("aaaa") >= len("abaa")) # Cuenta caracteres |
45 | | -print("Hola" <= "Python") |
46 | | -print("Hola" == "Hola") |
47 | | -print("Hola" != "Python") |
48 | | - |
49 | | -### Operadores Lógicos ### |
50 | | - |
51 | | -# Basada en el Álgebra de Boole https://es.wikipedia.org/wiki/%C3%81lgebra_de_Boole |
52 | | -print(3 > 4 and "Hola" > "Python") |
53 | | -print(3 > 4 or "Hola" > "Python") |
54 | | -print(3 < 4 and "Hola" < "Python") |
55 | | -print(3 < 4 or "Hola" > "Python") |
56 | | -print(3 < 4 or ("Hola" > "Python" and 4 == 4)) |
57 | | -print(not (3 > 4)) |
| 1 | +""" |
| 2 | +Clase 03 — Operadores (aritméticos, comparación y lógicos) |
| 3 | +
|
| 4 | +Propósito: |
| 5 | +- Practicar operadores aritméticos: +, -, *, /, //, %, ** |
| 6 | +- Comparaciones: ==, !=, >, >=, <, <= (incluye strings) |
| 7 | +- Lógicos: and, or, not (usa paréntesis si hay duda de precedencia) |
| 8 | +- Casos mixtos con strings (concatenación y repetición) |
| 9 | +
|
| 10 | +Cómo ejecutar: |
| 11 | +- ../.venv/bin/python Hello-Python/Basic/02_operators.py |
| 12 | +
|
| 13 | +Notas: |
| 14 | +- La división por cero lanza ZeroDivisionError. |
| 15 | +- Con strings: "+" concatena, "*" repite (solo con enteros). |
| 16 | +""" |
| 17 | + |
| 18 | + |
| 19 | +def demo_aritmeticos() -> None: |
| 20 | + """Demostración de operadores aritméticos y precedencia básica.""" |
| 21 | + print("-- Aritméticos --") |
| 22 | + print(3 + 4) # suma -> 7 |
| 23 | + print(3 - 4) # resta -> -1 |
| 24 | + print(3 * 4) # multiplicación -> 12 |
| 25 | + print(3 / 4) # división (float) -> 0.75 |
| 26 | + print(10 % 3) # módulo (resto) -> 1 |
| 27 | + print(10 // 3) # división entera (floor) -> 3 |
| 28 | + print(2 ** 3) # potencia -> 8 |
| 29 | + print(2 ** 3 + 3 - 7 / 1 // 4) # precedencia mixta |
| 30 | + |
| 31 | + |
| 32 | +def demo_strings_operadores() -> None: |
| 33 | + """Uso de operadores con strings: concatenación y repetición.""" |
| 34 | + print("-- Strings y Operadores --") |
| 35 | + print("Hola " + "Python " + "¿Qué tal?") |
| 36 | + print("Hola " + str(5)) |
| 37 | + print("Hola " * 5) |
| 38 | + print("Hola " * (2 ** 3)) |
| 39 | + my_float = 2.5 * 2 |
| 40 | + print("Hola " * int(my_float)) # convertir a int para repetir |
| 41 | + |
| 42 | + |
| 43 | +def demo_comparacion() -> None: |
| 44 | + """Comparaciones con números y cadenas (lexicográficas).""" |
| 45 | + print("-- Comparación --") |
| 46 | + print(3 > 4) |
| 47 | + print(3 < 4) |
| 48 | + print(3 >= 4) |
| 49 | + print(4 <= 4) |
| 50 | + print(3 == 4) |
| 51 | + print(3 != 4) |
| 52 | + |
| 53 | + # Comparaciones de strings: orden lexicográfico (Unicode) |
| 54 | + print("Hola" > "Python") |
| 55 | + print("Hola" < "Python") |
| 56 | + print("aaaa" >= "abaa") # compara carácter a carácter |
| 57 | + print(len("aaaa") >= len("abaa")) # alternativa: compara por longitud |
| 58 | + print("Hola" <= "Python") |
| 59 | + print("Hola" == "Hola") |
| 60 | + print("Hola" != "Python") |
| 61 | + |
| 62 | + |
| 63 | +def demo_logicos() -> None: |
| 64 | + """Operadores lógicos: and, or, not (con ejemplos de precedencia).""" |
| 65 | + print("-- Lógicos --") |
| 66 | + # Álgebra de Boole: and, or, not |
| 67 | + print(3 > 4 and "Hola" > "Python") |
| 68 | + print(3 > 4 or "Hola" > "Python") |
| 69 | + print(3 < 4 and "Hola" < "Python") |
| 70 | + print(3 < 4 or "Hola" > "Python") |
| 71 | + print(3 < 4 or ("Hola" > "Python" and 4 == 4)) |
| 72 | + print(not (3 > 4)) |
| 73 | + |
| 74 | + |
| 75 | +# Práctica guiada (comentada para no interrumpir pruebas automáticas) |
| 76 | +# 1) Calcula el precio final de un producto: |
| 77 | +# - precio_base = 100, descuento = 15% (aplica primero), IVA = 21% (después) |
| 78 | +# - Muestra el total final (usa paréntesis para claridad) |
| 79 | +# 2) Dadas dos cadenas s1, s2, muestra cuál es lexicográficamente mayor y |
| 80 | +# cuál es más larga (usa > y len()). |
| 81 | +# 3) Con tres booleanos a, b, c, evalúa: (a and b) or (not c) y explica el resultado. |
| 82 | +# Checklist mental (comentado) |
| 83 | +# - Aritméticos: +, -, *, /, //, %, ** (cuidado división por cero) |
| 84 | +# - Comparación: ==, !=, >, >=, <, <= |
| 85 | +# - Lógicos: and, or, not + paréntesis para precedencia |
| 86 | +# - Strings: + concatena, * repite (solo enteros) |
| 87 | +# - ¿Expresiones densas? Separa en variables intermedias para legibilidad |
| 88 | + |
| 89 | + |
| 90 | +if __name__ == "__main__": |
| 91 | + demo_aritmeticos() |
| 92 | + demo_strings_operadores() |
| 93 | + demo_comparacion() |
| 94 | + demo_logicos() |
0 commit comments