语法无效 - 逻辑错误

时间:2014-03-10 06:20:59

标签: python

有人可以查看这段代码吗?我没有解释就得到了无效的语法。它需要知道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

这是一项家庭作业,是更大的工资计划的一部分。

2 个答案:

答案 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_hoursovertime_hours因为original_hours <= 40max(n,m)提供最大的n,m,因此original_hours - 40为零。如果elif为负数,则返回零。否则,它将为您提供员工工作多少小时。 Capisce?

正如Christian在另一个回答中所解释的那样,您收到语法错误的原因是,为了使用if,您必须先拥有if/elif/elseif 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}}