3
respostas

Desafio: hora da prática

Aquecendo na programação:

1. Escreva um programa que peça dois números inteiros e imprima todos os números inteiros entre eles.

# Solicita os números ao usuário:

numero_1 = int (input ("Digite o primeiro número inteiro: "))
numero_2 = int (input ("Digite o segundo número inteiro: "))

# Determina o menor e o maior:

menor = min(numero_1, numero_2)
maior = max(numero_1, numero_2)

# Verifica se são iguais
if numero_1 == numero_2:
    print(f'Os números são iguais. Não há sequência entre eles.')
else:
    # Imprime todos os números inteiros entre eles:
    print(f'Os números inteiros entre {menor} e {maior} são:')
    for i in range(menor + 1, maior):
        print(i)

Digite o primeiro número inteiro: 7
Digite o segundo número inteiro: 30
Os números inteiros entre 7 e 30 são:
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

2. Escreva um programa para calcular quantos dias levará para a colônia de uma bactéria A ultrapassar ou igualar a colônia de uma bactéria B, com base nas taxas de crescimento de 3% e 1,5% respectivamente. Considere que a colônia A inicia com 4 elementos e a B com 10.

# Crescimento das bactérias A e B:

# Número inicial de bactéria:

bacteria_A = 4
bacteria_B = 10

# Taxa de crescimento das colônias:

taxa_A = 0.03
taxa_B = 0.015

# Contador de dias:

dias = 0

# A condição que finaliza o laço é o caso em que a colônia A ultrapasse a colônia B:

while bacteria_A < bacteria_B:
    bacteria_A *= (1 + taxa_A)
    bacteria_B *= (1 + taxa_B)
    dias += 1

# Resultado final:

print(f'A colônia A ultrapassa ou iguala a colônia B em {dias} dias.')

A colônia A ultrapassa ou iguala a colônia B em 63 dias.

3. Para tratar uma quantidade de 15 dados de avaliações de pessoas usuárias de um serviço da empresa, precisamos verificar se as notas são válidas. Então, escreva um programa que vai receber a nota de 0 a 5 de todos os dados e verificar se é um valor válido. Caso seja inserido uma nota acima de 5 ou abaixo de 0, repita até que a pessoa usuária insira um valor válido.

# Listagem para armazenamento de nomes e notas:
dados = []

# Laço para pegar as 15 notas:
for i in range(15):
    nome = input(f'Insira o nome do usuário {i+1}: ')
    nota = float(input(f'Insira a nota de {nome} (0 a 5): '))

    # Verificação se a nota está entre 0 e 5:
    while (nota < 0) or (nota > 5):
        nota = float(input(f'Nota inválida! Insira novamente a nota de {nome} (0 a 5): '))

    dados.append((nome, nota))  # guarda nome e nota válidos

print(f'Verificação feita. Todas as notas são válidas.')

# Resultado:
for nome, nota in dados:
    print(f'{nome}: {nota}')
    
    Insira o nome do usuário 1: Caio
Insira a nota de Caio (0 a 5): 0
Insira o nome do usuário 2: Louise
Insira a nota de Louise (0 a 5): 4.9
Insira o nome do usuário 3: João
Insira a nota de João (0 a 5): 3.2
Insira o nome do usuário 4: Bárbara
Insira a nota de Bárbara (0 a 5): 4.5
Insira o nome do usuário 5: Ivan
Insira a nota de Ivan (0 a 5): 1.6
Insira o nome do usuário 6: Rachel
Insira a nota de Rachel (0 a 5): 5
Insira o nome do usuário 7: Pedro
Insira a nota de Pedro (0 a 5): 1.3
Insira o nome do usuário 8: Carolina
Insira a nota de Carolina (0 a 5): 7
Nota inválida! Insira novamente a nota de Carolina (0 a 5): 4.7
Insira o nome do usuário 9: Hugo
Insira a nota de Hugo (0 a 5): 3.1
Insira o nome do usuário 10: Virgínia
Insira a nota de Virgínia (0 a 5): 2.2
Insira o nome do usuário 11: Bento
Insira a nota de Bento (0 a 5): 3.9
Insira o nome do usuário 12: Alice Menezes
Insira a nota de Alice Menezes (0 a 5): 2.3
Insira o nome do usuário 13: Vitório
Insira a nota de Vitório (0 a 5): 1.9
Insira o nome do usuário 14: Alice Prado
Insira a nota de Alice Prado (0 a 5): 3.8
Insira o nome do usuário 15: Murilo
Insira a nota de Murilo (0 a 5): 3.2
Verificação feita. Todas as notas são válidas.
Caio: 0.0
Louise: 4.9
João: 3.2
Bárbara: 4.5
Ivan: 1.6
Rachel: 5.0
Pedro: 1.3
Carolina: 4.7
Hugo: 3.1
Virgínia: 2.2
Bento: 3.9
Alice Menezes: 2.3
Vitório: 1.9
Alice Prado: 3.8
Murilo: 3.2

