파이썬의 while 루프. 작동 방식, 사용 예

루프는 모든 언어의 주요 도구 중 하나입니다. Python에는 두 개의 기본 루프가 있으며 그 중 하나는 while입니다. 그것을 고려하고 그림의 더 나은 이해를 위해 하나 더. 사실 비슷한 것에 비하면 어떤 자료든 이해하기가 훨씬 쉽죠?

사이클의 개념

특정 작업을 여러 번 수행해야 하는 경우 루프가 필요합니다. 이것은 실제로 사이클에 대한 적용 범위가 훨씬 더 넓기 때문에 매우 간단합니다. 파이썬에는 두 가지 주요 유형의 루프가 있습니다: for 및 while. 가장 인기가 있습니다.

특정 작업 외에도 특정 지점까지 다양한 코드 조각을 반복할 수 있습니다. 이것은 특정 횟수 또는 특정 조건이 참인 한 가능합니다.

루프의 유형과 특히 while의 유형을 이해하기 전에 반복이 무엇인지 이해해야 합니다. 이것은 현재 응용 프로그램 실행 내에서 현재 주기 동안 작업 또는 일련의 작업을 한 번 반복하는 것입니다.

주기

For 루프는 다른 많은 언어에서와 같이 카운터가 아닙니다. 그 임무는 값의 특정 시퀀스를 열거하는 것입니다. 이것은 무엇을 의미 하는가? 요소 목록이 있다고 가정해 보겠습니다. 첫째, 루프는 첫 번째, 두 번째, 세 번째 등을 취합니다.

Python에서 이 루프의 장점은 루프를 종료할 때를 알기 위해 요소의 인덱스를 결정할 필요가 없다는 것입니다. 모든 것이 자동으로 수행됩니다.

>>> 스피속 = [10, 40, 20, 30]

>>> spisok의 요소:

... 인쇄(요소 + 2)

...

12

42

22

32

이 예에서는 변수를 사용했습니다. 요소 for 명령 후. 일반적으로 이름은 무엇이든 될 수 있습니다. 예를 들어 널리 사용되는 명칭은 i입니다. 그리고 각 반복에서 이 변수는 목록의 특정 개체에 할당되며 이를 적절한 단어라고 합니다.

우리의 경우 목록은 10,40,20,30의 숫자 시퀀스입니다. 각 반복에서 해당 값이 변수에 나타납니다. 예를 들어 루프가 시작되자마자 변수 요소 값 10이 할당됩니다. 다음 반복에서 40은 숫자 20으로 바뀌고 세 번째로 숫자 30으로 바뀌고 마지막으로 루프의 마지막 반복에서 XNUMX으로 바뀝니다.

주기의 끝 신호는 목록에 있는 요소의 끝입니다.

다른 프로그래밍 언어에서와 같이 값의 고전적인 열거를 수행하기 위해 루프가 필요한 경우 필요한 값까지 일련의 자연수를 사용하여 목록을 만들어야 합니다.

>>> 스피속 = [1,2,3,4,5]

또는 기능을 사용 렌(), 목록의 길이를 결정합니다. 그러나 이 경우 루프를 사용하는 것이 좋습니다. 동안, 변수를 사용할 필요가 없기 때문입니다.

목록에서 값의 순서를 변경해야 하는 경우 루프 for 그리고 여기에서 구출됩니다. 이렇게 하려면 각 반복에서 목록의 각 요소에 적절한 값을 할당해야 합니다.

While 루프

주기와 달리 for , 단순히 시퀀스의 값을 반복하는 루프 동안 더 많은 용도가 있습니다. 이 유형의 주기 이름은 "아직"으로 번역됩니다. 즉 "~까지"입니다.

이것은 모든 프로그래밍 언어에서 볼 수 있는 범용 루프입니다. 그리고 어떤 면에서는 조건부 연산자와 비슷합니다. 이봐, 특정 조건이 충족되는지 확인하는 검사를 수행합니다. 조건 연산자와 달리, 동안 한 번이 아니라 각 반복마다 검사를 수행합니다. 그리고 조건이 거짓인 경우에만 루프가 종료되고 루프를 따르는 명령이 실행됩니다. 간단히 말해서 그가 일하는 상황이 더 이상 유효하지 않은 경우.

