# Resolução dos exercícios

## Resolução dos exercícios

### Capítulo 2 - Começando com Python

*1. Faça um algoritmo que solicite o nome do usuário e depois escreva o nome da pessoa no console*.

```python
nome = input("Qual seu nome? ")
print(nome)
```

*2. Faça um algoritmo que pergunte ao usuário quantos anos ele tem, depois disso, escreva `True` no console, caso ele já tenha alcançado a maioridade (18 anos), caso contrário escreva `False`.*

```python
idade = int( input("Quantos anos você tem? ") )
maioridade = idade >= 18
print(maioridade)
```

*3. Faça um algoritmo que solicite um número ao usuário, depois disso, escreva `True` no console, caso o número tenha dois dígitos (Esteja entre 10 e 99), caso contrário escreva `False`.*

```python
numero = int( input("Digite um numero: ") )
dois_digitos = numero >= 10 and numero <= 99
print(dois_digitos)
```

### Capítulo 3 - Desvios condicionais, fazendo seu programa tomar decisões!

*1. Faça um algoritmo que solicite 3 notas para o usuário, calcule a média e indique se o aluno foi aprovado ou reprovado (nota precisar ser maior ou igual à sete para o aluno ser aprovado).*

```python
nota1 = float(input("Digite a primeira nota: "))
nota2 = float(input("Digite a segunda nota: "))
nota3 = float(input("Digite a terceira nota: "))
media = ( nota1 + nota2 + nota3 ) / 3

if media >= 7:
    print("Aprovado")
else:
    print("Reprovado")
```

*2. Faça um algoritmo que solicite o ano que o usuário nasceu, depois disso, faça o programa descrever se o usuário fará ou já fez 18 anos neste ano.*

```python
ano_nascimento = int (input ("Digite o ano que você nasceu: "))
idade = 2018 - ano_nascimento

if idade == 18:
    print("O usuário fará ou vez 18 anos este ano.")
```

*3. Faça um programa que solicite ao usuário sua idade, depois disso, exiba a classificação etária de acordo com as faixas de valores:*

* Criança para 0 até 11 anos;
* Adolescente para 12 até 18 anos;
* Jovem para 19 até 24 anos;
* Adulto para 25 até 40 anos;
* Meia Idade para 41 até 60 anos;
* Idoso acima de 60 anos.

```python
idade = int (input("Digite sua idade: "))

if idade >= 0 and idade <= 11:
    print("Criança")

elif idade >= 12 and idade <= 18:
    print("Adolescente")

elif idade >= 19 and idade <= 24:
    print("Jovem")

elif idade >= 25 and idade <= 40:
    print("Adulto")

elif idade >= 41 and idade <= 60:
    print("Meia Idade")

elif idade > 60:
    print("Idoso")
```

*4. Faça um programa que solicite ao usuário 2 valores, utilize uma condição ternária para escrever qual o maior valor: o primeiro ou o segundo (caso os valores sejam iguais, considere o segundo).*

```python
primeiro_valor = int( input("Digite um valor: "))
segundo_valor = int( input("Digite um valor: "))
print( "Primeiro" if primeiro_valor > segundo_valor else "Segundo")
```

### Capítulo 4 - Valores None, Strings e Introdução à Listas

*1. Faça um programa que solicite o nome do usuário e depois disso faça uma saudação no formato: "Olá {nome digitado pelo usuário}"*.

```python
nome = input("Digite seu nome: ")
print (f"Olá {nome}")
```

*2. Faça um programa que solicite uma mensagem qualquer para o usuário e exiba esta mensagem com todas as letras em maiúsculo.*

```python
mensagem = input ("Digite uma mensagem: ")
print(mensagem.upper())
```

*3. Faça um programa que solicite a idade do usuário, verifique se o texto informado só contém números. Caso contenha somente números exiba a mensagem: "Você tem {idade digitada} anos.", caso contrário exiba a mensagem: "Você digitou uma idade inválida".*

```python
if idade.isdigit():
    print(f"Você tem {idade} anos.")
else:
    print("Você digitou uma idade inválida")
```

*4. Faça um programa que solicite o nome completo do usuário e exiba somente o seu segundo nome/primeiro sobrenome.*

```python
nome_completo = input("Digite seu nome completo: ")
nome_completo_dividido = nome_completo.split(" ")
print(nome_completo_dividido[1])
```

### Capítulo 5 - Operações com Listas

