[英]How to obtain a list of numbers that are divided by a certain number using the filter function in Python?
[英]Creating a function in Python that gets divided until it is in a certain range
我正在嘗試創建一個函數,該函數將接受輸入並將其划分為一定范圍。
假設輸入是“ 2600”,我想嘗試將其除以直到它在500和1000之間,然后返回該數字。 所以它會做到這一點
嘗試2600/1,發現它不在范圍內,然后重試
然后2600/2並查看它不在范圍內,然后重試
然后2600/3看到它在范圍內並返回866
無論如何,我正在Python 2中執行此操作,並且我認為我的想法是朝正確的方向發展,但是語法使我感到困惑。
def octavesort(input,counter1):
if input > (frequency * 2):
test = input / counter1
if test > (frequency * 2):
octavesort(input,counter1+1)
else:
return test
else:
return test
您忘記了返回下一個測試的值。
return octavesort(input,counter1+1)
另外,您不需要這兩個else
子句; 剛回來test
。
您是否真的要將輸入數字除以每個正整數,直到達到范圍? 從函數的名稱來看,我懷疑您想除以2的冪,以使頻率達到所需的八度。 無論如何,我已經寫了兩個版本。 :)
#! /usr/bin/env python
def octavesort0(num, lo, hi):
i = 2.0
x = num
while not lo <= x <= hi:
x = num / i
#print i, x
i += 1.0
return x
def octavesort1(num, lo, hi):
i = 2.0
x = num
while not lo <= x <= hi:
x = num / i
#print i, x
i *= 2.0
return x
octavesort = octavesort1
def main():
lo, hi = 500, 1000
print octavesort(23456, lo, hi)
if __name__ == '__main__':
main()
順便說一句,您不應將input
用作變量名,因為它是內置函數的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.