언어 자료구조 알고리즘/프로그래밍 실습

[python] 함수 실습

언제나휴일 2020. 10. 23. 08:56
반응형

함수 제작 과정

단계1: 해야 할 일 분석

단계2: 함수 이름을 결정하시오.

단계3: 입력 인자 개수를 판단하여 입력 매개 변수를 결정하시오.

단계4: 무엇을 반환할 것인지 결정하시오.(없을 수도 있습니다.)

단계5: 함수의 논리 코드를 의사 코드로 작성하시오.

단계6: 함수를 구현하시오. 

단계7: 함수를 호출하여 사용하는 코드를 작성하시오.

 

실습

1. 소수(Prime Number)인지 판별하는 함수를 작성하시오.

사용 예===
정수 입력: 3
소수입니다.
정수 입력: 8
합성수입니다.
정수 입력: 7
소수입니다.
정수 입력: 0
프로그램을 종료합니다.

 

더보기

def IsPrimeNo(num):
    for i in range(2,num): #반복 i in 구간(2~num-1)
        if num%i ==0:#조건 i가 num의 약수라면:
            return False#False 반환
    return True#True 반환

while True:#반복 (무한)
    num = int(input("정수 입력:"))#num = 정수 입력
    if num == 0:#조건 num이 0이면:
        break#반복문 탈출
    if IsPrimeNo(num):#조건 num이 소수일 때
        print("소수입니다.")#소수입니다. 출력
    else:#아닐 때
        print("합성수입니다.")#합성수입니다.출력
print("프로그램을 종료합니다.")#프로그램을 종료합니다. 출력

 


2. 특정 범위에 수를 출력하는 함수를 작성하시오.

 

사용 예===
구간 시작:3
구간 끝:10
3 4 5 6 7 8 9 10
더보기

#2. 특정 범위에 수를 출력하는 함수를 작성하시오.

#사용 예=== 
##구간 시작:3 
##구간 끝:10 
#3 4 5 6 7 8 9 10

#함수명: PrintRange
#입력 인자 개수: 2
#                       start, end

def PrintRagne(start,end):
    for i in range(start,end+1):#반복 start ~end
        print(i,end = ' ')#출력
    print()

start = int(input("구간 시작:"))
end = int(input("구간 끝:"))
PrintRagne(start,end)


3. 특정 범위에 수를 step 간격으로 출력하는 함수를 작성하시오.

 

사용 예===
구간 시작:3
구간 끝:40
step: 5
3 8 13 18 23 28 33 38
더보기
#3. 특정 범위에 수를 step 간격으로 출력하는 함수를 작성하시오.

def PrintRagne(start,end,step=1):
    for i in range(start,end+1,step):#반복 start ~end
        print(i,end = ' ')#출력
    print()

def PrintRagne2(start,end,step=1):
    while(start<=end):#반복 start ~end
        print(start,end = ' ')#출력
        start+=step
    print()

start = int(input("구간 시작:"))
end = int(input("구간 끝:"))
step = int(input("step:"))

PrintRagne(start,end,step)
PrintRagne2(start,end,step)


#PrintRagne(start,end) 3번째 인자를 전달하지 않으면 step은 1로 적용

4. 특정 범위에 소수(Prime Number)의 개수를 구하는 함수를 작성하시오.

 

사용 예===
구간 시작:3
구간 끝:10
3~10사이의 소수는 2개입니다.

 

더보기

#4. 특정 범위에 소수(Prime Number)의 개수를 구하는 함수를 작성하시오.
def IsPrimeNo(num):
    for i in range(2,num): #반복 i in 구간(2~num-1)
        if num%i ==0:#조건 i가 num의 약수라면:
            return False#False 반환
    return True#True 반환


def GetCountPrimeNo(start,end):
    i = start#i는 start로 초기화
    count = 0#count는 0으로 초기화
    while i<=end:#반복 i가 end보다 작거나 같다면
        if IsPrimeNo(i):#조건 i가 소수일 때
            count +=1#count 1 증가
        i+=1#i를 1 증가
    return count# count 반환

def GetCountPrimeNo2(start,end):
    count = 0#count는 0으로 초기화
    for i in range(startf,end+1):#반복 i는 start~ end까지
        if IsPrimeNo(i):#조건 i가 소수일 때
            count +=1#count 1 증가
        i+=1#i를 1 증가
    return count# count 반환

start = int(input("구간 시작:"))
end = int((input("구간 끝:")))
cnt = GetCountPrimeNo(start,end)
print("{0}~{1}사이의 소수는 {2}개 입니다.".format(start,end,cnt))


5. 두 개의 정수의 최대 공약수를 구하는 함수를 작성하시오.

 

사용 예===
첫번째 정수:24
두번째 정수:36
24와 36의 최대공약수는 12입니다.

6. 피보나치 수열의 n번째 항의 값을 구하는 함수를 작성하시오.

   F(1)=F(2)=1

   F(n)=F(n-1)+F(n-2), n>=3인 정수

사용 예===
피보나치 수열
항: 3
2
항: 4
3
항: 0
프로그램을 종료합니다.
반응형