Skip to content

Commit ce0848b

Browse files
committed
checkpoint commit
1 parent 4975e74 commit ce0848b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+2678
-0
lines changed

M02_introprogramación/1README.md

Lines changed: 292 additions & 0 deletions
Large diffs are not rendered by default.

M03_variablesydatos/README.md

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png)
2+
3+
4+
## Variables
5+
6+
Una variable es un espacio de memoria donde guardamos un dato, ese espacio de memoria a la vez recibe un nombre y esto conforma la estructura de datos más simple que podemos encontrar.
7+
8+
![unaImagenConBoxShadow](../_src/assets/02_imagen01.jpg)
9+
10+
Por otro lado existen ciertas normas a la hora de nombrar variables:
11+
12+
* El nombre no puede empezar con un número<br>
13+
Por ejemplo "mi_variable" sería correcto, pero "123mi_variable" sería erróneo
14+
* No se permite el uso de guiones del medio -<br>
15+
Por ejemplo "mi-variable" sería erróneo
16+
* No se permite el uso de espacios.<br>
17+
Por ejemplo "mi variable" sería erróneo
18+
* No usar nombres reservados para Python. Las palabras reservadas son utilizadas por Python internamente, por lo que no podemos usarlas para nuestras variables o funciones.<br>
19+
Por ejemplo, a veces podríamos usar "int" ó "for" y esto nos daría error, porque como se verá más adelante, esas palabras son parte de la sintaxis de Python.
20+
21+
### Constantes
22+
23+
Sin embargo, cuando ese dato no lo alojamos en una variable y lo utilizamos directamente, recibe el nombre de constante.
24+
25+
### Tipos de Datos
26+
27+
Es importante notar, que podemos encontrarnos con datos de tipos distintos, es decir numéricos, alfanuméricos o booleanos.
28+
29+
En Python tenemos los siguientes:
30+
* Enteros: el conjunto de números enteros
31+
* Floats: el conjunto de números reales o de punto flotante
32+
* Cadenas o Strings: es texto, caracteres alfanuméricos que se introducen entre comillas dobles o simples
33+
* Booleanos: representan Verdadero ó Falso
34+
* Complejos: el conjunto de números complejos
35+
36+
Todo valor que pueda ser asignado a una variable tiene asociado un tipo de dato y esto establece qué operaciones se pueden realizar sobre la misma.
37+
38+
<hr width="75%">
39+
<p align="center">
40+
Tip: En Python hay algunas funcionalidades ya presentes por defecto, como por ejemplo la funcion **print()** que permite mostrar una salida por pantalla y la función range() que devuelve un rango numérico según los parámetros que recibe y con la función **type()** es posible ver el tipo de dato de una variable
41+
</p>
42+
<hr width="75%">
43+
44+
### Operaciones entre Variables
45+
46+
Con diferentes tipos de datos podemos hacer diferentes tipos de operaciones. Y hay operaciones no permitidas entre variables de diferentes tipos de datos.
47+
48+
**Operaciones aritméticas:**
49+
50+
| Operación | Operador | Ejemplo |
51+
| :--- | :----: | ---: |
52+
| Suma | + | 3 + 5.5 = 8.5 |
53+
| Resta | - | 4 - 1 = 3 |
54+
| Multiplicación | * | 4 * 2 = 8 |
55+
| Potenciación | 4<sup>2</sup> | 4**2 = 16 |
56+
| División (Cociente) | / | 4 / 2 = 2 |
57+
| División (parte entera) | // | 14 // 3 = 4 |
58+
| División (resto) | % | 14 % 3 = 2 |
59+
60+
**Operadores relacionales:**
61+
62+
| Operación | Operador | Ejemplo |
63+
| :--- | :----: | ---: |
64+
| == | Igual | 10 == 3 = False |
65+
| != | Distinto | 10 != 3 = True |
66+
| > | Mayor | 10 > 3 = True |
67+
| < | Menor | 10 < 3 = False |
68+
| >= | Mayor o igual | 10 >= 3 = True |
69+
| <= | Menor o igual | 10 <= 3 = False |
70+
71+
**Operaciones de asignación:**
72+
73+
| Operación | Operador | Ejemplo |
74+
| :--- | :----: | ---: |
75+
| = | x=7 | x=7 |
76+
| += | x+=2 | x=x+2 = 9 |
77+
| -= | x-=2 | x=x-2 = 5 |
78+
| *= | x*=2 | x=x*2 = 14 |
79+
| /= | x/=2 | x=x/2 = 3.5 |
80+
| %= | x%=2 | x=x%2 = 1 |
81+
| //= | x//=2 | x=x//2 = 3 |
82+
| **= | x**=2 | x=x**2 = 49 |
83+
| &= | x&=2 | x=x&2 = 2 |
84+
| ^= | x^=2 | x=x^2 = 5 |
85+
| >>= | x>>=2 | x=x>>2 = 1 |
86+
| <<= | x<<=2 | x=x<<=2 = 28 |
87+
88+
89+
Operación: |= <br>
90+
Operador: x|=2 <br>
91+
Ejemplo: x=x|2 = 7 <br>
92+
93+
Cuando tratamos con texto, podemos hacer otras operaciones:
94+
95+
| Operación | Operador | Ejemplo |
96+
| :--- | :----: | ---: |
97+
| Concatenar | + | 'hola ' + 'mundo !' = 'hola mundo!' |
98+
| Multiplicar | * | 'ja ' * 3 = 'ja ja ja' |
99+
100+
Algunos ejemplos en Python:
101+
102+
```python
103+
>>> a = 'Hola '
104+
>>> b = 'Mundo !'
105+
>>> print(a + b)
106+
Hola Mundo !
107+
108+
>>> x = 3
109+
>>> y = 12
110+
>>> print(x + y)
111+
15
112+
113+
>>> print(a + x)
114+
---------------------------------------------------------------------------
115+
TypeError Traceback (most recent call last)
116+
~\AppData\Local\Temp/ipykernel_18232/136165486.py in <module>
117+
----> 1 print(a + x)
118+
119+
TypeError: can only concatenate str (not "int") to str
120+
```
121+
122+
Notar que en las operaciones que no están permitidas arroja un error, que es muy descriptivo. En este caso no es posible sumar un valor entero con un valor alfanumérico.
123+
124+
```python
125+
>>> # Dividir "y" entre "x"
126+
>>> y = 9
127+
>>> x = 3
128+
>>> print(y/x)
129+
3.0
130+
131+
>>> # Potencia de "y" elevado a la "x"
132+
>>> y = 2
133+
>>> x = 4
134+
>>> print(y**x)
135+
16
136+
137+
>>> # Devolver el resto de la división
138+
>>> y = 13
139+
>>> x = 3
140+
>>> print(y%x)
141+
1
142+
143+
>>> # Imprimir el tipo de dato de una variable y una constante
144+
>>> y = 2.5
145+
>>> type(y)
146+
float
147+
>>> type(2.5)
148+
float
149+
```
150+
151+
Notar que anteponiendo el carácter numeral (#) es posible agregar comentarios en el código. Por otra parte, la función **type()** es muy útil para saber a qué tipo de dato corresponde un elemento.
152+
153+
**Operaciones Lógicas**
154+
155+
Son operaciones en las que entran en uso el tipo de datos booleano, es decir, que nos permiten representar valores verdadero o falso. Para verlo mejor, es necesario recurrir a lo que llamamos tablas de verdad.
156+
Veremos muy comúnmente representar verdadero con un "1" y falso con un "0".
157+
158+
Tabla del operador lógico "and", se verifican que A y B sean verdaderas.
159+
| A | B | A and B |
160+
| :- | :--: | -: |
161+
| 1 | 0 | 0 |
162+
| 0 | 0 | 0 |
163+
| 0 | 1 | 0 |
164+
| 1 | 1 | 1 |
165+
166+
Tabla del operador lógico "or", se verifican que A o B sean verdaderas.
167+
| A | B | A or B |
168+
| :- | :--: | -: |
169+
| 1 | 0 | 1 |
170+
| 0 | 0 | 0 |
171+
| 0 | 1 | 1 |
172+
| 1 | 1 | 1 |
173+
174+
Tambien es posible representar la negación, con el operador not()
175+
176+
Tabla del operador lógico "Or Exclusiva", se verifica ((A and not(B)) or (not(A) and B))
177+
| A | B | A "or exclusiva" B |
178+
| :- | :--: | -: |
179+
| 1 | 0 | 1 |
180+
| 0 | 0 | 0 |
181+
| 0 | 1 | 1 |
182+
| 1 | 1 | 0 |
183+
184+
```python
185+
>>> a = True
186+
>>> b = False
187+
>>> print(a or b)
188+
True
189+
```
190+
191+
<hr width="75%">
192+
<p align="center">
193+
Tips: Notar que las constantes "True" y "False" se escriben con la primer letra mayúscula y el resto minúsculas, de otra forma arrojaría un error
194+
</p>
195+
<hr width="75%">
196+
197+
### Conversión de tipos de datos
198+
199+
Puede haber ocasiones en las que desee especificar un tipo en una variable. Esto se puede hacer con lo que se denomina **casting**.
200+
La conversión de tipo de dato en python se realiza mediante funciones:
201+
202+
int(): construye un número entero a partir de un literal entero, un literal flotante (eliminando todos los decimales) o un literal de cadena (siempre que la cadena represente un número entero)
203+
float(): construye un número flotante a partir de un literal entero, un literal flotante o un literal de cadena (siempre que la cadena represente un flotante o un entero)
204+
str(): construye una cadena a partir de una amplia variedad de tipos de datos, incluidas cadenas, literales enteros y literales flotantes
205+
206+
```python
207+
>>> x = '2'
208+
>>> print(type(x))
209+
<class 'str'>
210+
>>> x = int(x)
211+
>>> print(type(x))
212+
<class 'int'>
213+
>>> y = int(2.8)
214+
>>> print(y)
215+
2
216+
```
217+
218+
Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m3_variablesydatos** de Slack
219+

M04_flujosdecontrol/README.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
![HenryLogo](https://d31uz8lwfmyn8g.cloudfront.net/Assets/logo-henry-white-lg.png)
2+
3+
## Flujos de Control
4+
5+
### Condicionales
6+
7+
Los condicionales son bloques de código que se ejecutan únicamente si se cumple una condición.
8+
El resultado de esta condición debe ser booleano (True o False).
9+
Esto se logra mediante la sentencia **if**.
10+
Con la sentencia **elif** se puede agregar un número arbitrario de condiciones.
11+
Por otra parte, se puede ejecutar código si la/s condición/es no se cumple/n con la sentencia **else**.
12+
13+
14+
```python
15+
>>> valor = 0
16+
>>> if (valor < 0):
17+
>>> print('El número es negativo')
18+
>>> elif (valor > 0):
19+
>>> print('El número es positivo')
20+
>>> else:
21+
>>> print('El número es igual a cero')
22+
El número es igual a cero
23+
```
24+
25+
### Ciclos Iterativos o Loops
26+
27+
Son bloques de código que se repiten una cierta cantidad de veces en función de ciertas condiciones.
28+
29+
Un ciclo **for** repite un bloque de código tantas veces como elementos haya dentro del rango entre 1 y 10:
30+
31+
```python
32+
>>> for n in range(1,10):
33+
>>> print(n)
34+
1
35+
2
36+
3
37+
4
38+
5
39+
6
40+
7
41+
8
42+
9
43+
```
44+
45+
Un ciclo **while** repite un bloque de código mientras que cierta condición se cumpla:
46+
47+
```python
48+
>>> n = 1
49+
>>> while (n < 10):
50+
>>> print(n)
51+
>>> n = n + 1
52+
1
53+
2
54+
3
55+
4
56+
5
57+
6
58+
7
59+
8
60+
9
61+
```
62+
63+
<hr width="75%">
64+
<p align="center">
65+
Hemos llegado hasta este punto y se repasaron algunos de los conceptos más fundamentales de la programación y de Python, pero es necesario detenerse en algunos detalles, que tienen que ver precisamente con el lenguaje que estamos utilizando:
66+
67+
* En Python es importante la indentación, notar que el código que se ejecuta dentro de una sentencia if, for o while está indentado.
68+
* También es importante notar los ":"
69+
* En Python, cada vez que hagamos referencia a un rango, por ejemplo "1,10" el primer número se incluye y el último no.
70+
</p>
71+
<hr width="75%">
72+
73+
### Sentencia Break
74+
75+
La sentencia break permite alterar el comportamiento de los bucles while y for. Concretamente, permite terminar con la ejecución del bucle. Esto significa que una vez se encuentra la palabra break, el bucle se habrá terminado.
76+
Veamos cómo podemos usar el break con bucles for. El range(5) generaría 5 iteraciones, donde la i valdría de 0 a 4. Sin embargo, en la primera iteración, terminamos el bucle prematuramente.
77+
El break hace que nada más empezar el bucle, se rompa y se salga sin haber hecho nada.
78+
79+
```python
80+
>>> for i in range(5):
81+
>>> print(i)
82+
>>> break
83+
0
84+
```
85+
86+
Un ejemplo un poco más útil, sería el de buscar una letra en una palabra. Se itera toda la palabra y en el momento en el que se encuentra la letra que buscábamos, se rompe el bucle y se sale. Esto es algo muy útil porque si ya encontramos lo que estábamos buscando, no tendría mucho sentido seguir iterando la lista, ya que desperdiciaríamos recursos.
87+
88+
```python
89+
>>> cadena = 'Python'
90+
>>> for letra in cadena:
91+
>>> if letra == 'h':
92+
>>> print("Se encontró la h")
93+
>>> break
94+
>>> print(letra)
95+
P
96+
y
97+
t
98+
Se encontró la h
99+
```
100+
101+
El break también nos permite alterar el comportamiento del while. En el ejemplo, la condición while True haría que la sección de código se ejecutará indefinidamente, pero al hacer uso del break, el bucle se romperá cuando x valga cero.
102+
103+
```python
104+
>>> x = 5
105+
>>> while True:
106+
>>> x -= 1
107+
>>> print(x)
108+
>>> if x == 0:
109+
>>> break
110+
>>> print("Fin del bucle")
111+
4
112+
3
113+
2
114+
1
115+
0
116+
Fin del bucle
117+
```
118+
119+
Por norma general, y salvo casos muy concretos, si ves un while True, es probable que haya un break dentro del bucle.
120+
121+
### Sentencia Continue
122+
123+
El uso de continue al igual que el ya visto break, permite modificar el comportamiento de de los bucles while y for.
124+
Concretamente, la sentencia continue se salta todo el código restante en la iteración actual y vuelve al principio en el caso de que aún queden iteraciones por completar.
125+
La diferencia con la sentencia break es que el continue no rompe el bucle, si no que pasa a la siguiente iteración saltando el código pendiente.
126+
En el siguiente ejemplo vemos como al encontrar la letra P se llama al continue, lo que hace que se salte el print(). Es por ello por lo que no vemos la letra P impresa en pantalla.
127+
128+
```python
129+
>>> cadena = 'Python'
130+
>>> for letra in cadena:
131+
>>> if letra == 'P':
132+
>>> continue
133+
>>> print(letra)
134+
y
135+
t
136+
h
137+
o
138+
n
139+
```
140+
141+
142+
* Si tienes dudas sobre este tema, puedes consultarlas en el canal **#m4_flujosdecontrol** en Slack
143+

0 commit comments

Comments
 (0)