为了账号安全,请及时绑定邮箱和手机立即绑定

python代码为项目计算xp

python代码为项目计算xp

扬帆大鱼 2021-03-30 14:19:07
我正在尝试将C ++代码转换为python但我被卡住了原始C ++代码int main(void){    int levels = 40;    int xp_for_first_level = 1000;    int xp_for_last_level = 1000000;    double B = log((double)xp_for_last_level / xp_for_first_level) / (levels - 1);    double A = (double)xp_for_first_level / (exp(B) - 1.0);    for (int i = 1; i <= levels; i++)    {        int old_xp = round(A * exp(B * (i - 1)));        int new_xp = round(A * exp(B * i));        std::cout << i << " " << (new_xp - old_xp) << std::endl;    }}python代码import mathfrom math import logfrom math import explevels = 40xp_for_first_level = 1000xp_for_last_level = 1000000B = log(xp_for_last_level / xp_for_first_level) / (levels - 1)A = xp_for_first_level / (exp(B) - 1.0)for i in range(1, levels):    old_xp = round(A * exp(B * (i - 1)))    new_xp = round(A * exp(B * i))    print(i + " " + (new_xp - old_xp))感谢任何帮助,我似乎无法完全发挥作用,当我修复一个错误时,我正在创建另一个错误。
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

对于最后一行,您可以简单地使用:

print(i, new_xp - old_xp)

正如@pfnuesel所说,您将需要稍微调整for循环的范围。

最后,您不需要import math。您可以将前3行替换为:

from math import log, exp


查看完整回答
反对 回复 2021-04-01
?
HUWWW

TA贡献1874条经验 获得超12个赞

print行更改为:

print("%i %i" % (i, new_xp - old_xp))

有关更多信息,请参考此允许的类型转换说明符列表。

或使用新的格式方法。


查看完整回答
反对 回复 2021-04-01
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

根据您使用的python版本,C ++代码中的转换类型会翻倍

(double)xp_for_last_level / xp_for_first_level

可能需要在python代码中加以考虑。在python 3中,您将获得一个float;在较旧的python中,您可以执行以下操作:

from __future__ import division

然后xp_for_last_level / xp_for_first_level会给你一个浮动。


查看完整回答
反对 回复 2021-04-01
  • 3 回答
  • 0 关注
  • 309 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号