|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 程序员的救赎 于 2018-5-13 02:08 编辑
这是codewars上的一道基础题,题目很简单,就是判断一个数如果是平方数就返回True ,否则返回False(另外:若为0返回True,若是负数返回False)
(下面是原题目,看不懂可以直接跳过)
Task
Given an integral number, determine if it's a square number:
In mathematics, a square number or perfect square is an integer that is the square of an integer; in other words, it is the product of some integer with itself.
The tests will always use some integral number, so don't worry about that in dynamic typed languages.
Examples
is_square (-1) # => false
is_square 0 # => true
is_square 3 # => false
is_square 4 # => true
is_square 25 # => true
is_square 26 # => false
#我的正确解法
- from math import sqrt
- def is_square(n):
- if n < 0:
- return False
- elif n == 0:
- return True
-
- return True if int(sqrt(n)) == sqrt(n) else False
复制代码
#问题来了,最后一句我改为 return True if n == sqrt(n)**2 else False,结果是有一部分测试用例不能通过的。初步想法是n的取值过大造成的,但是没办法证明,鱼油们有想法可以和我交流交流。
问题来了,n过大,不是平方数的也可能被你第一个代码判断是平方数
|
|