# Assignment Number ...... 6
# Student Name ........... 배지원
# File Name .............. hw6_배지원
# Program Description .... (1) def()를 통해 삼각형의 면적을 구하는 함수를 정의
# ........................ (2) for문을 통해 2차원 공간상의 두점 사시의 거리를 계산하는 함수를 정의
# ........................ (3) if -else문을 활용하여 재귀함수를 생성하여 임의의 양의 정수부터 0까지 세는 함수를 만든다
# ........................ (4) lambda함수를 통해 삼각형의 넓이를 게산하는 함수를 생성한다.



# 1
def area_triangle(h,w):
    s = 0.5*h*w
    return (s)

print(area_triangle(10,15))

# 삼각형을 구하는 area_triangle함수를 생성한다.
# 전달인자로 h,w값을 사용하는데 이는 위치전달인자이다.
# 함수 내부에서 삼각형의 넓이를 구하는 공식인 0.5*h*w를 변수 s에 할당하고.
# 이러한 변수 s를 리턴한다.

# area_triangle(10,15) 값을 입력하면 밑변을 w로하고 높이를 h로 하는 삼각형의 넓이가 나온다.



# 2
def distance(a,b):      
    d = 0
    for i in range(len(a)):
        d += (a[i]-b[i])**2 
    d = float(d)**0.5
    return d

print(distance(a=(1,2),b=(5,7)))

# def를 이용하여 두점사이 거리를 재는 함수를 생성한다.
# 먼저 입력받게 되는 인자는 a와 b로 이는 향후 튜플로 입력될 것이다.
# 거리에 대한 계산을 위해 d 라는 변수에 0을 할당하여 int형식의 자료형으로 만든다.
# 이후 for문을 사용하여 loop을 돌리는데 range(len(a))를 활용하여 입력받는 튜플에 길이만큼 반복하도록 설정하였다.

# d 에 a의 i번째 element에서 b의 i번째 element를 뺀 값을 제곱하고
# 이에 대한 연산을 +=으로 하여 len(a)만큼 루프가 돌아가는 동안 합을 하도록하였다.

# for문 이후에 저장된 d값에 0.5제곱을 하여 루트를 씌워주었다. 
# int 자료형으로 이러한 루트 연산을 받는다면 값이 제대로 도출되지 않기 때문에 
# 이에 대한 자료형을 float로 변환한 후 전개하였다.
# 최종적으로 d을 return하여 출력이 되도록 한다.

# distance함수에 전달인자로 a=(1,2),b=(5,7)의 튜플을 입력한다면 원하는 두점사이의 거리를 얻을 수 있다.


# 3
def count(n):
    while (n>=0):
        if n>0:
            print(n)
            n -= 1
        else:
            print('zero!!')
            break

count(5)
# def를 통해 count라는 함수를 생성한다.
# 이를 위해 while문을 설정하여 원하는 조건인 n>=0까지 loop를 돌리려 하였다.

# 그 아래 if 문을 넣었는데, n>0인 조건이 만족한다면 
# n을 프린트 하고 주어진 n값에서 1씩 뺀 값을 다시 할당하는 것이다.
# 이는 각각의 print문으로 출력된 숫자이기 때문에 숫자마다 줄바꿈이 일어난다.

# 이러한 if문은 n이 0이 되었을 때 조건을 만족하지 않는다.
# 즉, n=0 일때 else 문에 해당하게 되는데 이때 zero!라는 문자를 출력하게 되고
# break 명령을 통해 while루프를 종료하게 된다.




# 4
area_triangle_ld = (lambda h,w: 0.5*h*w)

print(area_triangle_ld(10,15))

# lambda로 간단하게 함수를 제작하였다. 
# 전달인자로 h,w를 입력받고
# 입력받은 값을 토대로 0.5*h*w의 연산을 return하는 코드이다.

