簡體   English   中英

Python-簡單表達式可找到n以下的最大奇數

[英]Python - Simple expression to find greatest odd number below n

正如標題中已經指出的那樣,我正在尋找一個簡單的表達式以找到n以下的最大奇數:

我想將此代碼內聯到算術表達式中,並且不想使用三元運算符。 有沒有算術方法可以找到這個奇數?

在testNumber是您的變量的地方怎么樣

(testNumber - 1 >> 1 << 1) | 1 # LESS THAN OR EQUAL TO

(testNumber - 2 >> 1 << 1) | 1 # LESS THAN

以下是純算術解決方案:

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

其他方式:

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))

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM