# Laços de Repetição - I

Neste capítulo veremos um dos recursos mais **importantes** em qualquer linguagem de programação: Os laços de repetição, também conhecidos como loops.

No capítulo anterior foi explicado o funcionamento das listas então continuaremos usando listas aqui.

Você deve se lembrar de como acessamos um item de uma lista, certo?

través de seu índice! Vamos fazer um exemplo criando uma lista de dez números, veja:

```python
numeros = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
```

Como faríamos para imprimir cada número individualmente no console?

```python
numeros = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

print (numeros[0])
print (numeros[1])
print (numeros[2])
print (numeros[3])
print (numeros[4])
print (numeros[5])
print (numeros[6])
print (numeros[7])
print (numeros[8])
print (numeros[9])
```

Perceba que esta tarefa é bastante trabalhosa, além disso, podemos ter problemas com listas maiores. Este tipo de tarefa **repetitiva** pode ser substituída por um laço de **repetição**!

Veja outra forma de realizar esta tarefa:

```python
numeros = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

for numero in numeros:
    print (numero)
```

Muito mais simples, não é mesmo? Mas calma, vamos entender como funciona este comando.

Pelo resultado é notável que as instruções abaixo do comando `for` executam mais de uma vez, na verdade por isso que se chamam laços de **repetição**. Porque repetem as instruções até um determinado ponto.

Vamos lá, primeiro a sintaxe para o comando: é necessário usar a palavra reservada `for` para iniciar o comando, parecido com o que fizemos com o comando `if`.

Então declaramos uma variável, seguida do comando `in` e do nome de uma variável que seja uma lista.

Com esta estrutura definimos que, a variável que criamos (`numero`, no nosso exemplo) receberá um item da lista em cada interação do laço, ou seja, primeiro a variável `numero` recebe o primeiro valor da lista, executa todas as operações do laço de repetição (neste caso apenas um print) e volta para o início do bloco, alterando o valor da variável para o próximo item da lista.

Isso ocorre até a lista chegar ao fim, neste momento o laço de repetição é encerrado e o programa continuará normalmente.

Mas então só podemos utilizar o laço de repetição para percorrer listas? -Definitivamente, **não**.

Podemos utilizá-los também para repetir uma série de instruções, mesmo que não haja uma lista envolvida, para fazer isso temos a função `range` disponível no Python.

Esta função permite criar listas sob demanda, veja:

```python
valor = 0
for indice in range(5):
    valor += 10
    print(valor)
```

Neste caso serão exibidos os valores: 10, 20, 30, 40 e 50. Isso porque a função `range` indica que o laço deve ser repetido 5 vezes. Para garantir isso, ela cria uma lista com os valores \[0, 1, 2, 3, 4].

Esta função cria uma lista neste formato por padrão, mas é possível alterar este comportamento através de parâmetros. É possível, por exemplo, utilizar dois parâmetros diferentes, um com o valor inicial e outro com o valor limite.

```python
for valor in range(5, 10):
    print(valor)
```

Neste caso a lista criada conterá os valores: \[5, 6, 7, 8, 9]. Note que o valor limite nunca é incluído na lista, ele de fato, define o limite dela e não seu último valor.

Um último modificador possível na função `range` é o salto entre cada valor. Podemos especificar para os valores subirem de dois em dois, dez em dez e assim por diante. Basta inserirmos um último parâmetro!

```python
for valor in range(0, 10, 2):
    print(valor)
```

Neste caso a lista resultante é: \[0, 2, 4, 6, 8], bem legal né?

Agora que já vimos as variações do `range` e deste comando, vamos praticar!

## Vamos Praticar

1. Faça um programa que inicialize uma lista de compras com 5 itens diferentes e exiba todos utilizando um laço de repetição.
2. Faça um programa que inicialize que crie uma lista com os valores de 1 até 10 e depois exiba apenas os números pares.
3. Faça um programa que exiba todos os valores ímpares entre 50 e 100 utilizando o range.
4. Faça um programa que inicialize uma lista vazia, solicite ao usuário 10 números diferentes, um por vez. Caso o número digitado seja par, acrescente um ao seu valor. Depois disso, exiba os 10 números digitados.
5. Faça um programa que exiba as tabuadas de 1 até 10 no formato: "2 x 3 = 6", (utilize dois comandos `for`)

> **Atenção**
>
> É fortemente recomendado que você tente fazer os exercícios antes de ver as respostas. Você pode encontrar as respostas [aqui](https://gabriel-schade-cardoso.gitbook.io/python-aprendendo-a-programar/chapter12).


---

# 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://gabriel-schade-cardoso.gitbook.io/python-aprendendo-a-programar/chapter6.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.
