Dúvida sobre o exercício 084

Home Fóruns Python Dúvida sobre o exercício 084

Marcado: 

Visualizando 3 respostas da discussão
  • Autor
    Posts
    • #65117

      Olá boa tarde! Analisando a resolução do professor, percebi que a mesma é mais elegante, porém num contexto de ser resolver o exercício de forma isolada. Por favor, me corrijam se eu estiver errado…
      Pensando no programa mais pra frente, numa aplicação profissional, o cadastro será sim, feito, uma primeira vez… porém na prática as estatísticas e outras análises serão realizadas sobre uma lista composta JÁ PRONTA. Assim sendo, eu resolvi criar uma extrutura que monta a lista… e fora dessa estrutura, criei outras linhas de código para avaliar maior e menor peso. O Código ficou maior, mas consgue ser utilizado dentro de uma aplicação onde o objetivo é manipular listas já prontas e em utilização. Estou certo? Segue meu código abaixo:

      grupo = list()
      pessoa = list()
      while True:
      pessoa.append(str(input(‘Nome: ‘)))
      pessoa.append(float(input(‘Peso: ‘)))
      grupo.append(pessoa[:])
      pessoa.clear()
      while True:
      continua = str(input(‘Quer continuar? [S/N]’)).strip().upper()[0]
      if continua in ‘SN’:
      break
      if continua in ‘N’:
      break
      print(30*’-=’)
      print(f’Foram cadastradas {len(grupo)} pessoas’)

      maior_peso = menor_peso = 0
      mais_pesada = list()
      mais_leve = list()

      # Verificando qual foi o MAIOR e o MENOR pesos cadastrados
      for i, p in enumerate(grupo):
      if i == 0:
      maior_peso = menor_peso = p[1]
      else:
      if p[1] > maior_peso:
      maior_peso = p[1]
      elif p[1] < menor_peso:
      menor_peso = p[1]

      # Identificando as pessoas MAIS e MENOS pesadas
      for i, p in enumerate(grupo):
      if p[1] == maior_peso:
      mais_pesada.append(p[0])
      elif p[1] == menor_peso:
      mais_leve.append(p[0])

      print(f’As pessoas mais pesadas, com {maior_peso}Kg, foram {mais_pesada}’)
      print(f’As pessoas mais leves, com {menor_peso}Kg, foram {mais_leve}’)

    • #65140
      IcaroFilho
      Moderador

      fala irmão. Ótima pratica essa que esta fazendo de pegar os exercícios propostos e “por mais carga de dificuldades nele”
      Continue com isso e verá que escreverá com mais fluidez…

      Vamos as consideração e me desculpe qualquer erro… ( a tutora vai me corrigir e ponderar caso tenha algum/muitos erros da minha parte =) )

      Antes de tudo utilize a formatação CODE para postar seus códigos aqui no fórum. isto permite que a formatação venha sem alterações, ficando muito mais legível. E caso seja a ponto de procurar uma falha, fica melhor para te dar um feedback.
      Outra coisa é que não há muito o que questionar, pois o principal de uma aplicação é atender aos requisitos.

      Eu estava escrevendo um monte de coisa, mas não iria adiantar muito pois você esta limitado pela nível matéria ainda. (dicionários, módulos, etc…)
      Já que disse se tratar de um nível mais profissional, tente pegar o programa e aumentar o nível de validações para diminuir o erro no programa.
      Ex. nome aceitar apenas letras (atualmente, se vc disser que o nome é 22 ele vai aceitar).
      permita que o usuário digite ‘,’ (virgula) no peso ( a maioria das pessoas normalmente digita virgula ao invés do ponto)

      • #65141

        Opa! Muito obrigado Ícaro!
        Você sabe como validar uma entrada NULL com python? Pq se o usuário digitar enter sem ter escrito valor dá erro no programa, e eu queria impedir que isso ocorresse, exibindo uma mensagem que permitisse ao usuário tentar uma entrada válida, em vez de dar erro no programa.

      • #65155
        IcaroFilho
        Moderador

        Bom dia.
        1- A formatação os princípios da programação. se abre uma chave necessita fechar.
        quando postou seu código apenas abriu a chave da formatação ' , então ele não sabe onde termina e não formata.
        eu faço de uma maneira mais pratica.
        1- Eu copio o código, colo aqui.
        2- Seleciono todo o código.
        3- Com ele selecionado, aperto apenas um vez no CODE que ele já abre e fecha nas extremidades.
        2- Quanto a sua duvida, tem algumas maneiras.
        1- Tem por meio de validação que se aprende aqui. (mesmo método que se permite o uso de virgula para o seu peso sem ‘crashar’)
        2 – Pode se tratar os erros pelas exceções (try…except)

        para te ajudar na tentativa, pense o seguinte.
        Vc fez o programa, o usuário ira utilizar. A partir dai sua linha de pensamento será: ‘Se o usuário fizer isso acontecerá isso’, ‘E se ele fizer isso acontecerá isto’ ,…

      • #65336
        Tutora Mayla
        Mestre

        Jonathas, seu código está bom. Como dito pelo aluno Icaro esta foi uma ótima iniciativa de tentar fazer algo além do exercício proposto.
        Quanto à sua pergunta, o que acontece neste caso não é um valor nulo. Quando o usuário pressionar ENTER sem digitar um valor, a função input() irá retornar uma string vazia, o que faz com que a conversão para float não funcione.
        Tente seguir a sugestão dada pelo Icaro e pensar em como tratar estes casos e, se for necessário, revise o Exercício Python #057 – Validação de Dados onde foi feita validação de dados pela primeira vez.

        Espero ter ajudado, quaisquer outras dúvidas basta entrar em contato.

    • #65143

      SEGUE O ARQUIVO NA FORMATAÇÃO CODE. DEPOIS FAREI AS VALIDAÇÕES QUE ME SUGERIU. OBRIGADO!

      
      grupo = list()
      pessoa = list()
      while True:
          pessoa.append(str(input('Nome: ')))
          pessoa.append(float(input('Peso: ')))
          grupo.append(pessoa[:])
          pessoa.clear()
          while True:
              continua = str(input('Quer continuar? [S/N]')).strip().upper()[0]
              if continua in 'SN':
                  break
          if continua in 'N':
              break
      print(30*'-=')
      print(f'Foram cadastradas {len(grupo)} pessoas')
      
      maior_peso = menor_peso = 0
      mais_pesada = list()
      mais_leve = list()
      
      #  Verificando qual foi o MAIOR e o MENOR pesos cadastrados
      for i, p in enumerate(grupo):
          if i == 0:
              maior_peso = menor_peso = p[1]
          else:
              if p[1] > maior_peso:
                  maior_peso = p[1]
              elif p[1] < menor_peso:
                  menor_peso = p[1]
      
      #  Identificando as pessoas MAIS e MENOS pesadas
      for i, p in enumerate(grupo):
          if p[1] == maior_peso:
              mais_pesada.append(p[0])
          elif p[1] == menor_peso:
              mais_leve.append(p[0])
      
      print(f'As pessoas mais pesadas, com {maior_peso}Kg, foram {mais_pesada}')
      print(f'As pessoas mais leves, com {menor_peso}Kg, foram {mais_leve}')
      
    • #65144
      
      grupo = list()
      pessoa = list()
      while True:
          pessoa.append(str(input('Nome: ')))
          pessoa.append(float(input('Peso: ')))
          grupo.append(pessoa[:])
          pessoa.clear()
          while True:
              continua = str(input('Quer continuar? [S/N]')).strip().upper()[0]
              if continua in 'SN':
                  break
          if continua in 'N':
              break
      print(30*'-=')
      print(f'Foram cadastradas {len(grupo)} pessoas')
      
      maior_peso = menor_peso = 0
      mais_pesada = list()
      mais_leve = list()
      
      #  Verificando qual foi o MAIOR e o MENOR pesos cadastrados
      for i, p in enumerate(grupo):
          if i == 0:
              maior_peso = menor_peso = p[1]
          else:
              if p[1] > maior_peso:
                  maior_peso = p[1]
              elif p[1] < menor_peso:
                  menor_peso = p[1]
      
      #  Identificando as pessoas MAIS e MENOS pesadas
      for i, p in enumerate(grupo):
          if p[1] == maior_peso:
              mais_pesada.append(p[0])
          elif p[1] == menor_peso:
              mais_leve.append(p[0])
      
      print(f'As pessoas mais pesadas, com {maior_peso}Kg, foram {mais_pesada}')
      print(f'As pessoas mais leves, com {menor_peso}Kg, foram {mais_leve}')
      
Visualizando 3 respostas da discussão
  • Você deve fazer login para responder a este tópico.