Loops (for & while)

19594 단어 TILpythonTIL

Loops (for & while)


Loop의 필요성

단순히 list 내에 있는 element를 출력하고자 할 때, 기존에 배웠던 내용으로는 효율적으로 코드를 작성하기 어렵다

아래 예시와 같이 가능은 하지만.. 만약 2억개의 element를 출력하려면 매우 힘든 작업이 될 것이다

squad = ['Leno', 'Tierny', 'Partey', 'Saka', 'Rowe', 'Pepe']

print(squad[0])
print(squad[1])
print(squad[2])
print(squad[3])
print(squad[4])
print(squad[5])

# Output: Leno
# Output: Tierny
# Output: Partey
# Output: Saka
# Output: Rowe
# Output: Pepe

For Loops: Introduction

for

for 루프를 통해 특정 객체의 원소에 하나씩 차례로 접근할 수 있다

for <temporary variable> in <collection>:
  <action>

1) for → for loop 실행을 위한 문구

2) <temporary variable> → 현재 for loop가 실행중인 객체에 설정하는 임시 변수

3) in<temporary variable><collection> 분리 목적

4) <collection> → loop over을 위한 리스트, 튜플, 문자열 등

5) <action> → loop의 원소들에 취하는 행위

squad = ['Leno', 'Tierny', 'Partey', 'Saka', 'Rowe', 'Pepe']

for arsenal_player in squad:
    print(arsenal_player)

# Output: Leno
# Output: Tierny
# Output: Partey
# Output: Saka
# Output: Rowe
# Output: Pepe

Loop Control: Break

break

파이썬의 반복문(for문 또는 while문)에서 빠져나오고자할 때 사용하는 키워드 (무한루프 방지용)

squad = ['Leno', 'Tierny', 'Partey', 'Saka', 'Rowe', 'Pepe']

print('Let me find the player you are looking for')

for player in squad:
    if player == 'Saka':
        print('He\'s in the training camp now!')
        break

# Output: Let me find the player you are looking for
# Output: He's in the training camp now!

# break 존재 → 실행 O, Saka 발견 이후 실행 중지
# break 삭제 → 실행 O, Saka 발견 이후 뒤에 있는 Rowe, Pepe까지 탐색 

Loop Control: Continue

continue

다음 loop로 넘어가고자할 때 사용

# continue가 있을 때

number_list = [1, -5, 8, -2, 11, -25]

for number in number_list:
    if number < 0:
        print(number)
        continue
    print('plus')

# Output: plus
# Output: -5
# Output: plus
# Output: -2
# Output: plus
# Output: -25

# 변수 number이 음수일때 변수를 출력하고, continue가 있기에 다음 loop로 넘어감
# 여기선 다음 loop가 없으므로, number이 음수일때에는 'plus' 출력을 안함
# continue가 없을 때

number_list = [1, -5, 8, -2, 11, -25]

for number in number_list:
    if number < 0:
        print(number)
    print('plus')

# Output: plus
# Output: -5
# Output: plus
# Output: plus
# Output: -2
# Output: plus
# Output: plus
# Output: -25
# Output: plus

# 변수 number가 음수일때 변수를 출력하고, continue가 없기에 바로 'plus' 출력

For Loops: Using Range

for i in range(first_value, end_value, step)

forrange()를 이용하여 정수 범위를 표현하고, 범위의 갯수만큼 출력 가능

<temporary variable> 자체를 출력할 수도 있고,
<temporary variable>를 임시변수로 두고 미리 설정해둔 변수를 이용할 수도 있다.

range에서 step을 활용하여 elements 간의 간격을 정할 수도 있다

step은 음수로 지정하여 거꾸로도 정할 수 있다

# step > 0 일 때

def for_loops():
    my_list = []
    for i in range(1, 10, 2):
      my_list.append(i)

    return my_list
 
 
 # Output
 [1, 3, 5, 7, 9]

 
  
 # step < 0 일 때
 
 def list_for_loops():
    my_list = []
    for i in range(9, 0, -2):
      my_list.append(i)
    
    return my_list
    
    
 # Output
 [9, 7, 5, 3, 1]

아래와 같은 예시들 도 있다

for n in range(3):
    print(n)

# Output: 0
# Output: 1
# Output: 2

# 임시변수 n을 정수범위 0~2까지 설정
for back_number in range(5):
    print("Today, Number " + str(back_number + 1) + " will play.")

# Output: Today, Number 1 will play.
# Output: Today, Number 2 will play.
# Output: Today, Number 3 will play.
# Output: Today, Number 4 will play.
# Output: Today, Number 5 will play.

# 임시변수 back_number을 정수범위 0~4까지 설정
comment = "Play hard!"

for temp in range(3):
    print(comment)

# Output: Play hard!
# Output: Play hard!
# Output: Play hard!

While Loops: Introduction

while

특정 조건 하에 만족하는 동안만 실행하고자 하는 경우에 사용

while <conditional statement>:
  <action>

1) while → while loop 실행을 위한 문구

2) <conditional statement> → 사용하고자 하는 조건

3) <action> → loop의 원소들에 취하는 행위

아래 예시를 보면,

number = 0
while number <= 3:
    print('You can play today, number ' + str(number + 1) + '.')
    number += 1
print('Sorry we are full now')

# Output: You can play today, number 1.
# Output: You can play today, number 2.
# Output: You can play today, number 3.
# Output: You can play today, number 4.
# Output: Sorry we are full now

1) 0에서 시작

2) number이 3 이하면 조건 실행 (첫번째 문구 출력)

3) number += 1 (이후 number이 1씩 증가후 while문 재실행)

4) while문 실행이 종료되면 두번째 문구 출력





Take Away

아직 갈길이 먼 듯 한 while

while 문이 대강 어떤 식으로 돌아가는지 이해는 된다.
하지만 나에게 있어 매우 직관적인 for문에 비하여 while문은 아직 머릿속에서 구동되는 logic이 정확하지는 않다.
가능한 많이 써보며 알아봐야할 것 같다..





참고
https://www.w3schools.com/python/python_while_loops.asp

좋은 웹페이지 즐겨찾기