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.