Continua...

3 respostas

Continuação:

4. Desenvolva um programa que leia um conjunto indeterminado de temperaturas em Celsius e informe a média delas. A leitura deve ser encerrada ao ser enviado o valor -273°C.

# Início: contadora e soma:
contadora = 0
soma = 0

# Coleta da primeira temperatura:
temperatura = float(input('Insira a temperatura em Celsius: '))

# Repetição até encontrar -273:
while temperatura != -273:
    soma += temperatura
    contadora += 1
    temperatura = float(input('Insira a temperatura em Celsius: '))

# Cálculo da média com verificação:
if contadora > 0:
    media = soma / contadora
    print(f'A média das temperaturas é: {media:.2f} °C')
else:
    print(f'Nenhuma temperatura válida foi informada.')

Insira a temperatura em Celsius: 25
Insira a temperatura em Celsius: 48
Insira a temperatura em Celsius: -280
Insira a temperatura em Celsius: -250
Insira a temperatura em Celsius: -273
A média das temperaturas é: -114.25 °C

5. Escreva um programa que calcule o fatorial de um número inteiro fornecido pela pessoa usuária. Lembrando que o fatorial de um número inteiro é a multiplicação desse número por todos os seus antecessores até o número 1. Por exemplo, o fatorial de 5 é 5 x 4 x 3 x 2 x 1 = 120.

  while True:
    numero = int(input('Informe um número inteiro: '))

    if numero < 0:
        print("Não existe fatorial de número negativo. Coloque um número válido.")
    else:
        fatorial = 1
        for i in range(1, numero + 1):
            fatorial *= i
        print(f'Fatorial de {numero} é {fatorial}')
        break  # Encerra o loop quando o número é válido
        
        Informe um número inteiro: -15
Não existe fatorial de número negativo. Coloque um número válido.
Informe um número inteiro: 15
Fatorial de 15 é 1307674368000
        

Momento dos projetos:

6. Escreva um programa que gere a tabuada de um número inteiro de 1 a 10, de acordo com a escolha da pessoa usuária. Como exemplo, para o número 2, a tabuada deve ser mostrada no seguinte formato:

Tabuada do 2:
2 x 1 = 2
2 x 2 = 4
[...]
2 x 10 = 20
while True:
    numero = int(input('Informe um número inteiro de 1 a 10: '))
    if 1 <= numero <= 10:
        break
    print("Número inválido! Digite entre 1 e 10.")

print(f'Tabuada do {numero}:')
for i in range(1, 11):
    print(f'{numero} x {i} = {numero * i}')

Informe um número inteiro de 1 a 10: -6
Número inválido! Digite entre 1 e 10.
Informe um número inteiro de 1 a 10: 6
Tabuada do 6:
6 x 1 = 6
6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54
6 x 10 = 60

7. Os números primos possuem várias aplicações dentro da Ciência de Dados em criptografia e segurança, por exemplo. Um número primo é aquele que é divisível apenas por um e por ele mesmo. Assim, faça um programa que peça um número inteiro e determine se ele é ou não um número primo.

while True:
    numero = int(input("Digite um número inteiro: "))

    # Assume-se que o número é primo até que se prove o contrário:
    numero_primo = True

    # Números abaixo de 2 não são primos:
    if numero <= 1:
        numero_primo = False
    else:
        for i in range(2, int(numero**0.5) + 1):
            if numero % i == 0:
                numero_primo = False
                break

    # Verifica se é primo:
    if numero_primo:
        print(f'O número {numero} é primo. Programa finalizado!')
        break
    else:
        print(f'O número {numero} não é primo. Tente novamente...')

