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().