규칙은 아래와 같다.
- 함수명: 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'이 반환된다.
Exception has occured: TypeError
type NoneType doesn't define __round__ method
과제 출처: 나도코딩