简体   繁体   中英

***Time limit exceeded*** error on python program

when i try to print this line: print(perfect_square(0)) i should get True but instead i get a time limit exceeded error and i dont know how to fix it.

i tried chaging it to an elif statment instead of 2 separate if statements but i still get that error

This is my current code:

def perfect_square(n):
    s = 1

    while s != n:
        if s*s == n:
            return True
        elif s == 0:
            return True
        else:
             s +=1
        
    return False



def perfect_cube(n):
    s = 1

    while s != n:
        if s*s * s == n:
            return True
        elif s == 0:
            return True
        else:
             s +=1
        
    return False




Seems quite clear to me why the perfect_square(0) and perfect_cube(0) cases cause an infinite loop. You start s=1 and always increment it s+=1 . It will never be equal to n=0 so you get an infinitely running program. Maybe try making checks for invalid values of n ?

def perfect_cube(n):
    if n < 1: return False
    # ...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM