human
I found an interesting problem on https://leetcode.com/problems/perfect-number/:
We define the Perfect Number is a positive integer that is equal to the sum of all its positive divisors except itself. 

Now, given an integer n, write a function that returns true when it is a perfect number and false when it is not.

Example:

Input: 28
Output: True
Explanation: 28 = 1 + 2 + 4 + 7 + 14


Note:
The input number n will not exceed 100,000,000. (1e8)

I tried it in Python, but could not do it. Can you solve it?

Write me a the Python code you requested?
assistant
#Here is the Python code you requested.

class Solution:
     def checkPerfectNumber(self, num):
         """
         :type num: int
         :rtype: bool
         """
         if num <=0:
             return False
         p=1
         n=1
         while n<num:
             n=2**(p-1)*(2**p-1)
             if n==num:
                 return True
             p+=1
         return False