我正在学习Python,我必须做一个生成日志结果的脚本.
我知道log base x = result
然后我制作了我的代码.
def log(x, base):
log_b = 2
while x != int(round(base ** log_b)):
    log_b += 0.01
    print log_b
return int(round(log_b))
但它的工作进展非常缓慢.我可以用其他方法吗?谢谢!
ars*_*jii 11
您可能要考虑的另一件事是使用自然对数的泰勒级数:
 

使用本系列中的一些术语近似自然日志后,很容易更改基数:

编辑:这是另一个有用的身份:

使用这个,我们可以写出一些东西
def ln(x):
    n = 1000.0
    return n * ((x ** (1/n)) - 1)
测试一下,我们有:
print ln(math.e), math.log(math.e)
print ln(0.5), math.log(0.5)
print ln(100.0), math.log(100.0)
输出:
1.00050016671 1.0
-0.692907009547 -0.69314718056
4.6157902784 4.60517018599
这显示了我们与math.log价值(由空格分隔)相比的价值,正如您所看到的,我们非常准确.当你变得非常大时,你可能会开始失去一些准确性(例如,它ln(10000)会0.4比它应该的更大),但是n如果你需要,你可以随时增加.
我使用了递归:
def myLog(x, b):
    if x < b:
        return 0  
    return 1 + myLog(x/b, b)