[Python 기초] 성별에 따른 표준 몸무게 구하기

EMMA·2022년 1월 29일
1
post-thumbnail

함수를 이용, 성별에 따른 표준 몸무게를 구해보자


규칙은 아래와 같다.

  • 함수명: std_weight (매개변수: gender, height)
  • 출력 결과: "표준 몸무게 163cm 여자의 표준 체중은 55.11kg 입니다."
  • 표준 체중은 소수점 둘째 자리까지만 출력한다.

성별에 따른 표준 몸무게 공식은 아래와 같다고 가정해보자.
남자) 키(m) x 키(m) x 22
여자) 키(m) x 키(m) x 21

우선 성별에 따라 각각의 표준 몸무게를 구하는 함수를 작성한다.

def std_weight(gender,height):
	if gender == "남자":
    		return height*height*22
    else:
    		return height*height*21

위 함수의 내용을 정리하면, gender/height 값을 받아서 gender가 남자인 경우에는 첫 번째 공식을, 여자인 경우(else) 두 번째 공식을 적용해서 그 값을 받겠다는 것이다.

함수를 만든 뒤, height/gender 그리고 단위 변환과 소수점 조정해줄 변수를 선언하고 출력 예시대로 print 한다.

height=162
gender="여자"
weight=round(std_weight(gender,height),2)  #함수를 통해 구한 값의 소수점 자리 조정, weight에 담기 

print("표준 몸무게: {0}cm {1}의 표준 체중은 {2}kg입니다." .format(height,gender,weight))
#출력 결과: 표준 몸무게: 163cm 여자의 표준 체중은 55.11kg입니다.


처음 java 기초를 배울 때 함수에 쓰이는 return과 출력 기능을 수행하는 print(java에서는 System.out.print/printf) 차이에 대해 헷갈렸는데, 이번 기회에 좀 정리되었다. (계산된 결과물을 함수 바깥에서도 사용할 수 있도록 형태 그대로 저장해 '반환'해주고 함수는 종료된다. 반면 print는 말 그대로 출력 기능만 수행한다.)

<example1>
def f(x):
	return x+1
    	print("값이 바뀌었어요!")

print(f(1))	#2가 반환되고, "값이 바뀌었어요!"는 출력되지 않는다. 


<example2>
def f(x):
	print(x+1)
	#return None (return이 작성되지 않은 경우, python에서 자동으로 지정함)

print(f(1))	#2가 출력되고, 'None'이 반환된다. 

모든 함수는 return 값을 갖기 때문에, 따로 지정하지 않으면 자동으로 return None 이 지정되는 것이다. 그래서 만약 위에서 작성한 std_weight 함수에서 `return`을 print로 바꿔버리면 return값 'None'이 되고, 이 상태에서 round 적용하고 변수 weight에 대입 시 바로 에러가 떠버린다. 아래와 같이 ... :)
Exception has occured: TypeError
type NoneType doesn't define __round__ method


과제 출처: 나도코딩

profile
예비 개발자의 기술 블로그 | explore, explore and explore

0개의 댓글