2018-05-22 TIL(Python 함수 실습)

9-1

매개변수로 문자열을 받고, 해당 문자열이 red면 apple을, yellow면 banana를, green이면 melon을, 어떤 경우도 아닐 경우 I don’t know를 리턴하는 함수를 정의하고, 사용하여 result변수에 결과를 할당하고 print해본다.

def func1(str1):
    result = ''
    if str1 == 'red':
        result = 'apple'
    elif str1 == 'yello':
        result = 'banana'
    elif str1 == 'green':
        result = 'melon'
    else:
        return "I don't know"
    return result

print(func1('red'))

9-2

1번에서 작성한 함수에 docstring을 작성하여 함수에 대한 설명을 달아보고, help(함수명)으로 해당 설명을 출력해본다.

def func1(str1):
    '색깔에 따른 과일을 매칭해줍니다.'
    result = ''
    if str1 == 'red':
        result = 'apple'
    elif str1 == 'yello':
        result = 'banana'
    elif str1 == 'green':
        result = 'melon'
    else:
        return "I don't know"
    return result

print(func1('red'))

help(func1)

9-3

한 개 또는 두 개의 숫자 인자를 전달받아, 하나가 오면 제곱, 두개를 받으면 두 수의 곱을 반환해주는 함수를 정의하고 사용해본다.

def func2(num, num2=None):
    if num2:
        return num*num2
    else:
        return num*num
print(func2(3,4))

9-4

두 개의 숫자를 인자로 받아 합과 차를 튜플을 이용해 동시에 반환하는 함수를 정의하고 사용해본다.

def add_subtract(a,b):
    return a+b, a-b

print(add_subtract(3,5))

9-5

위치인자 묶음을 매개변수로 가지며, 위치인자가 몇 개 전달되었는지를 print하고 개수를 리턴해주는 함수를 정의하고 사용해본다.

def func1(*args):
    print(args)
    return f'인수의 수는 {len(args)}개 입니다'

print(func1('a','b','c'))

9-6(다시풀기)

람다함수와 리스트 컴프리헨션을 사용해 한 줄로 구구단의 결과를 갖는 리스트를 생성해본다.

list1 = [i*j for i in range(2,10) for j in range(1,10)]
print(list1)
  1. 문자열과 키 문자 1개를 받는 함수 구현
  2. while문을 이용, 문자열에서 키 문자가 존재하는 index위치를 검사 후 해당 index를 리턴
  3. 찾지 못했을 경우 -1을 리턴
def sequential_search(string, inputstr):
    index = 0
    while 1:
        if index == len(string):
            return -1
        elif inputstr in string[index]:
            return index
        else:
            index += 1

string = 'abcdefg'
inputstr = 'z'
print(sequential_search(string,inputstr))

선택정렬(Selection sort)

[9, 1, 6, 8, 4, 3, 2, 0, 5, 7] 를 정렬한다.

  • 정렬과정
  1. 리스트 중 최소값을 검색
  2. 그 값을 맨 앞의 값과 교체
  3. 나머지 리스트에서 위의 과정을 반복
  • 해결방법
  1. 알고리즘 진행과정 그려보기
  2. 의사코드(Psuedo code) 작성
  3. 실제 코드 작성
def selection_sort(list1):
    for i in range(len(list1)):
        minimum = list1[i]
        print('target index', i)
        for j in range(i,len(list1)):
            if j+1 == len(list1):
                continue
            elif minimum >= list1[j+1]:
                minimum = list1[j+1]
                min_index = j+1
                print('minimum now', minimum)
        list1[min_index], list1[i] = list1[i], list1[min_index]
        min_index = i+1
        print(list1)
    return list1

list1 = [9,1,6,8,4,3,2,0,5,7]
print(selection_sort(list1))

Comments