# 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://afsh4ck.gitbook.io/desarrollo-con-python/control-de-flujo/estructuras-de-control-de-flujo/sentencia-while.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
