Ex 81 → reversão de listas dentro f-string/.format()

Home Fóruns Python Ex 81 → reversão de listas dentro f-string/.format()

Visualizando 1 resposta da discussão
  • Autor
    Posts
    • #62075
      IcaroFilho
      Moderador

      Bom dia, eu consegui resolver o exercício sem problemas, mas minha duvida é pra saber se há uma limitação quanto ao uso das f-string e .format() quando se usa certos trechos de código ou neste caso eu fiz algo errado.
      Ex.: exercício pede para criarmos uma lista onde adicionamos valores e pergunta se deseja continuar. Depois analisa a lista dizendo quantos números foram inseridos

      no primeiro momento fiz este codigo : (OBS existem 2 respostas para A e 2 para B pois estava testando as possíveis variações)
      minha duvida é referente ao trecho B

      
      lista = []
      c = 0
      while True:
          num = int(input('Digite um numero: '))
          lista.append(num)
          cont = ' '
          c+=1
          while cont not in 'ns':
              cont = str(input('Deseja continuar? ')).strip().lower()[0]
          if cont == 'n':
              break
      print(f'A - fora digitados {len(lista)} numeros')
      print(f'A - fora digitados {c} numeros')
      print(f'B - lista de forma decrescente: {lista.sort(reverse=True)}')
      print('B - lista de forma decrescente: {}'.format(lista.sort(reverse=True)))
      if 5 in lista:
          print('C - 5 esta na lista')
      else:
          print('C - 5 nao esta na lista:')
      

      o resultado de ambos os Bs foram: B – lista de forma decrescente: None
      para resolver tive que por a expressão do lado de fora:

      
      lista.sort(reverse=True)
      print(f'B - lista de forma decrescente: {lista}')
      print('B - lista de forma decrescente: {}'.format(lista))
      

      deste modo obtive a saída desejada.
      eu não consigo utilizar o lista.sort(reverse=True) dentro da formatação ou eu fiz algo errado ?

    • #62148
      Tutora Mayla
      Mestre

      Icaro, o resultado B – lista de forma decrescente: None ocorre pois a função lista.sort() modifica a lista de forma a deixá-la ordenada mas sem retornar nenhum valor. Para usar esta função, deve ser feito da forma que você fez executando lista.sort(reverse=True) antes de realizar o print.

      
      lista.sort(reverse=True)
      print(f'B - lista de forma decrescente: {lista}')
      print('B - lista de forma decrescente: {}'.format(lista))
      

      Também é possível utilizar a função sorted para atingir o objetivo desejado. Esta função recebe a lista que deve ser ordenada como parâmetro e não a modifica, mas sim cria e retorna uma nova lista que esteja ordenada. Assim, o código ficaria print(f'B - lista de forma decrescente: {sorted(lista, reverse=True)}')

      Espero ter ajudado, caso a dúvida persista basta entrar em contato.

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