강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của liolent0688
liolent0688

câu hỏi đã được viết

Giới thiệu lập trình và sử dụng tự động hóa công việc cho nhân viên văn phòng

Thêm kết quả tính toán

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

Viết

·

292

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 로 하면 에러가 안나네요..

python

Câu trả lời 1

0

SungYong Lee님의 프로필 이미지
SungYong Lee
Người chia sẻ kiến thức

앗. 소스코드에 오류가 있어요. 근무시간이 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을 하라는 뜻입니다.
혼란을 드려서 죄송하고, 오류를 발견해주셔서 감사합니다.

Hình ảnh hồ sơ của liolent0688
liolent0688

câu hỏi đã được viết

Đặt câu hỏi