Python - 简单表达式,用于查找n以下的最大奇数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - 简单表达式,用于查找n以下的最大奇数相关的知识,希望对你有一定的参考价值。
由于标题已经说明我正在寻找一个简单的表达式来找到一些n
以下的最大奇数:
我想将此代码内联到算术表达式中,并且不希望使用三元运算符。有没有算术方法来找到这个奇数?
答案
以下是纯粹的算术解决方案:
def greatest_odd_number_below(n): return (n//2)*2 - 1
编辑1:对于浮点输入:
# python 2 solution
from math import ceil
def greatest_odd_number_below_floats(n): return (int(ceil(n))//2)*2 - 1
编辑2:正如@PM 2Ring在评论中指出的那样,math.ceil
在python 3中返回一个int
,所以你可以删除额外的强制转换为int
。
# python 3 solution
from math import ceil
def greatest_odd_number_below_floats(n): return (ceil(n)//2)*2 - 1
另一答案
testNumber是你的变量怎么样?
(testNumber - 1 >> 1 << 1) | 1 # LESS THAN OR EQUAL TO
(testNumber - 2 >> 1 << 1) | 1 # LESS THAN
另一答案
其他方式:
n - n%2 - 1
演示:
>>> for n in range(10):
print(n, '->', n - n%2 - 1)
0 -> -1
1 -> -1
2 -> 1
3 -> 1
4 -> 3
5 -> 3
6 -> 5
7 -> 5
8 -> 7
9 -> 7
另一答案
babygameOver是对的。没有这样的内置函数,所以你应该自己实现它。
只需要我的2美分,就可以使用lambda表达式。看起来很简单。
>>> odd = lambda n: n-1 if n % 2 == 1 else n - 1
>>> odd(3)
3
>>> odd(744)
743
另一答案
没有条件,你无法解决方案。
但是你可以按照自己的方式做到这一点。
def odd(n):
if n%2==0:
return n-1
return n
print(odd(3))
希望这可以帮助
以上是关于Python - 简单表达式,用于查找n以下的最大奇数的主要内容,如果未能解决你的问题,请参考以下文章
从csv文件(python)的列中查找最大2(或n)个值[重复]