주기를 그리면 동안 간단히 말해서, 이것은 그러한 계획을 사용하여 수행됩니다.파이썬의 while 루프. 작동 방식, 사용 예

루프 외부에서 실행되는 프로그램의 주요 분기는 이 그림에서 파란색 직사각형으로 표시됩니다. 청록색은 주기의 몸체를 나타냅니다. 결과적으로 마름모는 각 반복에서 확인되는 조건입니다.

주기 동안 두 가지 예외가 발생할 수 있습니다.

  1. 루프 시작 부분에서 논리식이 true를 반환하지 않으면 실행 전에 완료되어 시작되지 않습니다. 일반적으로 이 상황은 정상입니다. 특정 상황에서 응용 프로그램이 루프 본문에 표현식을 제공하지 않을 수 있기 때문입니다.
  2. 표현식이 항상 참이면 루프가 발생할 수 있습니다. 즉, 사이클의 끝없는 스크롤링입니다. 따라서 이러한 프로그램에는 항상 루프 또는 프로그램의 종료 문이 있어야 합니다. 그러나 프로그램이 특정 조건의 참 또는 거짓을 결정할 수 있는 경우 이러한 상황이 발생합니다. 그녀가 이것을 하지 못하면 프로그램이 종료되면서 오류가 반환됩니다. 또는 오류를 처리한 다음 오류가 발생하면 특정 코드가 실행됩니다.

오류를 처리하는 방법에 대한 많은 옵션이 있을 수 있습니다. 예를 들어, 프로그램은 사용자에게 데이터를 올바르게 입력하도록 요청할 수 있습니다. 따라서 사람이 양수만 가능한 곳에 음수를 표시하거나 숫자만 있어야 하는 곳에 문자를 입력한 경우 프로그램에서 이에 대해 알 수 있습니다.

while 루프 예제

다음은 이 경우 오류를 처리하는 코드의 예입니다.

n = input("정수를 입력하세요: ") 

동안 유형(n) != 정수:

    시도 :

        n = 정수(n)

    ValueError 제외 :

        print("잘못 입력했습니다!")

        n = input("정수를 입력하세요: ") 

n % 2 == 0인 경우:

    print("짝수")

그밖에:

    print("홀수")

파이썬은 복잡한 코드 구조를 선언하기 위해 콜론을 사용한다는 것을 명심하십시오.

위의 코드에서는 숫자가 정수인지 확인해야 하는 조건으로 정의했습니다. 그렇다면 false가 반환됩니다. 그렇지 않다면 사실입니다.

연산자가 사용되는 코드의 두 번째 부분에서 if, 나누기 연산 후 나머지를 찾기 위해 % 연산자를 사용했습니다. 다음 단계는 숫자가 짝수인지 확인하는 것입니다. 그렇지 않은 경우 나머지는 이 경우 XNUMX입니다. 따라서 숫자는 홀수입니다. 

간단히 말해서 위의 코드는 먼저 사용자가 입력한 문자열이 숫자인지 확인합니다. 그렇다면 XNUMX로 나눈 나머지가 있는지 확인하기 위해 두 번째 검사가 수행됩니다. 그러나 두 번째 블록은 사용자가 입력한 값이 숫자가 될 때까지 실행되지 않습니다.

즉, 조건이 발생할 때까지 루프가 정기적으로 실행됩니다. 이 상황에서는 이렇게 작동합니다. 

즉, 반대에서 갈 수 있습니다. 이벤트가 거짓이 될 때까지 특정 동작을 반복합니다.

코드 파싱