*1. Faça um programa que inicialize uma lista com o nome das pessoas da sua família.*

```python
familia = ["Gabriel", "Anderson", "Luluzinha", "Mariazinha", "Joãozinho"]
print(familia)
```

*2. Faça um programa que inicialize uma lista vazia e solicite ao usuário 3 nomes de cidades, um por vez, cada vez que o usuário digitar um nome, o programa deve incluir este nome na lista de cidades.*

```python
cidades = []

cidade = input("Digite o nome da primeira cidade: ")
cidades.append(cidade)

cidades.append(input("Digite o nome da segunda cidade: "))
cidades.append(input("Digite o nome da terceira cidade: "))
print(cidades)
```

*3. Faça um programa que inicialize uma lista com vários números diferentes, depois disso, solicite ao usuário um número, verifique se o número está ou não na lista e exiba uma mensagem notificando o usuário do resultado.*

```python
numeros = [1,3,6,10,5,23]
numero_digitado = int(input("Digite um número: "))
if numero_digitado in numeros:
    print(f"O número {numero_digitado} está na lista")
else:
    print(f"O número {numero_digitado} não está na lista")
```

*4. Faça um programa que inicialize uma lista vazia e a preencha com 5 nomes diferentes digitados pelo usuário, depois disso solicite um número de 0 até 4 e remova o elemento desta posição.*

```python
nomes = []
nomes.append(input("Digite o primeiro nome: "))
nomes.append(input("Digite o segundo nome: "))
nomes.append(input("Digite o terceiro nome: "))
nomes.append(input("Digite o quarto nome: "))
nomes.append(input("Digite o quinto nome: "))

posicao_para_excluir = int( input("Escolha uma posição de 0(zero) até quatro para excluir da lista: "))
del nomes[posicao_para_excluir]
print(nomes)
```

### Capítulo 6 - Laços de Repetição - Parte 1

*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.*

```python
itens_compra = ["Arroz", "Leite", "Ovos", "Feijão", "Tomate"]
for item in itens_compra:
    print(item)
```

*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.*

```python
for numero in range(1,11):
    if numero % 2 == 0:
        print(numero)
```

*3. Faça um programa que exiba todos os valores ímpares entre 50 e 100 utilizando o range.*

```python
for numero in range(51,101,2):
    print(numero)
```

*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.*

```python
numeros = []
for numero in range(10):
    item_digitado = int ( input("Digite um valor: ") )
    if(item_digitado % 2 ==0):
        item_digitado += 1
    numeros.append(item_digitado)

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

*5. Faça um programa que exiba as tabuadas de 1 até 10 no formato: "2 x 3 = 6", (utilize dois comandos `for`)*

```python
for operador in range(1,11):
    for operador_2 in range(1,11):
        resultado = operador * operador_2
        print(f"{operador} X {operador_2} = {resultado}")
```

## Capítulo 7 - Laços de Repetição - Parte 2

*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 `while`.*

```python
itens_compra = ["Arroz", "Leite", "Ovos", "Feijão", "Tomate"]
posicao = 0
while posicao < len(itens_compra):
    print(itens_compra[posicao])
    posicao+=1
```

*2. Faça um programa que inicialize uma lista com os valores de 1 até 10 e depois exiba apenas os números pares utilizando `while`.*

```python
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
posicao = 0
while posicao < len(numeros):
    numero = numeros[posicao]
    if numero % 2 == 0:
        print(numero)
    posicao+=1
```

*3. Faça um programa que inicialize uma lista vazia, solicite ao usuário 10 números ímpares diferentes, um por vez. Caso o número digitado seja par, solicite novamente um número, até que o valor seja um número ímpar. Depois disso, exiba os 10 números digitados.*

```python
numeros = []
numero = 0
quantidade_sobrando = 10
while quantidade_sobrando > 0:
    numero = 0
    while numero % 2 == 0:
        numero = int( input("Digite um número ímpar: ") )

    numeros.append(numero)
    quantidade_sobrando -= 1

posicao = 0

while posicao < len(numeros):
    print(numeros[posicao])
    posicao += 1
