我正在将一个项目从Python转换为节点.js-到目前为止一切都很顺利。我有一个函数,可以把某个人的经验值转换成一个水平。我试图将Python的工作函数重写为节点.js但是函数返回完全不同的答案,我不知道为什么。你知道吗
Python:
def calculateLevel(exp):
if exp < 83: return 1
else:
calcExp = 0
for level in range(1, 1000):
diff = int(level + 300 * math.pow(2, float(level)/7))
calcExp += diff
if exp < calcExp//4:
break
return level
你知道吗节点.js地址:
const _ = require("underscore");
// ...
function calculateLevel(exp) {
return new Promise((resolve, reject) => {
if (exp < 83) resolve(1);
else {
var calcExp = 0;
for (var i in _.range(1, 1000)) {
calcExp += parseInt(i + 300 * Math.pow(2, i/7));
if (exp < Math.floor(calcExp/4)) {
resolve(i);
break;
}
}
}
});
}
例如,Python中的calculateLevel(123456)
返回51
(正确答案),而Python中的await calculateLevel(123456);
节点.js返回15
(错误答案)。你知道吗
很明显这里面有问题节点.js版本,但我搞不懂是什么。你知道吗
非常感谢您的帮助。提前谢谢。你知道吗
在Python中:
将创建序列到
1 2 3 4 5 6 7 8 9
JavaScript中的^{} 将遍历键而不是值。你知道吗
所以
for (var i in _.range(1, 1000)) {
总是0 ... 999
将其更改为^{}
此外,还不清楚为什么在这里使用Promise,因为这里没有任何异步代码。所以你可以完全取消这里的承诺。你知道吗
应该是
我运行了以下代码:
它返回51。你知道吗
可能是其他原因导致了这个问题。你知道吗
相关问题 更多 >
编程相关推荐