[6일차] 파이썬 중급1

하은·2023년 10월 19일
0
post-custom-banner

01. 함수

함수는 '기능'이라고 생각하자

- 함수란?

- 파이썬의 함수는 수학의 함수와 동일하다.

  • Input(데이터)
    -> 함수(특정기능을 갖고 있음. 덧셈, 뺄셈 등의 연산의 기능을 함)
    -> Output(수행결과 출력)
    예) 1, 2 -> x + y -> 3

- 내장함수, 사용자함수

- 함수는 파이썬에서 기본으로 제공하는 내장함수와 사용자가 직접 선언하는 사용자 함수가 있다.

  • print 함수 : 데이터 출력
  • input : 데이터 입력
  • .sort() : 데이터 정렬
def printUserName(name):
	print(f'{name}고객님, 안녕하세요.')
  • 사용자함수:
    = def라는 키워드로 만들면됨
    = 함수의 이름은 printUserName
    = 함수를 선언했을 뿐, 프로그램이 돌아가는건 아님
    = 데이터를 받는 변수 = 매개변수 = name
    = print: 데이터를 대입해서 출력
def addCal(n1, n2):
	result = n1 + n2
    print(f'n1 + n2 = {result}')
  • addCal : 매개변수; 인수; 데이터를 2개 받는다
    = result라는 변수를 이용해 출력

- 함수 사용 이유

- 함수는 특정기능을 재사용하기 위해 사용한다

(변수: 데이터를 재사용하기 위해)

= 기능을 만들어놓고 필요할 때 재사용한다

n1 = int(input('n1 입력:'))
n2 = int(input('n2 입력:'))
print(f'n1 + n2 = {n1 + n2}')

n1 = int(input('n1 입력:'))
n2 = int(input('n2 입력:'))
print(f'n1 + n2 = {n1 + n2}')

n1 = int(input('n1 입력:'))
n2 = int(input('n2 입력:'))
print(f'n1 + n2 = {n1 + n2}')

n1 = int(input('n1 입력:'))
n2 = int(input('n2 입력:'))
print(f'n1 + n2 = {n1 + n2}')

n1 = int(input('n1 입력:'))
n2 = int(input('n2 입력:'))
print(f'n1 + n2 = {n1 + n2}')

=

def addCal():
    n1 = int(input('n1 입력:'))
    n2 = int(input('n2 입력:'))
    print(f'n1 + n2 = {n1 + n2}')

addCal()
addCal()
addCal()
addCal()
addCal()

02. 함수 선언과 호출

함수를 선언하고 호출하는 방법을 알아두자

- 함수 선언(함수 선언부)

- 함수는 def키워드, 함수명, : , 들여쓰기를 이용해서 선언한다

def addCal():
	n1 = int(input('n1 입력:'))
    n2 = int(input('n2 입력:'))
    print(f'n1 + n2 = {n1 + n2}')

- 함수 호출(함수 호출부)

- 함수명과 ()를 사용해서 함수를 호출한다

addCal()

실습) 오늘 날씨를 출력하는 함수를 선언하고 3번 호출해보자

def printweatherInfo():
    print('오늘 날씨는 맑습니다.')

printweatherInfo()
printweatherInfo()
printweatherInfo()

실습) 정수 두개를 입력하면 곱셈과 나눗셈 연산결과를 출력하는 함수를 만들고 호출해보자.

def calFuc():
    n1 = int(input('n1 입력: '))
    n2 = int(input('n2 입력: '))

    print(f'n1 * n2 = {n1 * n2}')
    print(f'n1 / n2 = {round(n1 / n2, 2)}')

calFuc()
calFuc()
calFuc()
  • round(n2, 2)
    소수점 2자리까지만 출력

03. 함수 내에서 또 다른 함수 호출

또 다른 함수를 호출하자

? - 또 다른 함수 호출

def fun1(): #1 출력
    print('fun1 호출!')
    fun2() #2 받고 #마지막에 출력
    print('fun2 호출 후에 실행!')

def fun2(): #2 출력
    print('fun2 호출!')
    fun3() #3 받고

def fun3(): #3 출력
    print('fun3 호출!')

fun1() #1 받고

-->
fun1 호출!
fun2 호출!
fun3 호출!
fun2 호출 후에 실행!

fun2() print가 왜 마지막에 실행되는지 아직 이해가 안 됨

- pass 사용

- 출력문이 비워져있어도 오류없이 정상적으로 출력가능

def todayWeather():
    pass

todayWeather()

실습) 다음과 같이 구구단 출력함수가 연쇄적으로 호출되도록 함수를 사용해보자