```

*4. Faça um programa que exiba um menu para o usuário selecionar uma das três opções:*

* 1 - Olá mundo
* 2 - Eu programo em Python
* 3 - Laços de repetição

*O programa deve solicitar ao usuário uma das 3 opções, caso o usuário digite um valor diferente das opções (1, 2 ou 3), o programa deve apresentar novamente o menu de opções até que uma delas seja escolhida. Por fim, o programa deve exibir uma mensagem diferente para cada opção.*

```python
opcao = 0
opcoes = [1, 2, 3]
while opcao not in opcoes:
    print("Selecione uma das opções abaixo: ")
    print("1 - Olá mundo ")
    print("2 - Eu programo em Python ")
    print("3 - Laços de repetição ")
    opcao = int ( input ("Selecione a opção: ") )

if opcao == 1:
    print("Olá mundo!")
elif opcao == 2:
    print("Já estou na minha sexta lição de Python!")
else:
    print("Nesta lição estou estudando o laço de repetição While")
```

*5. Remove a instrução `break` e a instrução `continue` do laço de repetição abaixo:*

```python
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
posicao = 0
while posicao < len(numeros):
    posicao += 1
    if posicao == 3:
        continue
    elif posicao == 6:
        break
    print(numeros[posicao-1])
```

```python
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
posicao = 0
while posicao < 5:
    if posicao != 2:
        print(numeros[posicao])
    posicao += 1
```

### Capítulo 8 - Use Dicionários!

*1. Faça um programa que crie um dicionário para definir um produto, contendo sua descrição e seu preço.*

```python
produto = {
    "descrição": "Água",
    "preço": 2.00
}
```

*2. Faça um programa que inicialize uma lista de compras com 5 itens diferentes, onde cada item é um dicionário contendo a descrição e preço do produto. Depois disso, percorra a lista e exiba as informações de cada item.*

```python
lista_compras = [
    {"descrição": "Água", "preço": 2.00},
    {"descrição": "Leite", "preço": 3.00},
    {"descrição": "Carne", "preço": 18.00},
    {"descrição": "Pizza", "preço": 9.00},
    {"descrição": "Chocolate", "preço": 6.50},
]

for item_compra in lista_compras:
    print("Produto:", item_compra["descrição"], "por", str(item_compra["preço"]), "reais.")
```

*3. Utilize a lista de compras do programa anterior para identificar qual o produto mais barato e qual o produto mais caro da lista de compras.*

```python
mais_barato = None
mais_caro = None
indice = 0
while indice < len(lista_compras):
    item_compra = lista_compras[indice]
    if indice == 0:
        mais_caro = item_compra
        mais_barato = item_compra
    else:
        if item_compra["preço"] > mais_caro["preço"]:
            mais_caro = item_compra

        if item_compra["preço"] < mais_barato["preço"]:
            mais_barato = item_compra

    indice = indice + 1

print("Produto mais caro: ", mais_caro["descrição"], "por", mais_caro["preço"],"reais")
print("Produto mais barato: ", mais_barato["descrição"], "por", mais_barato["preço"],"reais")
```

*4. Faça um programa que tenha uma lista com 5 de pessoas, onde cada pessoa tem seu nome e sobrenome armazenado em um dicionário, depois disso, exiba todos os nomes e sobrenomes. Para complicar um pouco as coisas, vamos simular que estes dados foram obtidos da web e com isso recebemos algumas inconsistências. Duas das cinco pessoas possuem o dicionário onde as chaves estão em maiúsculo e os outros três em minúsculo.*

```python
pessoas = [
    {"nome": "Joãozinho", "sobrenome": "da Silva" },
    {"NOME": "Mariazinha", "SOBRENOME": "de Souza" }, 
    {"nome": "Gabriel", "sobrenome": "Schade" },
    {"NOME": "Joana", "SOBRENOME": "da Silva" },
    {"nome": "Everton", "sobrenome": "Schmit" },
]

for pessoa in pessoas:
    nome = pessoa.get("nome", None)
    sobrenome = pessoa.get("sobrenome", None)
    if not nome:
        nome = pessoa.get("NOME", None)
    if not sobrenome:
        sobrenome = pessoa.get("SOBRENOME", None)

    print(nome, sobrenome)
```

### Capítulo 9 - Modularização de código com Funções!

*1. Faça um programa que escreva "Minha primeira função", esta escrita deve ser realizada a partir da chamada de uma função.*

```python
def minha_funcao():
    print("Minha primeira função")

minha_funcao()
```

*2. Faça um programa que solicite o nome do usuário e a idade do usuário, depois disso exiba a mensagem: `"{nome} possui {idade} anos."`. Esta mensagem deve ser escrita em uma função.*

```python
def escrever_nome_idade(nome, idade):
    print(nome, "possui",idade,"anos.")

