我正在设法编制一个工资计算器,告诉你病假期间的工资是多少。在我居住的哥斯达黎加,工资是两个月支付的(每个月的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%,但是我怎样才能让程序在每个发薪日打印出来呢?在
提前谢谢你。在
这是八年前的一个类似问题的老答案: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的例子。在
这种方法在可预见的将来可以有效地使用一个参考表,在这种情况下,这种方法只需花费少量的编码工作和一些存储空间。在
相关问题 更多 >
编程相关推荐