본문 바로가기

Python

[Python] 15

사용자 함수 심화

1. 사용자 함수

- 내장 함수(Built-in Function) : 이미 만들어져 있는 함수

- 사용자 함수(User Function) : 사용자가 직접 만든 함수

​ 

​ 

2. 사용자 함수 생성 방법

def 함수명(전달값):

    실행문

    return 결과값

​ 

​ 

3. 사용자 함수 호출 방법

- 결과값을 저장할 변수 = 함수명(전달값)

- 결과값과 인수는 없을 수도 있음

4. 함수의 형태

(1) 인수(X), 결과값(X)

def printMessage1():

    print('**********')

(2) 인수(O), 결과값(X)

def printMessage2(message):

    print(message)

def printMessage3(message='입력을 하지 않으셨네요'):

    print(message)

def printMessage4(message='없음', i=5):

    for j in range(i):

        print(message)

(3) 인수(O), 결과값(O)

def getRandomDice(i=6):

    r = random.randint(1, i)

    print('당신의 주사위는', r)

    return r

※ result = getRandomDice(6) => return 값이 있어야 실행된다.

(4) 결과값을 여러 개 반환하는 경우

def 함수명(인수):

    return a, b, c

d, e, f = 함수명(인수) # return 값이 3개이므로

 


 

실습(User Function(1))

1. printMessage1(), printMessage2(), printMessage3(), printMessage4()

(1) myutils.py

 
def printMessage1():
    print('**********')

def printMessage2(message):
    print(message)

def printMessage3(message='입력을 하지 않으셨네요'):
    print(message)

def printMessage4(message='없음', i=5):
    for j in range(i):
        print(message)

 

(2) 위의 함수를 이용하여 코드 실행

printMessage1()
printMessage2('abcde')
printMessage3()  # 아무것도 지정하지 않음
printMessage3('33333')
printMessage4()  # 아무것도 지정하지 않음
printMessage4('James', 3)  # message, i 모두 지정
printMessage4(i=3)  # i만 지정

결과

 

 

2. getRandomDice(), multiReturn()

(1) myutils.py

def getRandomDice(i=6):
    r = rd.randint(1, i)
    print('당신의 주사위는', r)
    return r

def multiReturn(i, j, k):
    return i * 10, j * 200, k * 300

(2) 위의 함수를 이용하여 코드 실행

result = getRandomDice(100)
a, b, c = multiReturn(1, 2, 3)
print(a, b, c)

# d, e = multiReturn(1, 2, 3)  # 오류 발생 : 받을 변수 개수가 정확해야 한다.
# print(d, e)

결과

 

3. addAll()

(1) myutils.py

# 숫자 입력을 받아 모두 더한 결과를 돌려주는 함수
def addAll(*i):
    res = 0
    for j in i:
        res = res + j
    return res
 

 

(2) 위의 함수를 이용하여 코드 실행

result = addAll(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10000)
print(result)

 

결과

 

실습(User Function(2))

문제

"""
    1. str이 숫자와 '-'로만 구성이 되어 있는지 check
    2. 숫자가 10자리 또는 11자리인지 check
    3. 정상이면 10자리이면 XXX, XXX, XXXX return
                11자리이면 XXX, XXXX, XXXX return
    4. 비정상이면 999, 9999, 9999 return
"""

 

1. myutils.py

(1) checkPhoneNumber() 함수 생성

def checkPhoneNumber(str):
    ndigit = 0  # 숫자 개수
    nstring = ''  # 숫자 저장

(2) 숫자와 '-'로만 구성이 되어 있는지 check

    for c in str:  # c에 str을 가져온다.
        if c in '0123456789-':
            if c == '-':
                ndigit = ndigit + 0  # 또는 Pass(아무것도 안 함)
            else:
                ndigit = ndigit + 1
                nstring = nstring + c
        else:
            return '999', '9999', '9999'

(3) 숫자가 10자리인지 11자리인지 check

    if ndigit == 10:
        return nstring[0:3], nstring[3:6], nstring[6:]
    elif ndigit == 11:
        return nstring[0:3], nstring[3:7], nstring[7:]
    else:
        return '999', '9999', '9999'

2. 위의 함수를 이용하여 코드 실행

a, b, c = checkPhoneNumber('011-1234-5678')
print(a, b, c)

3. 결과

결과

 

※ myutils.py 전체 코드

def checkPhoneNumber(str):
    ndigit = 0  # 숫자 개수
    nstring = ''  # 숫자 저장

    for c in str:  # c에 str을 가져온다.
        if c in '0123456789-':
            if c == '-':
                ndigit = ndigit + 0  # 또는 Pass(아무것도 안 함)
            else:
                ndigit = ndigit + 1
                nstring = nstring + c
        else:
            return '999', '9999', '9999'

    if ndigit == 10:
        return nstring[0:3], nstring[3:6], nstring[6:]
    elif ndigit == 11:
        return nstring[0:3], nstring[3:7], nstring[7:]
    else:
        return '999', '9999', '9999'

실습(User Function(3))

​문제​

"""
    1. 문자열을 2개 입력받는다.
    2. 공통으로 존재하는 문자를 찾는다.
    3. "첫 번째 문자열의 길이 : *, 두 번째 문자열의 길이 : *"
       "공통으로 존재하는 문자 개수 : *"를 출력한다.
    4. 첫 번째 문자열과 두 번째 문자열을 출력하되, 공통된 문자만 색을 입혀 출력한다.
"""

1. 문자열을 2개 입력받는다.

from myutils import *

str1 = input('첫 번째 문자열을 입력하세요 : ')
str2 = input('두 번째 문자열을 입력하세요 : ')

 

2. 입력받은 문자열을 list에 넣기 위해 변수를 list로 선언한다.

str1_spl = []
str2_spl = []

for c in str1:  # c에 str을 가져온다.
    str1_spl.append(c)  # str1_spl에 c 값을 추가한다.
    
for c in str2:  # c에 str을 가져온다.
    str2_spl.append(c)  # str2_spl에 c 값을 추가한다.

3. list를 set으로 바꾼다.

str1_set = set(str1_spl)  # str1_spl의 중복값이 제거된다.
str2_set = set(str2_spl)  # str2_spl의 중복값이 제거된다.
res_set = str1_set.intersection(str2_set)  # 공통으로 존재하는 문자
res_list = list(res_set)  # 공백을 제거하기 위해 res_set을 list로 바꾼다.

if ' ' in res_list:
    res_list.remove(' ')

print('첫 번째 문자열의 길이 : {}, 두 번째 문자열의 길이 : {}'.format(len(str1), len(str2)))
print('공통으로 존재하는 문자 개수 : {}'.format(len(res_list)))

4. 공통된 문자만 색을 입혀 출력한다

for c in str1:
    if c in res_list:
        print(RED + c + END, end='')
    else:
        print(c, end='')

print()

for c in str2:
    if c in res_list:
        print(GREEN + c + END, end='')
    else:
        print(c, end='')

5. 결과를 출력한다.

결과

 

'Python' 카테고리의 다른 글

[Python] 16  (0) 2021.12.06
[Python] 14  (0) 2021.12.04
[Python] 13  (0) 2021.12.03
[Python] 12  (0) 2021.12.01
[Python] 11  (0) 2021.11.28