Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 计算赚取特定金额利息的时间_Python 3.x - Fatal编程技术网

Python 3.x 计算赚取特定金额利息的时间

Python 3.x 计算赚取特定金额利息的时间,python-3.x,Python 3.x,我无法计算出实现这一点的方法,因为原则金额在每年之后都会发生变化(如果每年计算一次,这将是最简单的)。最终的目标是计算准确的年、月、日数,以赚取150000英镑的存款利息,利率为6.5%。我已经试过了,但似乎不知道如何增加循环中的年/月/日。我不介意这被否决,因为我没有发布任何代码(好吧,他们错了)。这并不像这里的初学者看起来那么简单。你可以做如下事情 def多久才能致富(投资、利润目标、利率): 利润=0 天数=0 日利率=利率/100/365 利润

我无法计算出实现这一点的方法,因为原则金额在每年之后都会发生变化(如果每年计算一次,这将是最简单的)。最终的目标是计算准确的年、月、日数,以赚取150000英镑的存款利息,利率为6.5%。我已经试过了,但似乎不知道如何增加循环中的年/月/日。我不介意这被否决,因为我没有发布任何代码(好吧,他们错了)。这并不像这里的初学者看起来那么简单。

你可以做如下事情

def多久才能致富(投资、利润目标、利率):
利润=0
天数=0
日利率=利率/100/365
利润<利润\目标:
天数+=1
利润+=(投资+利润)*日利息
年=天//365
月=天%365//30
天=天-(月*30)-(年*365)
返回年、月、日
年、月、日=多久才能致富(2500000、400000、8)
打印(f“需要{年}年、{月}月和{天}天”)
输出

需要1年10个月13天

这是一道纯粹的数学题。复利的计算方法如下:

Ptotal=初始*(1+速率/100)时间

其中,Ptotal是新的总数。比率通常以百分比表示,因此除以100;时间是以年为单位的。不过,您对差异感兴趣,所以请使用

利息=Pinitial*(1+利率/100)时间–Pinitial

相反,在Python中:

def复利(P、利率、时间):
利息=P*(1+利率/100)**时间-P
利息返还
在给定p、r和目标的情况下,这与屈服时间的一个基本反演是

时间=日志((目标+初始值)/初始值)/日志(1+速率/100)

这将立即返回年数。将分数转换为天数很简单——一年平均有365.25天——但在几个月内,你必须近似计算

在底部,结果被反馈到标准复利公式中,以表明它确实返回了预期收益率

导入数学
def反向复合利息(P、利率、目标):
时间=数学日志((目标+P)/P)/数学日志(1+速率/100)
返回时间
时间跨度=反向复合利息(2500000,6.540000)
打印('以年为单位的时间',时间跨度)
年份=数学下限(时间跨度)
月=数学下限(12*(时间跨度-年))
天数=数学下限(365.25*(时间跨度-年-月/12))
打印(年、'y',月、'm',日、'd')
打印(复利(2500000,6.5,时间跨度))
将输出

time in years 2.356815854829652
2 y 4 m 8 d
400000.0
我们能做得更好吗?对
datetime
允许将任意数字添加到当前日期,因此假设您今天开始赚钱(now),您可以立即获得日期$$:

from datetime import datetime,timedelta

# ... original script here ...

timespan *= 31556926 # the number of seconds in a year
print ('time in seconds',timespan)
print (datetime.now() + timedelta(seconds=timespan))
这对我来说(你的目标日期会有所不同):


这与其说是python问题,不如说是一个数学问题,一旦你理解了它的数学原理,用python编写代码将是一件非常困难的事情easy@ChrisDoyle嘿谢谢你的评论。行。@ChrisDoyle利息计算很简单。将其连续添加到主体中也很容易。在同一个循环中增加时间是困难的,那么将一年分为月和日是另一回事,甚至还没有计算出每年的时间。我想这需要多个功能。我正要去吃晚饭,然后我会看看计算结果,如果问题仍然没有答案,我会发布一些东西。也就是说,考虑到闰年或者仅仅假设一年是365年,这是准确的吗days@ChrisDoyle不,没有闰年或其他什么。考虑到封锁,我把这个问题交给了自己,看看我是否能做到,这不是一项工作或任何事情。以8%的25,00000存款赚取40,00000应该需要22个月。这就是我想要的。谢谢你的时间。非常感谢你的努力。保持简单。非常感谢您抽出时间。工作完美。
time in years 2.356815854829652
time in seconds 74373863.52648607
2022-08-08 17:02:54.819492