【发布时间】:2013-11-12 19:33:07
【问题描述】:
编写一个简单的过程 myLog(x, b),计算数字 x 相对于底数 b.n 的对数。换句话说,myLog 应该返回 b 的最大幂,使得 b 的幂仍然小于或等于 x。
x 和 b 都是正整数; b 是大于或等于 2 的整数。您的函数应返回整数答案。
不要使用 Python 的日志函数;相反,请使用使用简单算术运算符和条件测试的迭代或递归解决方案。
下面的代码有什么问题?由于他们没有提到条件失败时要返回什么,所以一直保持 false
def myLog(x, b):
count = 1
while x > 0 and b >= 2:
ans = b ** count
if (ans == x):
print str(count)
break
elif (ans > x):
print str(count-1)
break
count += 1
else:
return False
【问题讨论】:
-
它做了什么你没想到的?另外,我意识到您正在执行一项任务,但任务很疯狂;这就像要求您在不使用任何轮子的情况下制造汽车。
-
@Dan:写一个整数日志函数是一个合理的知道怎么做的事情,而用浮点日志函数来写它不是一个好的答案(如果,比如说,你想要它可以处理太大而无法放入浮点数而不会损失精度或太大而根本无法容纳的数字)。
-
我昨天回答了两次这个问题,但它立即被作者否决并删除。
-
您的代码的一个明显问题是,如果成功,它会返回
None。print不会导致函数返回任何内容,它只是打印一个值。所以你这样做,然后break,然后从函数的末尾掉下来。 (此外,您几乎不需要print str(x),因为print已经在其参数上调用了str。)只需return count和return count-1。 -
@Dan Integer 日志功能很简单,哈哈。它只需要像 3 年级/4 年级的数学。
标签: python python-2.7