본문 바로가기

Python

Python - 반환값 return

# 반환값
# add 함수 : 매개변수 2개, 리턴값 존재 
# return v1+v2 : return 함수 종료
#              : return v1+v2 함수 종료시 두 수의 합을 
#                호출한 함수(main) 에게 전달 
def add(v1,v2) :
    return v1+v2

hap,sub =0,0
hap = add(10,20)
print("10+20=",hap)

# 리턴 값이 여러개 존재하는 경우
def multi(v1,v2) :
    list = []
    res1 = v1+v2
    res2 = v1-v2
    list.append(res1)
    list.append(res2)
    return list

hap,sub=0,0
list = multi(100,200)
hap = list[0]
sub = list[1]
print("multi 함수의 리턴 : %d, %d" %(hap,sub))

 

# 가변 매개변수 : 매개변수의 갯수 지정이 안됨 
def multiParam(* p) :
    result = 0
    for i in p :
        result += i
    return result

hap,sub = 0,0
list = multi(100,200)
hap = list[0]
sub = list[1]
print("multi 함수의 리턴 : %d, %d" %(hap,sub))
print("multiParam()=",multiParam())
print("multiParam(10)=",multiParam(10)) #10
print("multiParam(10,20)=",multiParam(10,20)) #30
print("multiParam(10,20,30)=",multiParam(10,20,30)) #60

# 함수의 종료 없이 중간에 값을 리턴 
# yield = 중간 값 전달 
def genFun(num) : #5 
    for i in range(10,num+10): #10에서 14까지 값을 리턴
        yield i #i변수 값을 전달해준다 아래아래 줄로 #함수 종료없이 중간에 값 전달
        print(i, "값 반환")


print(list(genFun(5)))

for data in genFun(5):
    print("main에서 출력 : ",data)

# 문제
# 함수 calc는 두개의 수와 하나의 연산자를 매개변수로 받아
# 결과를 전달하도록 작성하기
def calc(v1,v2,op):
    result = 0
    if op == "+":
        result = v1 + v2
    elif op == "-":
        result = v1 - v2
    elif op == "*":
        result = v1 * v2
    elif op == "/":
        result = v1 / v2
    return result

oper = input("연산자를 선택하세요:(+,-,*,/) =>")
var1 = int(input("첫번째 수 =>"))
var2 = int(input("두번째 수 =>"))
res = calc(var1,var2,oper)
print("계산 : %d %s %d = %.2f" % (var1,oper,var2,res))
# #.2f에서 .2는 소숫점이하 2자리 수까지 출력

# 리스트 값의 합과 평균을 구하는 함수 작성 
def getMean(numlist) :
    if len(numlist) > 0 :
        return sum(numlist)/len(numlist)
    else :
        return 0 

def getMean(numlist) :
    return sum(numlist)/len(numlist) if len(numlist) > 0 else 0

def getSum(numlist) :
    return sum(numlist)

list1 = [2,3,3,4,4,5,5,6,6,8,8]
print("list1의 합 :",getSum(list1))
print("list1의 평균 :",getMean(list1))

tp1 = (2,3,3,4,4,5,5,6,6,8,8)
print("list1의 합 :",getSum(tp1))
print("list1의 평균 :",getMean(tp1))