[英]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.