이제 이 코드가 어떻게 작동하는지 자세히 살펴보겠습니다. 이를 위해 단계별로 분석합니다.

  1. 먼저 사용자는 변수 n에 의해 허용되는 문자열을 입력합니다. 
  2. 루프 사용 동안 이 변수의 유형이 확인됩니다. 첫 번째 항목에서 동일하지 않습니다. INT. 따라서 테스트 결과 이 ​​조건이 참임을 알 수 있습니다. 따라서 루프 본문이 입력됩니다.
  3. 운영자의 도움으로 시도 문자열을 숫자로 변환하려고 합니다. 이렇게 하면 오류가 발생하지 않습니다. 따라서 처리할 필요가 없습니다. 따라서 인터프리터는 루프의 시작 부분으로 돌아가며 검사 결과에 따라 정수가 된 것으로 나타납니다. 그럼 7단계로 가볼까요?
  4. 변환에 실패하면 ValueError가 발생합니다. 이 경우 프로그램 흐름은 예외 처리기로 전송됩니다.
  5. 사용자는 변수 n에 할당된 새 값을 입력합니다.
  6. 인터프리터는 2단계로 돌아가서 다시 확인합니다. 정수 값이면 7단계로 이동하고, 그렇지 않으면 3단계에 따라 다시 변환을 시도합니다.
  7. 운영자의 도움으로 if 숫자를 2로 나눈 후 나머지가 있는지 확인합니다. 
  8. 그렇지 않은 경우 텍스트 "짝수"가 반환됩니다.
  9. 그렇지 않은 경우 텍스트 "홀수"가 반환됩니다.

이제 그러한 예를 고려하십시오. 이 주기가 몇 번이나 지나갈지 결정하려고 하시겠습니까?

총 = 100 

I = 0

i < 5인 동안:

    n = 정수(입력())

    총 = 총 - n

    난 = 난 1을 + 

print("나머지", 합계)

정답은 5입니다. 처음에는 변수의 값이 i - 영. 인터프리터는 변수가 동일한지 확인합니다. i 4 이하. 그렇다면 값이 반환됩니다. 참된, 루프가 그에 따라 실행됩니다. 값이 XNUMX 증가합니다.

첫 번째 반복 후 변수의 값은 1이 됩니다. 검사가 수행되고 프로그램은 이 숫자가 다시 5보다 작다는 것을 이해합니다. 따라서 루프 본문이 두 번째로 실행됩니다. 단계가 유사하므로 값도 2씩 증가하고 변수는 이제 XNUMX와 같습니다.

이 값도 XNUMX보다 작습니다. 그런 다음 루프가 세 번째로 실행되어 변수에 추가됩니다. i 1이고 값 3이 할당됩니다. 이것은 다시 XNUMX보다 작습니다. 그래서 그것은 루프의 여섯 번째 반복에 이르게 되는데, 여기서 변수의 값은 i 5와 같습니다(결국, 우리가 기억하는 한 원래 XNUMX이었습니다). 따라서 이 조건은 테스트를 통과하지 못하고 루프는 자동으로 종료되고 외부에 있는 다음 단계로의 전환(또는 다음 단계가 제공되지 않는 경우 프로그램 종료)이 수행됩니다.

사이클은 반대 방향으로도 발생할 수 있습니다. 다음은 각 후속 반복에서 변수의 현재 값에서 하나를 빼는 코드의 예입니다. 

총 = 100 

총 > 0인 동안:

    n = 정수(입력())

    총 = 총 - n 

print("자원 소진")

이 프로그램이 무엇을 하는지 추측해 보세요! 변수에 있다고 상상해보십시오. 합계 프로그램 리소스에 대한 정보가 저장됩니다. 인터프리터가 리소스가 있는지 확인할 때마다. 그렇지 않은 경우 "리소스 소진"이라는 텍스트가 표시되고 프로그램이 닫힙니다. 루프가 반복될 때마다 리소스는 사용자가 지정한 수만큼 감소합니다.

그리고 이제 숙제. 변수가 물리적으로 음수가 되지 않도록 위의 코드를 변경해 보십시오. 

댓글 4

  1. si 코드 ahaan usoo gudbi

댓글을 남겨주세요.