ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 35 - 범위와 반복문
    study with Q - 파이썬 2024. 4. 15. 19:27

    #범위
    : 특정한 범위 내부의 정수들을 나열하는 자료형
    : range()함수를 이용해서 만듦

    : 매개변수에 숫자 1,2,3개를 넣어서 사용

    • 매개변수에 숫자 1개를 넣는 방법 range(A)
      • 0부터 A까지의 정수를 범위로 나열
      • A는 포함하지 않는다
    • 매개변수에 숫자 2개를 넣는 방법 range(A, B)
      • A부터 B까지의 정수를 범위로 나열
      • B는 포함하지 않는다
    • 매개변수에 숫자 3개를 넣는 방법 range(A, B, C)
      • A부터 B까지의 정수를 범위로 나열
      • B는 포함하지 않는다
      • C만큼 건너뛰면서 범위를 생성

    예시)

    • 매개변수에 숫자 1개
    range(5)
    print(list(range(5)))
    >>> [0, 1, 2, 3, 4]
    • 매개변수에 숫자 2개
    print(list(range(10,20)))
    >>> [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

     범위를 변수에 넣지 않아도 바로 출력될 수 있구만

     

    • 매개변수에 숫자 3개
    print(list(range(0,20,2)))
    >>> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

     

    어 이거... 사용하면...

    더보기
    #범위를 이용하여 50보다 작은 3의 배수, 40보다 작은 4의 배수, 100보다 작은 17의 배수를 구할 수도 있겠군. 
    
    thr = list(range(0,50,3))
    thr.remove(0)
    print(thr)
    
    fo = list(range(0,40,4))
    fo.pop(0)
    print(fo)
    
    svt = list(range(0,100,17))
    del svt[0]
    print(svt)
    
    >>>
    [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]
    [4, 8, 12, 16, 20, 24, 28, 32, 36]
    [17, 34, 51, 68, 85]

     

    #반복문과 같이 사용하기

    for i in range(8):
      print(f"{i}번째입니다.")
    >>> 
    0번째입니다.
    1번째입니다.
    2번째입니다.
    3번째입니다.
    4번째입니다.
    5번째입니다.
    6번째입니다.
    7번째입니다.

     

    #범위 강조하기

    : 위의 코드에서도 range 안에 8을 넣었는데 7번째까지 나오는 것처럼 범위를 강조하기 위해 코드를 이렇게 +1로 작성하기도 합니다

    for i in range(7+1):
      print(f"{i}번째입니다.")
    >>> 
    0번째입니다.
    1번째입니다.
    2번째입니다.
    3번째입니다.
    4번째입니다.
    5번째입니다.
    6번째입니다.
    7번째입니다.

     

    추가적으로... 

    더보기

    *매개변수로 나누기 연산자를 사용한 경우 오류가 발생함. range 함수의 매개변수로는 반드시 정수를 입력해야하기 때문에

    n = 10
    a = list(range(0, n/2))
    print(a)
    >>> 
    Traceback (most recent call last):
      File "./prog.py", line 3, in <module>
    TypeError: 'float' object cannot be interpreted as an integer

     

    ** 그래서 정수 나누기 연산자를 사용함.  (int() 함수로 바꾸는 것보다 정수 나누기 연산자를 더 많이 사용!)

    n = 10
    a = list(range(0, n//2))
    print(a)
    >>> [0, 1, 2, 3, 4]

     

    #범위로 반복문 구분

    • 특정 횟수 만큼 반복할 때 : 매개변수 1개를 사용
      for i in range(n)  
        print("문자열")
      >>>  "문자열의 내용을 n번 반복해서 출력
    for i in range(3):
      print("독도는 국제법적으로도 대한민국의 고유 영토입니다.")
    >>>
    독도는 국제법적으로도 대한민국의 고유 영토입니다.
    독도는 국제법적으로도 대한민국의 고유 영토입니다.
    독도는 국제법적으로도 대한민국의 고유 영토입니다.

     

    • 반복  변수를 사용하는 경우 :  매개변수 2개를 사용
    for i in range(3, 5+1):
      print(f"{i}번째입니다.")
    >>> 3번째입니다.
    4번째입니다.
    5번째입니다.

     

    ※ 뒤의 range(A, B)에서 A≥B 일 경우, 오류가 발생하지 않고 그냥 아무 값도 출력되지 않는다..!

    • 반대로 반복하는 경우 : 매개변수 3개를 사용해도 되긴 한데, reversed()함수를 조합하는 경우가 많아서 거의 안쓰임
    for i in range(3, 0-1, -1):
      print(f"{i}번째입니다.")
    >>> 3번째입니다.
    2번째입니다.
    1번째입니다.
    0번째입니다.

    강조를 사용해서 3부터 0까지 -1씩 반복하는 코드

     

    #반복 변수 _(underscore)

    파이썬에서는 _를 식별자로 쓸 수 있기 때문에 이렇게 사용하기도 함. 과거의 파이썬은 반복문에서 반복 변수를 사용하지 않을 경우 _를 식별자로 쓰는 것을 추천했기 때문에 이런 코드가 나올 수 있음

    for _ in range(7):
      print("테스트입니다.")
    >>> 테스트입니다.
    테스트입니다.
    테스트입니다.
    테스트입니다.
    테스트입니다.
    테스트입니다.
    테스트입니다.
Designed by Tistory.