EXERCÍCIO 74

Home Fóruns Python EXERCÍCIO 74

Visualizando 3 respostas da discussão
  • Autor
    Posts
    • #89079
      Gabriel Borba
      Participante

      Boa noite!
      Por gentileza, uma dúvida: efetuei o exercício 74 de uma forma diferente de como fez o Guanabara…Embora tenha funcionado corretamente, não consegui utilizar os comandos de impressão que o Guanabara utilizou ao final do seu programa(me refiro em relação à logica de determinar qual o número maior e qual o número menor). Achei interessante, pois elimina várias linhas na lógica de programação em relação a esta determinação do maior e menor números…
      Por gentileza, gostaria de saber por que o meu programa não funciona quando eu tento usar a mesma forma de impressão, utilizando os comandos “min” e “max”.
      ERRO MOSTRADO QUANDO TENTO USAR OS COMANDOS “min” e “max” ao final do meu programa, sem alterar nada mais:
      print(f’\nO maior valor é {max(numeros)}.’)
      TypeError: ‘int’ object is not iterable

      Seria possível eliminar a lógica de “maior” e “menor” que eu utilizei, e, ao final, eu utilizar também os comandos “min” e “max” ?

      MEU PROGRAMA:

      from random import randint
      print(‘O computador sorteou os valores: ‘, end=”)
      for n in range(1, 6):
      numeros = (randint(1,10))
      print(numeros, end=’. ‘)
      if n == 1:
      maior = numeros
      menor = numeros
      else:
      if numeros > maior:
      maior = numeros
      if numeros < menor:
      menor = numeros
      print(f’\nO maior valor é {maior}.’) # esta forma de comando funciona corretamente, mas com “{max(numeros)}” não.
      print(f’O menor valor é {menor}.’) # esta forma de comando funciona corretamente, mas com “{min(numeros)}” não.

      PROGRAMA DO GUANABARA:

      from random import randint
      numeros = (randint(1, 10), randint(1, 10), randint(1, 10), randint(1, 10), randint(1, 10),)
      print(‘O computador sorteou os valores:’,end=’ ‘)
      for n in numeros:
      print(f'{n}’, end=’. ‘)
      print(f’\nO maior valor é {max(numeros)}.’)
      print(f’O menor valor é {min(numeros)}.’)

    • #89090
      IcaroFilho
      Moderador

      Bom dia Gabriel.
      Os métodos max e min são utilizados em listas.
      No seu código, está usando em números inteiros e ai da erro.
      Caso queira utilizar os métodos max e min você pode fazer com que os numeros gerados randomicamente sejam adicionados a uma lista vazia ( por meio de um append, e exclua toda a logica de if ) e ao final poderá executar o min e max.

      Tente resolver e caso não consiga, só postar aqui novamente.

    • #89123
      Gabriel Borba
      Participante

      Bom dia, Ícaro!
      Não lembro se já foi visto o que é um “append”. Não sei o que é. Mas quando usei o min e Max no meu código, eu apaguei os ifs. Mesmo assim não funcionou, e não entendi o porquê. Seria possível eu manter a minha estrutura/lógica de códigos (sem os ifs), e ainda assim fazer funcionar?
      A questão é que quando desenvolvemos um código, com base naquilo que estamos aprendendo(fazendo sozinhos, em exercícios), nos focamos tanto, que fica um pouco difícil às vezes de entender qual a diferença fundamental entre o meu código e o código do professor. O que percebi, neste exercício, é que o Guanabara está trabalhando com a lógica da randomização fora do “for”, e eu usei a lógica da randomização dentro do laço “for”. Isto fez com que eu não precisasse copiar e colar 5 vezes o comando da randomização…
      Mas, resumindo, não sei se esta é a diferença essencial que pode explicar o porquê meu código não roda com min e max, mesmo eu tendo removido as lógicas dos ifs.
      Não sei se consegui me explicar…

      Aguardo teu retorno, se possível.
      Obrigado

    • #89147
      IcaroFilho
      Moderador

      Neste exercício ele simplesmente quis lhe mostrar 2 métodos utilizados em listas. o Min e o Max ,que facilitam o trabalho.
      vc fez do modo que funciona por “de baixo dos panos”.
      o max entra dentro da lista e checa, indice a indice os valores e retorna o maior deles. o mesmo acontece pro min, so q pro menor valor.
      vc realizou este processo não mão ao checar elemento por elemento.

      o append é o método que adiciona um valor no final da lista. ex.:

      minha_lista = [2,3]
      minha_lista.append(4)
      print(minhaLista) // [2,3,4]

      o problema do seu código não é o IF. eu disse pra tirar pq se tornaria redundante / desnecessária a checagem.
      Seu problema está no tipo de variável.
      min e max só podem ser utilizados em variáveis do tipo lista e as suas variáveis são do tipo INT.

      • #89156
        IcaroFilho
        Moderador
        from random import randint
        minha_lista= list()
        maior = menor = 0
        print("O computador sorteou os valores: ", end='')
        for n in range(1, 6):
          numeros = (randint(1,10))
          print(numeros, end=". ")
          minha_lista.append(numeros)
        print(f"\nO maior valor sorteado foi {max(minha_lista)}")
        print(f"O menor valor sorteado foi {min(minha_lista)}")

        para usar seu laço for com o max / min seria assim …

Visualizando 3 respostas da discussão
  • Você deve fazer login para responder a este tópico.