-
카테고리
-
세부 분야
업무 자동화
-
해결 여부
미해결
마지막에 노동법 준수하는 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 로 하면 에러가 안나네요..
답변을 작성해보세요.
0
SungYong Lee
지식공유자2018.06.14
앗. 소스코드에 오류가 있어요. 근무시간이 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을 하라는 뜻입니다.
혼란을 드려서 죄송하고, 오류를 발견해주셔서 감사합니다.
답변 1