nome_digitado = str(input("Digite seu nome: "))
idade_digitada = int(input("Digite sua idade: "))

escrever_nome_idade(nome_digitado, idade_digitada)
```

*3. Faça um programa que solicite dois números ao usuário e exiba a multiplicação deles. A multiplicação deve ser calculada em uma função.*

```python
def multiplicar(numero1, numero2):
    return numero1 * numero2

numero = int(input("Digite o primeiro número: "))
numero2 = int(input("Digite o segundo número: "))
resultado = multiplicar(numero, numero2)
print(resultado)
```

*4. Faça um programa que solicite ao usuário três números diferentes e exiba o dobro do maior número. Para fazer isso separe seu código em duas funções diferentes: Uma função para retornar o maior dos três números e outra função para dobrar o número.*

```python
def obter_maior(numero, numero2, numero3):
    maior = None
    if numero > numero2 and numero > numero3:
        maior = numero
    elif numero2 > numero and numero2 > numero3:
        maior = numero2
    else:
        maior = numero3
    return maior


def dobrar(numero):
    return numero * 2

numero = int(input("Digite o primeiro número: "))
numero2 = int(input("Digite o segundo número: "))
numero3 = int(input("Digite o terceiro número: "))

maior = obter_maior(numero,numero2,numero3)
print(dobrar(maior))
```

*5. Faça um programa que inicialize uma lista vazia, depois disso solicite 5 nomes diferentes ao usuário (utilize laço de repetição). Cada nome digitado deve ser adicionado à lista e por fim, todos os nomes devem ser escritos no console. Utilize uma função para solicitar e retornar o nome digitado, uma função para adicionar o nome à lista (passando o nome e a lista por parâmetro) e outra função para escrever todos os nomes no console.*

```python
def solicitar_nome():
    return str ( input("Digite um nome: ") )

def adicionar_nome_na_lista(lista, nome):
    lista.append(nome)

def escrever_nomes(lista):
    for nome in lista:
        print(nome)

nomes = []
for contador in range(0,5):
    nome = solicitar_nome()
    adicionar_nome_na_lista(nomes, nome)

escrever_nomes(nomes)
```

### Capítulo 10 - Funções Lambda

*1. Faça um programa que escreva "Minha primeira função", esta escrita deve ser realizada a partir da chamada de uma função que foi declarada como uma expressão lambda.*

```python
minha_funcao = lambda:print("Minha primeira função")
minha_funcao()
```

*2. Faça um programa que solicite o nome do usuário e a idade do usuário, depois disso exiba a mensagem:* "{nome} possui {idade} anos."*. Esta mensagem deve ser escrita em uma função lambda.*

```python
escrever_nome_idade = lambda nome, idade: print(nome, "possui",idade,"anos.")
nome_digitado = str(input("Digite seu nome: "))
idade_digitada = int(input("Digite sua idade: "))
escrever_nome_idade(nome_digitado, idade_digitada)
```

*3. Faça um programa que solicite dois números ao usuário e exiba a multiplicação deles. A multiplicação deve ser calculada em uma função lambda.*

```python
multiplicar = lambda numero1, numero2: numero1 * numero2

numero = int(input("Digite o primeiro número: "))
numero2 = int(input("Digite o segundo número: "))
resultado = multiplicar(numero, numero2)
print(resultado)
```

*4. Faça um programa que solicite cinco números ao usuário, depois disso, exiba apenas os números maiores do que 10. Utilize a função `filter` para fazer isso.*

```python
numeros = []
for indice in range(1,5):
    numero = int(input("Digite um número: "))
    numeros.append(numero)

maiores = filter(lambda numero: numero > 10, numeros)
for maior in maiores:
    print(maior)
```

*5. Faça um programa que solicite dez números ao usuário, depois disso, exiba todos números pares e só então exiba todos os números ímpares. Utilize a função `filter` para fazer isso.*

```python
def escrever_array(array):
    for valor in array:
        print(valor)

numeros = []
for indice in range(1,10):
    numero = int(input("Digite um número: "))
    numeros.append(numero)

pares = filter(lambda numero: numero % 2 == 0, numeros)
impares = filter(lambda numero: numero % 2 == 1, numeros)
escrever_array(pares)
escrever_array(impares)
```


---

# 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/chapter12.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.
