Python 计算“以下的奇数”;";有效地

Python 计算“以下的奇数”;";有效地,python,python-3.x,Python,Python 3.x,给定一个数n,返回n以下的正奇数 oddCount(7) //=> 3, i.e [1, 3, 5] oddCount(15) //=> 7, i.e [1, 3, 5, 7, 9, 11, 13] 我的代码需要更多的时间来执行larget计数。 有人能提出一种方法来提高时间效率吗 def奇数计数(n): count_odd=[如果num%2!=0,则范围(0,n)中num的num为num] 计数奇数=len(计数奇数) 打印(单数) 执行超时 斯特德尔 执行超时(12000毫秒

给定一个数n,返回n以下的正奇数

oddCount(7) //=> 3, i.e [1, 3, 5]
oddCount(15) //=> 7, i.e [1, 3, 5, 7, 9, 11, 13]
我的代码需要更多的时间来执行larget计数。 有人能提出一种方法来提高时间效率吗

def奇数计数(n):
count_odd=[如果num%2!=0,则范围(0,n)中num的num为num]
计数奇数=len(计数奇数)
打印(单数)
执行超时

斯特德尔

执行超时(12000毫秒)

为什么我的代码超时了

我们的服务器配置为只允许您的代码执行一定的时间。在极少数情况下,服务器可能会承担太多的工作,根本无法足够有效地运行代码。大多数情况下,虽然这个问题是由低效的算法引起的。如果多次看到此错误,则应尝试进一步优化代码


您只需数数数字即可:

n//2

您的算法当然有效,但正如注释中所指出的,您所需要的只是楼层划分

def count_odds_below(n):
    return n//2
这比您的算法更快,并且可以轻松处理大量数据

例如:

print(count_odds_below(15))

这可以打印7。

请解释为什么你不打印(n//2)你也可以打印
len(范围(1,n,2))
为什么你需要添加
n%2
?我认为n本身就是个数。我的错。