ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1.10. Control Structures
    번역/Problem Solving with Algorithms and Data 2017. 10. 8. 21:16
    반응형

    이 문서는 영문으로된 내용을 구글 번역기를 활용하여 번역한 내용입니다. 
    개인적인 공부 및 추후 다시 볼 수 있도록 하기 위해 개인 블로그에 번역 내용을 옮겨 놓았습니다.
    원문과 내용이 다를시 책임지지 않으며, 저작권 문제가 발생시 언제든 삭제 될 수 있습니다. 


    Problem Solving with Algorithms and Data Structures using Python by Bradley N. Miller, David L. Ranum is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License


    이전에 언급했듯이 알고리즘에는 반복과 선택의 두 가지 중요한 제어 구조가 필요합니다. 이 두 가지 모두 Python에서 다양한 형태로 지원됩니다. 프로그래머는 주어진 상황에 가장 유용한 문장을 선택할 수 있습니다.

    반복을 위해 Python은 표준 while 문 및 매우 강력한 for 문을 제공합니다. while 문은 조건이 true 인 동안 코드 본문을 반복합니다. 예를 들어,
    >>> counter = 1
    >>> while counter <= 5:
    ...     print("Hello, world")
    ...     counter = counter + 1


    Hello, world
    Hello, world
    Hello, world
    Hello, world
    Hello, world
    "Hello, world"라는 문구를 5 번 인쇄합니다. while 문에 대한 조건은 각 반복이 시작될 때 평가됩니다. 조건이 True이면 명령문 본문이 실행됩니다. 언어가 강제하는 들여 쓰기 패턴 때문에 Python while 구문을 쉽게 볼 수 있습니다.
    while 문은 매우 일반적인 목적의 반복 구조이며, 우리는 여러 가지 다른 알고리즘에서 사용할 것입니다. 대부분의 경우 복합 조건이 반복을 제어합니다. 조각 같은
    while counter <= 10 and not done:
    ...

    조건의 두 부분이 모두 만족되는 경우에만 명령문 본문이 실행됩니다. 변수 counter의 값은 10보다 작거나 같아야하고 변수 done의 값은 False (not False is True) 여야 True and True 라서 결과가 True가됩니다.
    이 유형의 구조는 매우 다양한 상황에서 유용하지만 다른 반복 구조 인 for 문은 많은 Python 콜렉션과 함께 사용할 수 있습니다. for 문은 컬렉션이 시퀀스 인 동안 컬렉션의 멤버를 반복하는 데 사용할 수 있습니다. 예를 들어,
    >>> for item in [1,3,6,2,5]:
    ...    print(item)
    ...
    1
    3
    6
    2
    5

    변수 item항목을 목록 [1,3,6,2,5]의 각 연속 값으로 지정합니다. 그런 다음 반복 본문이 실행됩니다. 이 작업은 시퀀스 (목록, 튜플 및 문자열) 인 모든 컬렉션에서 작동합니다.
    for 문은 일반적으로 값 범위에 대해 명확한 반복을 구현하는 데 사용됩니다. 
    >>> for item in range(5):
    ...    print(item**2)
    ...
    0
    1
    4
    9
    16
    >>>

    다섯 번 print 기능을 수행합니다. range 함수는 시퀀스 0,1,2,3,4를 나타내는 범위 객체를 반환하며 각 값은 변수 item에 할당됩니다. 이 값은 제곱되고 인쇄됩니다.
    이 반복 구조의 다른 매우 유용한 버전은 문자열의 각 문자를 처리하는 데 사용됩니다. 다음 코드 조각은 문자열 목록을 반복하며 각 문자열은 각 문자를 목록에 추가하여 처리합니다. 결과는 모든 단어의 모든 문자 목록입니다.
    선택 문을 사용하면 프로그래머가 질문을하고 그 결과에 따라 다른 작업을 수행 할 수 있습니다. 대부분의 프로그래밍 언어는 유용한 구문 인 ifelseif의 두 가지 버전을 제공합니다. 이진 선택의 간단한 예제는 ifelse 문을 사용합니다.
    if n<0:
       print("Sorry, value is negative")
    else:
       print(math.sqrt(n))

    이 예제에서는 n이 참조하는 객체가 0보다 작은 지 확인합니다. 그럴 경우 음수라는 메시지가 인쇄됩니다. 그렇지 않은 경우 문은 else 절을 수행하고 제곱근을 계산합니다.
    선택 구조는 컨트롤 구조와 마찬가지로 중첩 될 수 있으므로 한 질문의 결과가 다음 질문의 여부를 결정하는 데 도움이됩니다. 예를 들어 score는 컴퓨터 과학 테스트 점수를 나타내는 변수라고 가정합니다.
    if score >= 90:
       print('A')
    else:
       if score >=80:
          print('B')
       else:
          if score >= 70:
             print('C')
          else:
             if score >= 60:
                print('D')
             else:
                print('F')

    이 단편은 획득 한 문자 등급을 인쇄하여 score라는 값을 분류합니다. 점수가 90보다 크거나 같으면 명령문에 A가 인쇄됩니다. 그렇지 않으면(else) 다음 질문이 표시됩니다. 점수가 80보다 크거나 같으면 첫 번째 질문에 대한 대답이 거짓이므로 80에서 89 사이 여야합니다. 이 경우 인쇄 B가 인쇄됩니다. 파이썬 들여 쓰기 패턴은 추가적인 구문 요소를 필요로하지 않고 ifelse 사이의 연관을 이해하는 데 도움이 된다는 것을 알 수 있습니다.
    이 유형의 중첩 선택 항목에 대한 대체 구문은 elif 키워드를 사용합니다. elseif는 결합되어 추가 중첩 수준이 필요 없습니다. 다른 모든 조건이 실패하면 마지막 else는 여전히 기본 대소 문자를 제공하는 데 필요합니다.
    if score >= 90:
       print('A')
    elif score >=80:
       print('B')
    elif score >= 70:
       print('C')
    elif score >= 60:
       print('D')
    else:
       print('F')

    파이썬에는 단 하나의 선택 구조 인 if 문도 있습니다. 이 명령문을 사용하여 조건이 참이면 조치가 수행됩니다. 조건이 false 인 경우 처리는 if 다음의 명령문으로 계속 진행됩니다. 예를 들어, 다음 조각은 먼저 변수 n의 값이 음수인지 확인합니다. 그럴 경우 절대 값 함수로 수정됩니다. 그럼에도 불구하고 다음 동작은 제곱근을 계산하는 것입니다.
    if n<0:
       n = abs(n)
    print(math.sqrt(n))

    목록으로 돌아가서 목록 작성(list comprehension)으로 알려진 반복 및 선택 구조를 사용하는 목록을 만드는 대체 방법이 있습니다. 목록 작성을 통해 일부 처리 또는 선택 기준에 따라 목록을 쉽게 작성할 수 있습니다. 예를 들어 처음 10 개의 완벽한 사각형 목록을 만들려면 for 문을 사용할 수 있습니다.
    >>> sqlist=[]
    >>> for x in range(1,11):
             sqlist.append(x*x)

    >>> sqlist
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    >>>

    목록 작성을 사용하여 한 단계에서 다음과 같이 할 수 있습니다.
    >>> sqlist=[x*x for x in range(1,11)]
    >>> sqlist
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    >>>

    변수 x는 for 구문에 지정된대로 1에서 10까지의 값을 취합니다. 그런 다음 x*x의 값이 계산되어 생성되는 목록에 추가됩니다. 목록 작성을 위한 일반 구문은 특정 항목 만 추가되도록 선택 기준을 추가 할 수도 있습니다. 예를 들어,
    >>> sqlist=[x*x for x in range(1,11) if x%2 != 0]
    >>> sqlist
    [1, 9, 25, 49, 81]
    >>>

    이 목록 작성은 1에서 10까지의 홀수 숫자의 제곱만을 포함하는 목록을 구성했습니다. 반복을 지원하는 모든 시퀀스를 목록 작성을 사용하여 새 목록을 작성할 수 있습니다.
    >>>[ch.upper() for ch in 'comprehension' if ch not in 'aeiou']
    ['C', 'M', 'P', 'R', 'H', 'N', 'S', 'N']
    >>>



    반응형

    '번역 > Problem Solving with Algorithms and Data' 카테고리의 다른 글

    1.12. Defining Functions  (0) 2017.10.08
    1.11. Exception Handling  (0) 2017.10.08
    1.9. Input and Output  (0) 2017.10.08
    1.8. Getting Started with Data  (0) 2017.10.08
    1.7. Review of Basic Python  (0) 2017.10.08
Designed by Tistory.