有人可以查看这段代码吗?我没有解释就得到了无效的语法。它需要知道8-40之间的输入何时通过overtime_hours = 0,当输入为41-86时需要通过overtime_hours = original_hours-40。
while original_hours < 8 or original_hours > 40:
overtime_hours = 0
elif original_hours > 41 or original_hours < 86:
overtime_hours = original_hours - 40
这是一项家庭作业,是更大的工资计划的一部分。
答案 0 :(得分:1)
如果您想使用elif
,则必须先拥有if
。此外,你的条件似乎很糟糕,你可以试试这个:
if 8 <= original_hours <= 40:
overtime_hours = 0
elif 41 <= original_hours <= 86:
overtime_hours = original_hours - 40
或者这个:
if original_hours in range(8, 41):
overtime_hours = 0
elif original_hours in range(41, 87):
overtime_hours = original_hours - 40
注意 range(a, b)
包含a
但不包括b
。这就是你应该使用range(8, 40+1)
答案 1 :(得分:0)
试试这个:
if 8 < original_hours < 86:
worked_hours = min(original_hours,40)
overtime_hours = max(0, original_hours-40)
# define your special cases for hours <= 8 or hours >= 86
一般情况下,您不希望更改工资核算程序中的original_hours
,原因与您不希望雇主在没有您的时间的情况下更改时钟输入/退出时间的原因相同这样说的。我制作了一份40小时的副本,并将其设置为worked_hours
。 overtime_hours
因为original_hours <= 40
为max(n,m)
提供最大的n,m
,因此original_hours - 40
为零。如果elif
为负数,则返回零。否则,它将为您提供员工工作多少小时。 Capisce?
正如Christian在另一个回答中所解释的那样,您收到语法错误的原因是,为了使用if
,您必须先拥有if/elif/else
! if condition:
do_stuff
elif other_condition:
do_other_stuff
elif ...
do_...
else:
default_case
块的语法是:
while
另一方面, PTO = 0
while hours_worked > 40:
PTO += 8
hours_worked -= 40
可能是一个很好的方式,可以看到已经填写了多少个工作周(也许你的员工每周工作时间可以获得8小时的带薪休假,而且你不知道如何反对分工)
{{1}}