在Python中创建一个函数,该函数将被分割,直到它位于某个范围内
我正在尝试创建一个函数,该函数将接受一个输入并将其分割,直到它在某个范围内 假设输入为“2600”,我想尝试将其除以,直到它在500和1000之间,然后返回该数字。所以它会这样做 试试2600/1,看看它不在范围内,然后再试一次 然后2600/2,看到它不在范围内,再试一次 然后是2600/3,看看它在射程内,然后返回866 无论如何,我在Python2中这样做,我认为我的想法是正确的,但是语法让我绊倒了在Python中创建一个函数,该函数将被分割,直到它位于某个范围内,python,if-statement,Python,If Statement,我正在尝试创建一个函数,该函数将接受一个输入并将其分割,直到它在某个范围内 假设输入为“2600”,我想尝试将其除以,直到它在500和1000之间,然后返回该数字。所以它会这样做 试试2600/1,看看它不在范围内,然后再试一次 然后2600/2,看到它不在范围内,再试一次 然后是2600/3,看看它在射程内,然后返回866 无论如何,我在Python2中这样做,我认为我的想法是正确的,但是语法让我绊倒了 def octavesort(input,counter1): if in
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(数字、低、高):
i=2.0
x=num
虽然你不是对的,但我想除以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()