Digite um número inteiro: 1
O número 1 não é primo. Tente novamente...
Digite um número inteiro: 15
O número 15 não é primo. Tente novamente...
Digite um número inteiro: 27
O número 27 não é primo. Tente novamente...
Digite um número inteiro: 29
O número 29 é primo. Programa finalizado!

Continua...

Continuação:

8. Vamos entender a distribuição de idades de pensionistas de uma empresa de previdência. Escreva um programa que leia as idades de uma quantidade não informada de clientes e mostre a distribuição em intervalos de [0-25], [26-50], [51-75] e [76-100]. Encerre a entrada de dados com um número negativo.

faixas = {
    '0-25': 0,
    '26-50': 0,
    '51-75': 0,
    '76-100': 0
}

idade = int(input('Informe a idade (ou um número negativo para encerrar): '))

while idade >= 0:
    if 0 <= idade <= 25:
        faixas['0-25'] += 1
    elif 26 <= idade <= 50:
        faixas['26-50'] += 1
    elif 51 <= idade <= 75:
        faixas['51-75'] += 1
    elif 76 <= idade <= 100:
        faixas['76-100'] += 1
    else:
        print("Idade fora das faixas consideradas.")

    idade = int(input('Informe a idade (ou um número negativo para encerrar): '))

print('Distribuição de idades:')
for faixa, contador in faixas.items():
    print(f'Na faixa entre[{faixa}], há {contador} pensionistas.')

Informe a idade (ou um número negativo para encerrar): 14
Informe a idade (ou um número negativo para encerrar): 9
Informe a idade (ou um número negativo para encerrar): 19
Informe a idade (ou um número negativo para encerrar): 23
Informe a idade (ou um número negativo para encerrar): 29
Informe a idade (ou um número negativo para encerrar): 31
Informe a idade (ou um número negativo para encerrar): 35
Informe a idade (ou um número negativo para encerrar): 48 
Informe a idade (ou um número negativo para encerrar): 51
Informe a idade (ou um número negativo para encerrar): 69
Informe a idade (ou um número negativo para encerrar): 74
Informe a idade (ou um número negativo para encerrar): 82
Informe a idade (ou um número negativo para encerrar): 101
Idade fora das faixas consideradas.
Informe a idade (ou um número negativo para encerrar): 91
Informe a idade (ou um número negativo para encerrar): 99
Informe a idade (ou um número negativo para encerrar): -9
Distribuição de idades:
Na faixa entre[0-25], há 4 pensionistas.
Na faixa entre[26-50], há 4 pensionistas.
Na faixa entre[51-75], há 3 pensionistas.
Na faixa entre[76-100], há 3 pensionistas.

9) Em uma eleição para gerência em uma empresa com 20 pessoas colaboradoras, existem quatro candidatos(as). Escreva um programa que calcule o(a) vencedor(a) da eleição. A votação ocorreu da seguinte maneira:

  • Cada colaborador(a) votou em uma das quatro pessoas candidatas (que representamos pelos números 1, 2, 3 e 4).
  • Também foram contabilizados os votos nulos (representados pelo número 5) e os votos em branco (representados pelo número 6).
  • Ao final da votação, o programa deve exibir o número total de votos para cada candidato(a), os nulos e os votos em branco. Além disso, deve calcular e exibir a porcentagem de votos nulos em relação ao total de votos e a porcentagem de votos em branco em relação ao total de votos.
# Inicialização das variáveis contadoras:
Pietro = 0
Nicolau = 0
Heitor = 0
Joaquim = 0
nulos = 0
branco = 0

# Início do laço para ler os votos
for i in range(20):
    voto = int(input('Informe seu voto: '))
    if voto == 1:
        Pietro += 1
    elif voto == 2:
        Nicolau += 1
    elif voto == 3:
        Heitor += 1
    elif voto == 4:
        Joaquim += 1
    elif voto == 5:
        nulos += 1
    elif voto == 6:
        branco += 1
    else:
        print("Voto inválido.")

