• 카테고리

    질문 & 답변
  • 세부 분야

    업무 자동화

  • 해결 여부

    미해결

마지막에 노동법 준수하는 if식을 넣은 뒤 에러가 나는데요

18.06.14 16:15 작성 조회수 168

0

Traceback (most recent call last):

File "C:/Python_Study/14. Advanced reading and writing file.py", line 43, in

emp.name,emp.work_start,emp.work_finish,emp.wage_per_hour,emp.worked_hours(),emp.wage_of_the_day()

File "C:/Python_Study/14. Advanced reading and writing file.py", line 23, in wage_of_the_day

return self.worked_hours()self.wage_per_hour

TypeError: unsupported operand type(s) for : 'NoneType' and 'int'

이런 에러가 납니다.

내용은 영상과 종일하게 넣은거같은데 뭐가 문젠지 잘 모르겠네요 int선언을 안해준 것인지..

=============================================================================
추가적으로 이것저것 해보다보니 if식에서 if worked_hours>4 로 하면 위와같은 에러가 나는데
if worked_hours >=4 로 하면 에러가 안나네요..

답변 1

답변을 작성해보세요.

0

앗. 소스코드에 오류가 있어요. 근무시간이 4와 같거나 작은 모든 경우에는 현재 영상대로 하면 에러가 날겁니다.

def worked_hours(self):
    worked_hours = self.work_finish - self.work_start
    if worked_hours > 4:
        breaktime = worked_hours // 4 * 0.5
        worked_hours = worked_hours - breaktime
    return worked_hours   # <-----------이 부분 4칸 들여쓰기를 원래 비디오 속의 코드보다 한번 덜해야 합니다. 

로 수정해보세요.
즉, return worked_hours 앞의 네칸 들여쓰기를 한번 덜하셔야 합니다.
제가 영상에 남겨놓은 소스코드에서 오류를 뿜는 이유는 worked_hours가 4보다 큰 경우에만 값을 return 하게 되어 있기 때문입니다. 수정한 코드에서는 worked_hours가 4보다 큰 경우에 breaktime을 계산 한 뒤, worked_hours를 수정하고, if 조건에서 빠져나간 뒤 return을 하라는 뜻입니다.
혼란을 드려서 죄송하고, 오류를 발견해주셔서 감사합니다.