def gugudan2():
    for i in range(1, 10):
        print('2 * {} = {}'.format(i, 2 * i))

    gugudan3()

def gugudan3():
    for i in range(1, 10):
        print('3 * {} = {}'.format(i, 3 * i))

    gugudan4()

def gugudan4():
    for i in range(1, 10):
        print('4 * {} = {}'.format(i, 4 * i))

    gugudan5()

def gugudan5():
    for i in range(1, 10):
        print('5 * {} = {}'.format(i, 5 * i))

gugudan2()

-->
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45

04. 인수와 매개변수

함수 호출 시 데이터를 넘겨주자

- 인수와 매개변수

- 함수호출할 때 어떤 값(인수)을 선언부에 넘길 수 있다.

-매개변수(호출부와 선언부를 이어줌)는 데이터를 받을 준비를 한다.

def greet(customer):  # 'customer' =  매개변수
	print(f'{customer} 고객님 안녕하세요.')

greet('홍길동')        # '홍길동' = 인수

- 인수와 매개변수 개수

- 인수 개수와 매개변수 개수는 같아야 한다.

def greet(customer1, customer2):
    print('{}, {}님 안녕하세요'.format(customer1, customer2))

greet('홍길동', '박찬호')

-->
홍길동, 박찬호님 안녕하세요
def calculater(n1, n2):
    print(f'{n1} + {n2} = {n1 + n2}')
    print(f'{n1} - {n2} = {n1 - n2}')
    print(f'{n1} * {n2} = {n1 * n2}')
    print(f'{n1} / {n2} = {n1 / n2}')

calculater(10, 20)
-->
10 + 20 = 30
10 - 20 = -10
10 * 20 = 200
10 / 20 = 0.5

- 매개변수 개수가 정해지지 않은 경우 ' * '를 이용한다.

인수의 개수가 정해지지 않았을 때, 매개변수 앞에 *을 붙여준다.

def printNumber(*numbers):
    print(type(numbers))
    for number in numbers:
        print(number, end='')
    print()

printNumber()
printNumber(10)
printNumber(10, 20)
printNumber(10, 20, 30)

-->
<class 'tuple'>
10
<class 'tuple'>
1020
<class 'tuple'>
102030

실습) 국어, 영어, 수학 점수를 입력받고, 입력받은 점수를 이용해서 총점과 평균을 출력하는 함수를 만들어보자

def printScore(kor, eng, mat):
    sum = kor + eng + mat
    avg = sum / 3

    print(f'총점: {sum}')
    print(f'평균: {round(avg, 2)}')

korScore = int(input('국어 점수 입력: '))
engScore = int(input('영어 점수 입력: '))
matScore = int(input('수학 점수 입력: '))

printScore(korScore, engScore, matScore)

05. 데이터 반환

함수 실행결과를 돌려주자!

- 함수 실행 결과 반환

- return 키워드를 이용하면 함수 실행 결과를 호출부로 반환할 수 있다.

1.
def calculator(n1, n2):
    print(n1 + n2)

calculator(10, 20) #결과를 바로 출력하겠다 리턴x

-->
30

2.
def calculator(n1, n2):
    result = n1 + n2

    return result
print(calculator(10, 20)) #result값이 cal~에 다시 할당

-->
30

3.
def calculator(n1, n2):
    result = n1 + n2

    return result
returnValue = calculator(10, 20) #또 다른 변수에 할당
print(f'returnValue: {returnValue}')

-->
returnValue: 30

- 함수가 return을 만나면 실행을 종료한다

def divideNum(n):

    if n % 2 == 0:
        result = '짝수'
    else:
        result = '홀수'
    return result
	
    # print('hi')
    
returnValue = divideNum(5)
print(returnValue)

-->
divideNum()에 짝수 숫자를 넣든, 홀수 숫자를 넣든, 둘 중 하나에서 return되기 때문에, print('hi)는 출력되지 않는다.

실습) 사용자가 길이(cm)를 입력하면 mm로 환산한 값을 반환하는 함수를 만들어보자

def cmToMm(cm):
    result = cm * 10

    return result

length = float(input('길이(cm) 입력: '))
returnValue = cmToMm(length)
print(f'returnValue: {returnValue}mm')

-->
길이(cm) 입력: 10.5
returnValue: 105.0mm

실습) 1부터 100까지의 정수중에서 홀수인 난수를 반환하는 난수를 만들어보자

import random

def getOddRandomNumber():

    while True:
        rNum = random.randint(1, 100)
        if rNum % 2 != 0:
            break

    return rNum

print(f'returnValue: {getOddRandomNumber()}')

-->
returnValue: 71
post-custom-banner

0개의 댓글