两次约会之间的双月工资

2024-09-27 21:31:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在设法编制一个工资计算器,告诉你病假期间的工资是多少。在我居住的哥斯达黎加,工资是两个月支付的(每个月的15号和30号),每个病假日的工资是你工资的80%。所以,程序会询问你的月薪,然后问你病假的开始日期和结束日期。最后,它的意思是打印出你在病假期间每个发薪日的工资。到目前为止,我得到的是:

import datetime

salario = float(input("What is your monthly salary? "))

   fecha1 = datetime.strptime(input('Start date of sick leave m/d/y: '), '%m/%d/%Y')

fecha2 = datetime.strptime(input('End date of sick leave m/d/y: '), '%m/%d/%Y')


diasinc = ((fecha2 - fecha1).days)
print ("Number of days in sick leave: ")
print (diasinc)

def daterange(fecha1, fecha2):
    for n in range(int ((fecha2 - fecha1).days)):
        yield fecha1 + timedelta(n)

for single_date in daterange(fecha1, fecha2):
    print (single_date.strftime("%Y-%m-%d")) #This prints out each individual day between those dates.

我知道对于薪水,我只需要乘以0.8就可以得到80%,但是我怎样才能让程序在每个发薪日打印出来呢?在

提前谢谢你。在


Tags: ofin程序inputdatetimedatedaysprint
1条回答
网友
1楼 · 发布于 2024-09-27 21:31:09

这是八年前的一个类似问题的老答案:python count days ignoring weekends。。。在

。。。阅读Python: datetime模块并调整davewebb的生成器表达式,使其在每次日期为15日或30日时计数。这是另一个计算任何月份的number of occurrences of Friday on the 13th的例子。在

有更好的方法可以使用模运算来简化这种计算。但它们并不重要,除非你在低功耗硬件上一次处理数百万个这样的数据,而且每次处理的日期范围跨越数月。甚至有一个模块可以更有效地为您完成这类工作。但对于您来说,验证(测试正确性)可能很难,也很难找到。在

注意,从长远来看,一种可能更好的方法是使用Python: SQLite3,它应该包含在Python发行版的标准库中。使用它可以生成一个参考表,其中包含范围广泛的所有日期(从组织成立到一个世纪后)。您可以向该表添加一列以记录所有的payday,并使用SQL查询该表并选择payday==True和date BETWEEN。。。。等等

这里有一个如何SQLite: Get all dates between dates的例子。在

这种方法在可预见的将来可以有效地使用一个参考表,在这种情况下,这种方法只需花费少量的编码工作和一些存储空间。在

相关问题 更多 >

    热门问题