Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无效语法-逻辑错误_Python - Fatal编程技术网

Python 无效语法-逻辑错误

Python 无效语法-逻辑错误,python,Python,有人能检查一下这段代码吗?我得到了一个没有解释的无效语法。它需要知道8-40之间的输入何时通过加班时间=0,当输入为41-86时,它需要通过加班时间=原始时间-40 while original_hours < 8 or original_hours > 40: overtime_hours = 0 elif original_hours > 41 or original_hours < 86: overtime_hours = original_hour

有人能检查一下这段代码吗?我得到了一个没有解释的无效语法。它需要知道8-40之间的输入何时通过加班时间=0,当输入为41-86时,它需要通过加班时间=原始时间-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
当原始时数<8或原始时数>40时:
加班时间=0
如果原始工时>41或原始工时<86:
加班时间=原加班时间-40

这是一个家庭作业,是一个更大的工资单程序的一部分。

如果你想使用
elif
,你必须先有
If
。此外,您的情况似乎很糟糕,您可以尝试以下方法:

if 8 <= original_hours <= 40:
    overtime_hours = 0
elif 41 <= original_hours <= 86:
    overtime_hours = original_hours - 40
注意
范围(a,b)
包括
a
但不包括
b
。这就是为什么您应该使用
范围(8,40+1)

尝试以下方法:

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
而另一方面,
可能是一个很好的方法,可以看出有多少工作周被填满(也许你的员工每周工作8小时带薪休假,而你不知何故反对楼层划分)


语法错误不是逻辑错误——逻辑错误是语法格式正确的错误,但控制流或其他运行时效果不是预期的。不要与elif混用,链接比较可以让它更清楚:
8@MatthewTrevor我总是忘了这个功能。编辑。
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
if condition:
    do_stuff
elif other_condition:
    do_other_stuff
elif ...
    do_...
else:
    default_case
PTO = 0
while hours_worked > 40:
    PTO += 8
    hours_worked -= 40