1
resposta

DESAFIO: HORA DA PRATICA

!pip install matplotlib==3.7.1
import numpy as np
from random import choice

lista = [8, 12, 54, 23, 43, 1, 90, 87, 105, 77]
print(f"Número escolhido: {choice(lista)}")
from random import randrange

randrange(100)
from math import pow

base = int(input("Digite a base da potência: "))
expoente = int(input("Digite o expoente da potência: "))
print(f"{base} elevado a {expoente} é igual a {pow(base, expoente)}")
from random import randint
# Transformando a quantidade de participantes de string para inteiro
n = int(input("Digite o nº de participantes do sorteio: "))
# Sorteando um número no intervalo de 1 até a quantidade de participantes
print(f"O número sorteado foi {randint(1, n)}")
from random import randrange

nome = input("Qual o seu nome? ")
# Gerando um token par de 1000 a 9998. O randrange tem o intervalo aberto em 10000, ou seja,
# não considera 10000 como opção de escolha (token >= 1000 e token < 10000)
token = randrange(1000, 10000, 2)

print(f"Olá, {nome}, o seu token de acesso é {token}! Seja bem-vindo(a)!")
from random import choices

# Lista das frutas disponíveis
frutas = ["maçã", "banana", "uva", "pêra","manga", "coco", 
          "melancia", "mamão", "laranja", "abacaxi", "kiwi", "ameixa"]

# Gerando uma lista com a escolha aleatoria de 3 frutas 
salada = choices(frutas, k=3)

# Imprimindo os itens da lista de frutas gerada
print(f"A salada surpresa é: {salada[0]}, {salada[1]} e {salada[2]}")
from math import sqrt

numeros = [2, 8, 15, 23, 91, 112, 256]
# iniciando uma lista vazia para receber as raízes
raiz = []

# laço for para calcular cada raiz da lista de números e adicionar a lista raiz
for numero in numeros:
  raiz.append(sqrt(numero))

# laço for para ler a lista raiz e exibir um texto só quando a raiz for um valor inteiro 
for i in range(len(raiz)):
  # condição para testar se um número é inteiro (Ex: 2.5 // 1 = 2 ... 2 != 2.5)
  if raiz[i] // 1 == raiz[i]:
    print(f"O número {numeros[i]} possui raiz quadrada inteira igual a {int(raiz[i])}")
# importando 2 métodos da mesma biblioteca
from math import pi, pow

raio = float(input("Digite o raio da área circular em metros: "))
# Cálculo da área com os métodos da math e obtenção do custo em reais
area = pi*pow(raio,2)
valor = area * 25.00

# Exibição do cálculo e custo na tela. O round(n,2) arredonda qualquer número em 2 casas decimais
print(f"Você precisará pagar R$ {round(valor,2)} por uma área de {round(area,2)} metros de grama")
1 resposta

Olá, Giovany. Como vai?

A sua resolução do desafio ficou absolutamente fantástica! Você demonstrou um domínio excelente não apenas na sintaxe do Python, mas principalmente no uso do ecossistema de bibliotecas padrão (math e random), que são pilares fundamentais para qualquer pessoa que trabalha com Ciência de Dados.

Gostaria de destacar alguns pontos extremamente maduros e elegantes na construção da sua lógica:

  • Uso cirúrgico do randrange com passo: No exercício do token, a sua escolha de usar randrange(1000, 10000, 2) foi brilhante. Definir o passo como 2 para garantir que o número gerado seja estritamente par demonstra que você compreendeu perfeitamente o funcionamento dos parâmetros desse método.
  • Diferença entre choice e choices: No exercício da salada de frutas, você usou o método correto (choices) passando o argumento k=3 para extrair múltiplos elementos de uma só vez. Essa é a forma mais performática de fazer amostragens em Python.
  • Lógica criativa para checagem de números inteiros: No exercício das raízes quadradas, a sua lógica para verificar se o número flutuante era na verdade um inteiro (raiz[i] // 1 == raiz[i]) foi muito criativa!

Uma sugestão de boa prática: Simplificando com o .is_integer()

A sua lógica para descobrir se a raiz era inteira funcionou perfeitamente. Contudo, o Python possui um método nativo específico para objetos do tipo float que faz exatamente essa checagem de forma direta e deixa o seu código ainda mais legível: o método .is_integer().

Veja como o seu laço for de exibição poderia ser reescrito de forma mais "pythônica":

# Utilizando o método nativo .is_integer()
for i in range(len(raiz)):
  if raiz[i].is_integer():
    print(f"O número {numeros[i]} possui raiz quadrada inteira igual a {int(raiz[i])}")

Economizando memória: Juntando os dois laços

Outra boa prática de mercado em Engenharia de Dados é tentar reduzir a quantidade de loops que varrem as nossas listas para economizar memória e processamento. No seu exercício, nós podemos calcular a raiz e já checar se ela é inteira em uma única passada pelo laço for:

from math import sqrt

numeros = [2, 8, 15, 23, 91, 112, 256]

for numero in numeros:
    raiz = sqrt(numero)
    if raiz.is_integer():
        print(f"O número {numero} possui raiz quadrada inteira igual a {int(raiz)}")

Note que, dessa forma, nós nem precisamos criar a lista vazia raiz = [], economizando linhas de código e memória RAM do computador.

Seus códigos estão super bem comentados, organizados e estruturados com f-strings impecáveis. Parabéns pelo excelente empenho e pelo progresso no curso!

Espero que possa ter lhe ajudado!