Программа Python на идеальных квадратах
Я написал эту функцию Python, которая принимает список в качестве параметра и определяет, какие элементы списка являются идеальными квадратами, а затем возвращает новый список только этих элементов выбора.
Вот моя функция:
def square(n):
return n**2
def perfectSquares1(L):
import math
m=max(L)
for n in L:
if type(n) is int and n>0:
Result=map(square,range(1,math.floor(math.sqrt(m))))
L1=list(Result)
L2=list(set(L).intersection(set(L1)))
return L2
Но теперь я пытаюсь немного переработать его: я хочу написать однолинейную булеву функцию, которая принимает n в качестве параметра и возвращает True, если n идеальный квадрат, и возвращает false в противном случае.
Любой совет? Я не могу придумать способ сделать это только одной строкой.
3 ответа
Решение
Ты можешь сделать:
import math
def perfect_sq(n):
return n == int(math.sqrt(n)) * int(math.sqrt(n))
Или вы можете использовать:
import math
def perfect_sq(n):
return n == int(math.sqrt(n)) ** 2
Могли бы использовать оператор по модулю:
>>> def perfectsquare(n):
... return not n % n**0.5
...
>>> perfectsquare(36)
True
>>> perfectsquare(37)
False
>>> perfectsquare(25)
True
>>> perfectsquare(4215378*4215378)
True