데이터 꿈나무

[학술 동아리 DAL / Python] 시작 수부터 마지막 수까지의 모든 홀수 출력하기(사용자 정의 함수 def) 본문

Activity/학술 동아리 DAL

[학술 동아리 DAL / Python] 시작 수부터 마지막 수까지의 모든 홀수 출력하기(사용자 정의 함수 def)

ye_ju 2022. 9. 18. 18:53

안녕하세요~! 저번 포스팅에서는 '합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램'을 만들어보는 시간을 가졌었는데요~ 이번 포스팅도 학술동아리 DAL에서 푼 문제를 공유해드리려고 해요~ 

 

저번 포스팅이 궁금하신 분들은 아래 링크 클릭해주세요!

https://risingdata.tistory.com/3

 

[학술 동아리 DAL / Python] 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램(for문, if문, rang

안녕하세요~! 이번에 포스팅할 글은 학교 학술동아리 'DAL'에서 python 문제를 푼 것을 공유해드리려고 해요~ 바로 시작할게요! 문제 : 1, 2, 3, ...을 순서대로 계속 더해 합을 만드는데, 그 합이 입력

risingdata.tistory.com

 

 


문제 : 시작 수(a)와 마지막 수(b)가 입력되면 a부터 b까지의 모든 홀수를 출력하시오.
(단, 반복문 for, while, goto 등을 이용하여 풀 수 없습니다.)

문제

int(input())
# 시작 수와 마지막 수 입력받기
a = int(input("시작 수를 입력하세요:"))
b = int(input("마지막 수를 입력하세요:"))

input 함수를 이용하여 시작 수(a)와 마지막 수(b)를 입력받습니다.

저번 포스팅과 마찬가지로  저희는 정수를 입력받기 위해 int로 감싸주겠습니다. 

그리고 시작 수는 변수 a에 넣어주고 마지막 수는 변수 b에 넣어주었습니다. 

 

def 함수

※ def 함수란?

보통 프로그래밍을 하다보면 똑같은 내용을 반복적으로 작업해야 하는 경우가 많습니다. 

예를 들어, 덧셈 연산을 계속해야 하는 경우에 그때마다 덧셈 연산을 해야 하는 불필요한 작업이 되는 것이죠.

그래서 따로 함수를 만들어서 기능을 만든 다음 필요할 때마다 호출해서 사용하는 것입니다. 

이 사용자 정의 함수를 만들기 위해 필요한 것이 바로 def  입니다. 

 

우선 arr = [ ]을 하여, 결과 값을 넣을 빈 리스트를 하나 생성하였습니다. 

그 후 시작 수와 마지막 수까지의 모든 홀수를 출력하기 위해 def를 이용하여 num_arr이라는 사용자 정의 함수를 만들어 주었습니다. 

여기에서 매개변수는 a, b이고 함수에 입력으로 전달된 값을 받는 변수를 의미합니다.

 

사실 문제를 보면 당연히 시작 수(a)가 마지막 수(b)보다 더 작아서  if a <= b: 는 생략해도 되는 코드인데 더 확실하게 하기 위해 넣었습니다. 만약 시작 수가 마지막 수보다 크게 입력을 하고 아래 코드를 실행하면 빈 리스트가 나오겠죠?

 

append()

※ append() 함수란?

append는 덧붙인다는 뜻으로 괄호( ) 안에 값을 입력하면 새로운 요소를 array 맨 끝에 객체로 추가합니다. 

 

그리고 arr.append(a)를 하여 a에 1을 더해가면서 해당하는 조건에 맞는 값만 리스트 arr에 저장합니다.

마지막으로 print(*arr, sep = '  ')을 하여 arr을 공백 한칸으로 띄우면서 결과를 출력합니다.

arr = []

def num_arr(a, b):
    if a <= b:   # 만약(if) a가 b보다 작거나 같다면, 
        if a % 2 != 0:  # 만약 a를 2로 나누었을 때 0과 같지 않다면(홀수라면)
            arr.append(a)  # arr에 a를 이어 붙여줘라
        a += 1   # 그리고 a에 1을 더해라
        num_arr(a, b)
num_arr(a, b)
print(*arr, sep = ' ')

 

전체 코드
# 시작 수와 마지막 수 입력받기
a = int(input("시작 수를 입력하세요:"))
b = int(input("마지막 수를 입력하세요:"))

arr = []

def num_arr(a, b):
    if a <= b:
        if a % 2 != 0:
            arr.append(a)
        a += 1
        num_arr(a, b)
num_arr(a, b)
print(*arr, sep = ' ')

전체 결과

 

Comments