파이썬 기본 (6) def : 나만의 함수 만들기

    목차
반응형

자연수를 입력받아 그보다 작은 모든 소수와 그 갯수를 출력하는 프로그램

 

code

def chkprime(num):
   for i in range(int(num/2))[1:]:
      if num % (i+1) == 0 :
         return 0
   return 1

while True :
   n = input('1보다 큰 자연수를 입력하세요> ')
   if n == 'done' :
      break
   try :
      n = int(n)
      primelist = []
      for i in range(n)[1:]:
         if chkprime(i+1) == 1 :
            primelist.append(i+1)
      print(str(len(primelist))+'개 : ')
      print(primelist)
   except :
      print('잘못된 입력입니다.')
      continue

 

input/output example

1보다 큰 자연수를 입력하세요> a
잘못된 입력입니다.
1보다 큰 자연수를 입력하세요> 2
1개 : 
[2]
1보다 큰 자연수를 입력하세요> 50
15개 : 
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
1보다 큰 자연수를 입력하세요> 100
25개 : 
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
1보다 큰 자연수를 입력하세요> done

 

 

복습포인트1. def 함수는 이렇게 생겼다.

def function_name(variance):
    ...
    return ...

함수 명을 정하고 그 안에 들어갈 변수를 입력하고 return 뒤에 안에서 구한 값을 입력하면 그 함수에 그 값이 입력되는 형식이다. 변수는 몇 개가 되던 상관없다.

주의할 점은 def 함수는 항상 일반 코드보다 위에 적혀있어야 한다. (호출되기 전에 정의가 되어 있어야 한다.)

 

예를 들어 n! (factorial)을 계산하고 싶다면

def fact(n):
    fact = 1
    for i in range(n):
        fact = fact * (i+1)
    return fact

fact라는 함수에 대해 선언을 한 뒤

>>> fact(5)
120
>>> fact(10)
3628800

값을 입력해야한다.

 

 

복습포인트2. 자잘한 것들

a % b 를 하면 a를 b로 나누었을 때 나머지를 뜻한다.

몫을 구하고 싶다면 (a-a%b)/b 를 하면 된다. 하지만 더 간단하게 int(a/b)를 하면 된다.

둘을 같이 구하고 싶다면 divmod(a,b)를 하면 된다.

 

L을 list라고 했을 때 L[:] 은 L 그 자체와 같다. 즉, : 의 어느 한쪽이 비어있다면 처음부터(또는 끝까지)라는 뜻이다.

728x90
반응형