# 3-1-3-20. While Loops

“For loops” are an example of definite iteration,

meaning that the loop’s body is run a predefined number of times.

A “for loop” over a list,

executes the body once for each element in the list.

A “for loop” using the range function will

execute the number of times specified by the range function.

This differs from indefinite iteration,

which is when a loop repeats an unknown number of

times and ends when some condition is met.

Consider this “while loop” that simulates a blackjack dealer by drawing cards from

a deck list into a hand list stopping when

the value of the cards in the hand is 17 or more.

This example features a new function “sum” and a new list method “pop”.

Sum is pretty intuitive,

it returns the sum of the elements in a list.

Pop is the inverse of the append method,

it removes the last element from a list and returns it.

In this line, we are computing the sum of

the list hand and checking if that is less than or equal to 17.

In this line, we’re popping the last element

from card deck and appending that to the hand list.

Let’s talk about how this “while loop” works.

The while keyword indicates that this is a while loop.

Next is the condition.

In this example, sum hand is less than or equal to 17.

If this condition is true,

the loop’s body will be executed.

Each time the loop’s body runs,

the condition is evaluated again.

This process of checking the condition and then running

the loop repeats until the expression becomes false.

The indented body of the loop should modify at least one variable in the test expression.

If the value of the test expression never changes,

the result is an infinite loop.

In this example, the loop’s body appends numbers to the hand lists,

which increases the value of sum hand.

Eventually, the value of sum hand becomes large enough that the condition becomes false.

“For 루프”는 명확한 반복의 예입니다.

루프의 본문이 미리 정의된 횟수만큼 실행됨을 의미합니다.

목록에 대한 “for 루프”,

목록의 각 요소에 대해 본문을 한 번 실행합니다.

범위 함수를 사용하는 “for 루프”는

range 함수에 의해 지정된 횟수만큼 실행합니다.

이것은 무한 반복과 다릅니다.

이것은 루프가 알 수 없는 횟수를 반복할 때입니다.

어떤 조건이 충족되면 시간이 종료되고 종료됩니다.

다음에서 카드를 뽑아 블랙잭 딜러를 시뮬레이션하는 이 “while 루프”를 고려하십시오.

덱 목록을 핸드 목록으로 전환할 때 중지

손에 있는 카드의 가치가 17 이상입니다.

이 예제는 새로운 함수 “sum”과 새로운 목록 메소드 “pop”을 특징으로 합니다.

합계는 꽤 직관적이고,

목록에 있는 요소의 합계를 반환합니다.

팝은 추가 방법의 반대입니다.

목록에서 마지막 요소를 제거하고 반환합니다.

공식 문서에서 이에 대한 자세한 내용을 읽을 수 있습니다.

이 줄에서 우리는 다음의 합을 계산하고 있습니다.

목록 손과 그것이 17보다 작거나 같은지 확인합니다.

이 줄에서 우리는 마지막 요소를 팝니다.

카드 데크에서 손 목록에 추가합니다.

이 “while 루프”가 어떻게 작동하는지 이야기해 봅시다.

while 키워드는 이것이 while 루프임을 나타냅니다.

다음은 조건입니다.

이 예에서 합계 핸드는 17보다 작거나 같습니다.

이 조건이 참이면,

루프의 본문이 실행됩니다.

루프의 몸체가 실행될 때마다,

조건이 다시 평가됩니다.

이 상태를 확인하고 실행하는 과정

루프는 표현식이 거짓이 될 때까지 반복됩니다.

루프의 들여쓰기된 본문은 테스트 표현식에서 적어도 하나의 변수를 수정해야 합니다.

테스트 표현식의 값이 절대 변경되지 않는 경우,

결과는 무한 루프입니다.

이 예에서 루프의 본문은 손 목록에 숫자를 추가합니다.

합계 손의 가치를 증가시킵니다.

결국 sum hand의 값은 조건이 거짓이 될 정도로 커지게 된다.

# While Loops

For loops are an example of “definite iteration” meaning that the loop’s body is run a predefined number of times. This differs from “indefinite iteration” which is when a loop repeats an unknown number of times and ends when some condition is met, which is what happens in a while loop. Here’s an example of a while loop.

card_deck = [4, 11, 8, 5, 13, 2, 8, 10]
hand = []

# adds the last element of the card_deck list to the hand list
# until the values in hand add up to 17 or more
while sum(hand)  < 17:
hand.append(card_deck.pop())


This example features two new functions. sum returns the sum of the elements in a list, and pop is a list method that removes the last element from a list and returns it.

### Components of a While Loop

1. The first line starts with the while keyword, indicating this is a while loop.
2. Following that is a condition to be checked. In this example, that’s sum(hand) <= 17.
3. The while loop heading always ends with a colon :.
4. Indented after this heading is the body of the while loop. If the condition for the while loop is true, the code lines in the loop’s body will be executed.
5. We then go back to the while heading line, and the condition is evaluated again. This process of checking the condition and then executing the loop repeats until the condition becomes false.
6. When the condition becomes false, we move on to the line following the body of the loop, which will be unindented.

The indented body of the loop should modify at least one variable in the test condition. If the value of the test condition never changes, the result is an infinite loop!