Pesquisa de site

Verifique se um número em uma lista é quadrado perfeito usando Python


Neste artigo, aprenderemos um programa Python para verificar se um número é um quadrado perfeito em uma lista.

O que é um quadrado perfeito?

Um quadrado perfeito é um número inteiro que pode ser escrito como o quadrado de outro número inteiro. Em outras palavras, é referido como o produto de algum número inteiro consigo mesmo.

Exemplo

25 = 5x5

Métodos usados

A seguir estão os vários métodos para realizar esta tarefa -

  • Usando o módulo de compreensão de lista e matemática

  • Usando For Loop e módulo matemático

  • Usando ** Operador

  • Usando as funções filter() e lambda

As funções sqrt() e floor() são as duas mais importantes no módulo matemático que usaremos aqui para encontrar todos os quadrados perfeitos em uma lista de entrada .

Método 1: usando o módulo de compreensão de lista e matemática

list comprehension() - Quando você deseja criar uma nova lista com base nos valores de uma lista existente, a compreensão de lista fornece uma sintaxe concisa.

A função sqrt() calcula a raiz quadrada de qualquer número passado a ela como argumento.

A função floor() - arredonda qualquer número decimal para baixo até o número inteiro mais próximo.

Algoritmo (etapas)

A seguir estão o algoritmo/etapas a serem seguidas para realizar a tarefa desejada. -

  • Use a palavra-chave import para importar o módulo matemático.

  • Estamos importando este módulo matemático para usar as funções sqrt() e floor().

  • Crie uma variável para armazenar a lista de entrada e imprima-a.

  • Use o método de compreensão de lista para encontrar os quadrados perfeitos em uma lista de entrada, verificando se a raiz quadrada de um número é igual ao piso da raiz quadrada do número fornecido.

  • Imprima a lista de todos os quadrados perfeitos em uma lista de entrada.

Exemplo

O programa a seguir retorna todos os quadrados perfeitos em uma lista de entrada usando o módulo matemático e compreensão de lista -

# importing math module
import math

# input list
inputList = [10, 4, 5, 35, 16, 80, 36, 25, 40, 81, 49, 90, 200, 100]

# Printing the input list
print("Input List: ", inputList)

# list comprehension by checking whether the square root
# of number is equal to the floor of 
perfectSquares = [k for k in inputList if (
   math.sqrt(k) == math.floor(math.sqrt(k)))]

# Printing all the perfect squares in an input list
print("Perfect squares in an input list: ", perfectSquares)

Saída

Ao ser executado, o programa acima irá gerar a seguinte saída -

Input List:  [10, 4, 5, 35, 16, 80, 36, 25, 40, 81, 49, 90, 200, 100]
Perfect squares in an input list:  [4, 16, 36, 25, 81, 49, 100]

Método 2: usando o módulo For Loop e Math

Algoritmo (etapas)

A seguir estão o algoritmo/etapas a serem seguidas para realizar a tarefa desejada. -

  • Crie uma lista vazia para armazenar os quadrados perfeitos resultantes em uma lista.

  • Use o loop for para percorrer cada elemento da lista de entrada.

  • Use a instrução if condicional para determinar se o elemento da lista correspondente é um quadrado perfeito ou não, verificando se o quadrado de um elemento da lista é igual ao piso da raiz quadrada do número fornecido.

  • Use a função append() (adiciona o elemento à lista no final) para anexar um elemento à lista de resultados se a condição for verdadeira.

Exemplo

O programa a seguir retorna todos os quadrados perfeitos em uma lista de entrada usando o módulo matemático e o loop for -

# importing math module
import math
# input list
inputList = [10, 4, 5, 35, 16, 80, 36, 25, 40, 81, 49, 90, 200, 100]
# Printing the input list
print("Input List: ", inputList)
# creating an empty list for storing the resultant perfect squares
perfectSquares = [] 

# traversing through each element of the input list 
for k in inputList:
   # checking whether the corresponding list element is a perfect square 
   if (math.sqrt(k) == math.floor(math.sqrt(k))):
      # appending an element to the result list if the condition is true
      perfectSquares.append(k)
    
print("Perfect squares in an input list: ", perfectSquares)

Saída

Input List:  [10, 4, 5, 35, 16, 80, 36, 25, 40, 81, 49, 90, 200, 100]
Perfect squares in an input list:  [4, 16, 36, 25, 81, 49, 100]

Método 3: usando o operador **

Exemplo

O programa a seguir retorna todos os quadrados perfeitos em uma lista de entrada usando o módulo matemático e o operador ** -

# importing math module
import math
# input list
inputList = [10, 4, 5, 35, 16, 80, 36, 25, 40, 81, 49, 90, 200, 100]
print("Input List: ", inputList)
# creating an empty list for storing the resultant perfect squares
perfectSquares = [] 

# traversing through each element of the input list 
for k in inputList:
   # checking whether the corresponding list element is a perfect square
   if (k**0.5 == math.floor(k**0.5)):
      # appending element to the result list if the condition is true
      perfectSquares.append(k)      

print("Perfect squares in an input list: ", perfectSquares)

Saída

Input List:  [10, 4, 5, 35, 16, 80, 36, 25, 40, 81, 49, 90, 200, 100]
Perfect squares in an input list:  [4, 16, 36, 25, 81, 49, 100]

Método 4: usando filter() e funções Lambda

Exemplo

O programa a seguir retorna todos os quadrados perfeitos em uma lista de entrada usando as funções filter() e lambda -

# importing math module
import math
# input list
inputList = [10, 4, 5, 35, 16, 80, 36, 25, 40, 81, 49, 90, 200, 100]
print("Input List: ", inputList)

# Filtering all perfect square list elements using lambda functions
perfectSquares =filter(lambda k: math.sqrt(k) == math.floor(math.sqrt(k)), inputList)     
# converting to list        
perfectSquares = list(perfectSquares)

print("Perfect squares in an input list: ", *perfectSquares)

Saída

Input List:  [10, 4, 5, 35, 16, 80, 36, 25, 40, 81, 49, 90, 200, 100]
Perfect squares in an input list:  4 16 36 25 81 49 100

Conclusão

Abordamos como obter todos os elementos quadrados perfeitos em uma lista usando quatro abordagens neste artigo. Usando as funções filter() e lambda, aprendemos como aplicar um filtro nos elementos da lista. Também aprendemos como obter a raiz quadrada ou potência de um número utilizando o operador ** em vez de importar os métodos sqrt() ou pow().

Artigos relacionados: