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)个值[重复]

python使用heapq快速查找最大或最小的 N 个元素

正则表达式在匹配字符串之后查找最大数字的最后一次出现

python3-开发进阶 heapq模块(如何查找最大或最小的N个元素)

Python:用于查找关联的HTML链接的正则表达式

说说在 Python 中,如何找出所有字符串匹配