【发布时间】:2021-02-11 22:54:09
【问题描述】:
我是 python 的新手,很抱歉这是一个非常简单的问题。
问题:我们被要求编写一个自定义函数,在给定x 的情况下计算log_2(x) = b 中的b(x 的对数基数2)。
注意:变量x 以float 形式给出,我们不能使用任何python 的内置函数,如pow() 或导入任何包。
示例:
Given 8, return "3"
Given 9, return "between 3 and 4"
Given 0.4, return "between -1 and -2"
所有返回类型都采用字符串的格式(我们可以使用 str())。
我的尝试: 因为log_2(x) = b 本质上等于2^b = x,所以我尝试迭代值b 并查看x 值是否等于给定数字。但是,我忘记了给定的数字是浮点数,而不是整数。
def log_base_2(number: float) -> str:
power = 0
BASE = 2
if number <= 0:
raise Exception('Sorry, your input is incorrect!')
while True:
if number == calc_power(BASE, power):
return str(power)
elif number > calc_power(BASE, power) and number < calc_power(BASE, power + 1):
return f"between {power} and {power + 1}"
else:
power += 1
# helper method for calculating the power
def calc_power(base: float, power: float):
if power == 0:
return 1
multiple = base
for i in range (1, power):
base *= multiple
return base
这基本上不起作用,因为我只考虑了整数并且它无法计算浮点数。
我不太确定如何编写一个指数计算器来计算浮点型幂。感谢您的帮助,如果您有更简单的方法来解决此问题,请告诉我!
【问题讨论】:
-
您能否举几个例子,说明您的代码结果与应有的不同?
标签: python logic calculator