【发布时间】:2017-05-08 16:01:39
【问题描述】:
我正在尝试编写一个薪水计算器,它可以告诉您病假期间的薪水是多少。在我居住的哥斯达黎加,工资每两个月支付一次(每个月的 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%,但如何让程序在每个发薪日打印出来?
提前谢谢你。
【问题讨论】:
-
如果 15 号或 30 号是周末怎么办?
-
用户从相关期间的开始日期到结束日期的 for 循环;每次迭代都是一天,您可以打印每天的工资
-
@JoshuaSmith 我猜你也可以算作发薪日。
-
@HenryM 我一直在尝试使用 for 循环,但由于输入日期而出现错误。 "TypeError: 描述符 'date' 需要一个 'datetime.datetime' 对象,但收到了一个 'int'"
-
第 15 和第 30 不是两周。这是每月 15 日和最后一天的双月付款。两周正好是两周的间隔。
标签: python