logo
Search검색어를 포함하는 게시물들이 최신순으로 표시됩니다.
    Table of Contents
    [Python] 함수의 기초 - 연습문제 1~10

    이미지 보기

    [Python] 함수의 기초 - 연습문제 1~10

    • 22.01.01 작성

    • 읽는 데 10

    TOC

    참고 강의

    SWEA 파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법 #34 ~ #43


    연습문제 #1

    문제

    다음의 결과와 같이 반목문을 이용해 단어의 순서를 거꾸로 해 반환하는 함수를 작성하고 그 함수를 이용해 회문(앞뒤 어느 쪽에서도 같은 단어, 말) 여부를 판단하는 코드를 작성하십시오.

    입력

    eye
    

    출력

    eye
    입력하신 단어는 회문(Palindrome)입니다.
    

    Sol

    word = input()
    result = ""
    
    for i in word:
        result = i + result
    
    print(result)
    
    if word == result:
        print("입력하신 단어는 회문(Palindrome)입니다.")
    

    제출결과

    image

    연습문제 #2

    다음과 같이 사용자 2명으로부터 가위, 바위, 보를 입력 받아 가위, 바위, 보 규칙이 정의된 함수를 이용해 승패를 결정하는 코드를 작성하십시오.

    문제

    입력

    홍길동
    이순신
    가위
    바위
    

    출력

    바위가 이겼습니다!
    

    Sol

    가위바위보 매커니즘을 하드코딩이 아닌 논리적으로 구현할 수 있는 방법이 없을까 다시 고민해보았지만, 명쾌한 해답은 찾을 수 없었다.

    def 가위바위보(man1, man2):
        if man1 == man2:
            print("비겼습니다!")
        elif man1 == "가위":
            if man2 == "바위":
                print("바위가 이겼습니다!")
            elif man2 == "보":
                print("가위가 이겼습니다!")
        elif man1 == "바위":
            if man2 == "가위":
                print("바위가 이겼습니다!")
            elif man2 == "보":
                print("보가 이겼습니다!")
        elif man1 == "보":
            if man2 == "바위":
                print("보가 이겼습니다!")
            elif man2 == "가위":
                print("가위가 이겼습니다!")
    
    player1 = input()
    player2 = input()
    man1 = input()
    man2 = input()
    
    가위바위보(man1, man2)
    

    제출결과

    image

    연습문제 #3

    문제

    소수를 검사하는 함수를 정의하고, 다음의 결과와 같이 사용자가 입력한 숫자가 소수인지를 판단하는 프로그램을 작성하십시오. 소수일 경우 "소수입니다." 출력, 아닐 경우 "소수가 아닙니다." 출력

    입력

    13
    

    출력

    소수입니다.
    

    Sol

    num = int(input())
    
    def IsPrimeNumber(number):
        cnt = 0
    
        for i in range(1, number + 1):
            if number % i == 0:
                cnt += 1
    
        if cnt == 2:
            print("소수입니다.")
        else:
            print("소수가 아닙니다.")
    
    IsPrimeNumber(num)
    

    논리 자체는 모두 앞선 강의들의 연습문제에서 고안했던 것이다. 이를 함수에 담아 출력하는지의 여부가 이전 연습문제 섹터에서와의 차이이다.

    제출결과

    image

    연습문제 #4

    문제

    다음의 결과와 같이 피보나치 수열의 결과를 생성하는 프로그램을 작성하십시오.

    입력

    10
    

    출력

    [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
    

    Sol

    피보나치 수열은 n[i+2] = n[i] + n[i+1]의 규칙을 따른다. 때문에 초기화한 리스트에 3개의 변수를 이용해 값을 옮겨담으며 진행하면 되겠다.

    a = 1
    b = 0
    c = 0
    iteration = int(input())
    lst = []
    
    for i in range(0, iteration):
        c = a + b
        a = b
        b = c
        lst.append(c)
    
    print(lst)
    

    제출결과

    image

    연습문제 #5

    문제

    리스트의 항목 중 유일한 값으로만 구성된 리스트를 반환하는 함수를 정의하고 이 함수를 이용해 리스트의 중복 항목을 제거하는 프로그램을 작성하십시오.

    출력

    [1, 2, 3, 4, 3, 2, 1]
    [1, 2, 3, 4]
    

    Sol

    lst_result = []
    lst_target = [1, 2, 3, 4, 3, 2, 1]
    
    
    def DuplicationRemove():
        for i in lst_target:
            if not (i in lst_result):
                lst_result.append(i)
    
        print(lst_result)
    
    
    print(lst_target)
    DuplicationRemove()
    

    대상 list(lst_target)에서 원소를 하나씩 뽑아서 출력 리스트(lst_result)에 넣으면 될 것 같다. 이때 최초 lst_result는 초기화하여 빈 리스트로 만들고 조건문을 활용해서 리스트에 원소를 하나씩 넣다가 이미 있는 원소라면 넣는 작업을 하지 않고 넘어가는 것이다.

    제출결과

    image

    연습문제 #6

    문제

    정렬된 숫자를 가진 리스트에서 특정 숫자를 찾는 함수를 정의하고, 이 함수를 이용해 임의의 숫자의 포함 여부를 출력하는 프로그램을 작성하십시오.

    출력

    [2, 4, 6, 8, 10]
    5 => False
    10 => True
    

    Sol

    num1 = 5
    num2 = 10
    lst = [2, 4, 6, 8, 10]
    
    
    def IsInList(num):
        isIn = False
    
        for i in lst:
            if num == i:
                isIn = True
                break
    
        print(str(num) + " => " + str(isIn))
    
    print(lst)
    IsInList(num1)
    IsInList(num2)
    

    제시된 리스트는 lst라는 리스트형 변수에 참조하고, 조사하고 싶은 수를 num1, num2 변수에 넣어 리스트의 각각의 원소들과 대조해본다. isIn 이라는 bool형 변수를 하나 만들었다. 기본값은 False로 두고, 리스트의 각 원소들과 조사하는 수를 계속 대조하다가 일치한다면 isIn 변수를 True로 바꿔주는 것이다.

    for문을 모두 반복한 뒤에는 원하는 양식대로 출력해준다.

    제출결과

    image

    전부터 자꾸 출력에 list를 넣어야 한다는 걸 잊고 코드를 통해 도출한 출력값만 넣어서 어이 없이 fail을 한 번씩 한다. 조심 또 조심하자!


    연습문제 #7

    문제

    다음과 같이 팩토리얼을 구하는 함수를 정의해 입력된 숫자에 대한 팩토리얼 값을 구하는 프로그램을 작성하십시오.

    입력

    5
    

    출력

    120
    

    Sol

    num = int(input())
    
    
    def Factorial(a):
        result = 1
    
        while a >= 1:
            result *= a
            a -= 1
    
        print(result)
    
    
    Factorial(num)
    

    제출결과

    image

    연습문제 #8

    문제

    숫자에 대해 제곱을 구하는 함수를 정의히고, 다음과 같이 숫자를 콤마(,)로 구분해 입력하면 정의한 함수를 이용해 제곱 값을 출력하는 프로그램을 작성하십시오.

    입력

    2, 3
    

    출력

    square(2) => 4
    square(3) => 9
    

    ", " 을 기준으로 잘라내 리스트에 저장하는 .split() 함수를 사용한다.

    Sol

    data = input()
    data_list = data.split(", ")
    
    
    def square(num):
        print("square({0}) => {1}".format(num, num ** 2))
    
    
    for i in data_list:
        i_num = int(i)
        square(i_num)
    

    제출결과

    image

    연습문제 #9

    문제

    인자로 전달된 두 개의 문자열 중 길이가 더 긴 문자열을 출력하는 함수를 정의하고 결과를 출력하는 프로그램을 작성하십시오.

    입력

    one, three
    

    출력

    three
    

    Sol

    data = input()
    data_list = data.split(", ")
    
    
    def LongString(lst):
    
        max_length = 0
        temp = ""
    
        for i in lst:
            if max_length < len(i):
                max_length = len(i)
                temp = i
    
        print(temp)
    
    
    LongString(data_list)
    

    제출결과

    image

    연습문제 #10

    문제

    인자로 전달된 숫자를 이용해 카운트다운하는 함수 countdown을 정의하고, 이 함수를 이용하여 countdown(0), countdown(10)을 순서대로 실행하십시오. 0보다 작거나 같은 인자가 전달되었을 경우 "카운트다운을 하려면 0보다 큰 입력이 필요합니다."를 출력하십시오.

    출력

    카운트다운을 하려면 0보다 큰 입력이 필요합니다.
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    

    Sol

    def countdown(sec):
        if sec <= 0:
            print("카운트다운을 하려면 0보다 큰 입력이 필요합니다.")
        else:
            while sec >= 1:
                print(sec)
                sec -= 1
    
    
    countdown(0)
    countdown(10)
    

    제출결과

    image
    profile

    FE Developer 박승훈

    노력하는 자는 즐기는 자를 이길 수 없다