ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1부터 100까지 중복없이 숫자를 뽑아보자.
    코딩공부/예시로 살펴보는 파이썬 2020. 4. 5. 16:24

    학교에서 중복없이 학생들을 뽑을 일이 생각보다 많다. 발표하기 싫어하는 고학년에게 어쩔 수 없이 누군가에게 발표를 맡겨야하거나, 학생 자리를 바꾸거나, 당번을 뽑을 때도 많이 활용할 수 있다.

     

    뭐든지 활용하기 나름이고 변형하기 나름이겠지만, 가장 기본적인 기능부터 살펴보도록 하자.

     

     

    1. 랜덤으로 숫자를 뽑아보자.

    중복과 관련없이 숫자를 뽑을 때 활용할 수 있는 코드이다.

    1
    2
    3
    4
    5
    import random                # 파이썬 내장 모듈 임포트
     
    = random.randint(1,100)   # 1부터 100까지의 정수 중 랜덤으로 하나 뽑는다.
     
    print(a)
     
     

    범위를 지정하는 range함수와는 약간 다른데, 

    range(1,100)은 1부터 99까지, random.randint(1,100)은 1부터 100까지라는 것에 유의하자.

     

     

    2. 랜덤으로 숫자를 여러번 뽑아보자.

    for 반복문을 활용하면 된다. 참 쉽죠? 

    1
    2
    3
    4
    5
    import random                    # 파이썬 내장 모듈 임포트
     
    for i in range(10):                # 10번 뽑는다
        a = random.randint(1,100)   # 1부터 100까지의 정수 중 랜덤으로 하나 뽑는다.
        print(a)
     
     

     

    3. 랜덤으로 뽑은 숫자를 한번에 살펴보자.

    랜덤으로 나온 a를 그때마다 프린트하지 않고, 리스트에 넣어 한번에 프린트하면 되겠다.

    1
    2
    3
    4
    5
    6
    import random                             # 파이썬 내장 모듈 임포트
    alist=[]                                  # 빈 리스트를 생성한다.
    for i in range(10):                    # 10번 뽑는다
        a = random.randint(1,100)   # 1부터 100까지의 정수 중 랜덤으로 하나 뽑는다.
       alist.append(a) # 리스트 끝에 a를 추가한다.
    print(alist)
     

     

    4. 중복없이 숫자를 뽑고싶다.

    중복없이 숫자를 뽑아보자. 리스트에 있는지 비교해서 있으면 다시 뽑고, 없으면 뽑고 리스트에 추가하면 되겠다.

     

      4.1. 기본 코드 작성

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import random
     
    alist=[]                          # 뽑은 a를 넣어 중복 방지해주는 리스트         
    for i in range(10):
      a = random.randint(1,100)       
      while a in alist :              # a가 이미 뽑은 리스트에 있을 때까지 다시 뽑자
        a = random.randint(1,100)
    alist.append(a) # 새로운 a 값을 리스트에 추가
     
    print(alist)
     

     

      4.2. 함수로 만들어보자.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import random
     
    def random_int_no_again():
        al_list=[]                          # 뽑은 a를 넣어 중복 방지해주는 리스트         
        for i in range(100):
            a = random.randint(1,100)       
            while a in al_list :
                a = random.randint(1,100)al_list.append(a)
    al_list.append(a)
            print (a)
        return al_list
     
     
    random_int_no_again()
     

     

     

      4.3. 재귀함수로 구현해보자

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    import random
     
    al_list=[]
     
    def recursive_random_int_no_again(count):   
        if count == 0:                            #카운트가 0이 되면 작동 종료
            print(al_list)
            return
        a = random.randint(1,100
        while a in al_list :
             a = random.randint(1,100)
    al_list.append(a)
        print(a)
        count-=1                                # 카운트를 -1하고, 함수를 다시 호출한다.
        recursive_random_int_no_again(count)
     
    recursive_random_int_no_again(100)
     

     

      4.4. random 모듈에서 제공하는 기본 기능을 활용하자.

    random.sample를 활용하면 중복없이 원하는 수만큼 뽑아낼 수 있다. 코드도 간결하고 오류가 날 가능성이 가장 낮기 때문에 이 방법이 가장 좋다고 할 수 있겠다.

    1
    2
    3
    4
    import random
     
    = random.sample(range(1,101),10# 1부터 100까지의 범위중에 10개를 중복없이 뽑겠다.
    print(a)
     
     

     

    다음 포스팅은 실제 교실에서 활용할 수 있도록 코드를 짜보겠다.

Designed by Tistory.