print(f'Votos de Pietro: {Pietro}')
print(f'Votos de Nicolau: {Nicolau}')
print(f'Votos de Heitor: {Heitor}')
print(f'Votos de Joaquim: {Joaquim}')
print(f'Votos nulos: {nulos}')
print(f'Votos em branco: {branco}')
print(f'Percentual de votos nulos: {(nulos / 20 * 100):.2f}%')
print(f'Percentual de votos em branco: {(branco / 20 * 100):.2f}%')

# Determinação do vencedor:

vencedor = "Pietro"
votos_vencedor = Pietro

if Nicolau > votos_vencedor:
    vencedor, votos_vencedor = "Nicolau", Nicolau
if Heitor > votos_vencedor:
    vencedor, votos_vencedor = "Heitor", Heitor
if Joaquim > votos_vencedor:
    vencedor, votos_vencedor = "Joaquim", Joaquim

print(f'O vencedor é {vencedor} com {votos_vencedor} votos!')
Informe seu voto: 1
Informe seu voto: 4
Informe seu voto: 4
Informe seu voto: 8
Voto inválido.
Informe seu voto: 4
Informe seu voto: 3
Informe seu voto: 2
Informe seu voto: 2
Informe seu voto: 1
Informe seu voto: 4
Informe seu voto: 3
Informe seu voto: 1
Informe seu voto: 1
Informe seu voto: 2
Informe seu voto: 3
Informe seu voto: 3
Informe seu voto: 4
Informe seu voto: 1
Informe seu voto: 2
Informe seu voto: 6
Votos de Pietro: 5
Votos de Nicolau: 4
Votos de Heitor: 4
Votos de Joaquim: 5
Votos nulos: 0
Votos em branco: 1
Percentual de votos nulos: 0.00%
Percentual de votos em branco: 5.00%
O vencedor é Pietro com 5 votos!

Olá, Andressa! Tudo bem?

Fiquei impressionado com a organização e a precisão técnica das suas resoluções! Você não apenas resolveu os desafios, mas aplicou boas práticas que elevam a qualidade do código, especialmente para quem está trilhando o caminho de Data Science.

Aqui estão alguns pontos de destaque na sua "Hora da Prática":

1. Robustez com Funções Embutidas

Na Questão 1, o uso de min() e max() é excelente. Isso garante que seu código funcione mesmo que o usuário inverta a ordem dos números, evitando erros de lógica no range().

2. Eficiência Matemática

Na Questão 7 (Números Primos), você utilizou uma otimização matemática avançada: testar divisores apenas até a raiz quadrada do número (int(numero0.5) + 1).

  • Isso reduz drasticamente o número de iterações do laço for em números grandes.
  • Em Data Science, onde processamos milhões de linhas, esse tipo de economia de recursos é vital.

3. Uso de Dicionários para Distribuição

Na Questão 8, você optou por usar um Dicionário (faixas) para contar as idades.

  • Isso é muito mais elegante e escalável do que criar quatro variáveis soltas.
  • Facilita a exibição final usando o método .items(), o que deixa o código limpo e "pythônico".

4. Lógica de Negócio e Eleições

Na Questão 9, sua lógica para determinar o vencedor foi muito bem construída.

  • Ao inicializar o vencedor como "Pietro" e comparar sucessivamente com os outros, você implementou um algoritmo clássico de busca de valor máximo.
  • O cálculo de porcentagens direto na saída do print facilitou a leitura dos dados estatísticos da eleição.

Dica para Evoluir:

Notei que na Questão 4, se o usuário digitar -273 logo de cara, você tratou o erro com um if contadora > 0. Isso é perfeito para evitar o erro de Divisão por Zero (ZeroDivisionError). Como próxima etapa, tente explorar o try/except para lidar com casos onde o usuário digita letras em vez de números, deixando seus programas "inquebráveis"!

Parabéns pelos 9.1k de XP e pela clareza nos seus posts. Continue compartilhando seus projetos!

Espero que possa ter lhe ajudado!

No desafio das bactérias, você percebeu que a diferença de crescimento parece pequena (3% vs 1.5%), mas gera uma mudança grande em 63 dias. Como você acha que esse conceito de crescimento composto se aplica na análise de dados financeiros ou de redes sociais?