> For the complete documentation index, see [llms.txt](https://afsh4ck.gitbook.io/desarrollo-con-python/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://afsh4ck.gitbook.io/desarrollo-con-python/control-de-flujo/estructuras-de-control-de-flujo/sentencia-while.md).

# Sentencia while

## <mark style="color:blue;">1. ¿Qué es la sentencia</mark> <mark style="color:blue;"></mark><mark style="color:blue;">`while`</mark><mark style="color:blue;">?</mark>

Esta estructura nos permite implementar sentencias en Python que **se repitan un número infinito de veces**.

La sintaxis utilizada para definir la sentencia `while` es la siguiente:

```python
while <expresión>:
    <sentencia(s)>
```

`<sentencia(s)>` es el bloque de sentencias en Python que se ejecutará de manera indefinida hasta que no se cumpla la expresión.

`<expresión>` es una expresión evaluada en un contexto booleano. El resultado de evaluar esta expresión debe ser `True` o `False`. Controla la ejecución del bucle `while`.

```python
num = 10

while num > 0:
    num -= 1 # Si quitáramos esta línea se imprimiria el numero 10 infinitamente
    print(num)
    
9
8
7
6
5
4
3
2
1
0
```

## <mark style="color:blue;">2. Claúsula else</mark>

Al igual que con el bucle `for`, la sentencia `while` también permite el uso de una claúsula `else`.

```python
num = 5

while num > 0:
    num -= 1
    print(num)
else:
    print("Final del bucle")
    
4
3
2
1
0
Final del bucle
```

## <mark style="color:blue;">3. Bucles infinitos</mark>

Una de las características importantes de los bucles `while` es que pueden ejecutarse de manera infinita. Si no se realiza un control adecuado de la expresión que se evalúa, el bucle puede ejecutarse de manera indefinida hasta que se consuman los recursos de nuestro sistema.

```python
while True:
    print("Bucle indefinido...")
    
Bucle indefinido...
Bucle indefinido...
Bucle indefinido...
Bucle indefinido...
Bucle indefinido...
Bucle indefinido...
Bucle indefinido...
Bucle indefinido...
Bucle indefinido...
....
```

## <mark style="color:blue;">4. Bucle</mark> <mark style="color:blue;"></mark><mark style="color:blue;">`while`</mark> <mark style="color:blue;"></mark><mark style="color:blue;">en una línea</mark>

Al igual que con otras estructuras de Python, los bucles `while` también pueden implementarse utilizando una única línea de código.

```python
num = 10

while num > 0: num -= 1; print(num)

9
8
7
6
5
4
3
2
1
0
```
