我正努力在期中学习,并且正在努力解决这个问题。问题是:
找到整数指数,使
base**exponent最接近num。请注意,base**exponent可能大于或小于num。如果是领带,则返回较小的值。我已经得到了所有的东西,除了如何在领带的情况下返回较小的价值。
这是我的代码,函数closest_power(3,12)一直在指数3和2之间运行(正确的代码将返回2)。任何帮助都非常感谢。
def closest_power(base, num):
exponential = base+num/2
increment = 1
while abs(num-base**exponential) >= 0.01:
print ("Exp: {}, Our number = {}, correct number: {}".format(exponential,base**exponential, num))
if num > (num-base**exponential-2) and num < (num-base**exponential):
return expontential-1
if base**exponential > num:
exponential -= 1
else:
exponential += 1
return exponential
print(closest_power(3,12))发布于 2020-06-20 07:32:20
对于num是否介于两个指数之间的测试是不正确的,应该是
num > base**(exponential-1) and num < base**exponential它也可以写成
base**(exponential-1) < num < base**exponential你还有个打字错误,
return expontential-1应该是
return exponential-1并且您应该将起始值设置为
exponential = (base + num) // 2为了确保它是一个整数,但是将其设置为:
exponential = num // base总计:
def closest_power(base, num):
exponential = num // base
increment = 1
while abs(num-base**exponential) >= 0.01:
print ("Exp: {}, Our number = {}, correct number: {}".format(exponential,base**exponential, num))
if base**(exponential-1) < num < base**exponential:
return exponential-1
if base**exponential > num:
exponential -= 1
else:
exponential += 1
return exponential
print(closest_power(3,12))输出:
Exp: 4, Our number = 81, correct number: 12
Exp: 3, Our number = 27, correct number: 12
2发布于 2020-06-20 07:33:50
您可以使用日志简化您的问题。
你的问题是3**x = 12。找到x了吗?
应用日志
x*log3 3= log12
X=log3 12/log3 3
采用这一方法:
def exp(x,y):
return(int(log(y)/log(x)))https://stackoverflow.com/questions/62482894
复制相似问题