[3일차] 제어문 (if_for_while)

2022. 12. 21. 16:21데이터 엔지니어링 과정/python

목차
1. 조건에 따라 분기하는 if문
2. 지정된 범위만큼 반복하는 for 문
3. 조건에 따라 반복하는 while 문
4. 반복문을 제어하는 breakcontinue
5. 조건문을 포함한 리스트 컴프리헨션

1. 조건에 따라 분기하는 if문 (분기점이 존재할 때 사용)

1. if 단일 조건에 따른 분기

x = 95
if x>=90:
    print("Pass")
    
>>> Pass

👂🏻파이썬은 콜론(:)과 들여 쓰기로 코드의 구조를 결정한다.

    스페이스 바 또는 탭(Tab)으로 조절

 

2. if ~ else 단일 조건 및 그 외 조건에 따른 분기

x = 75
if x >= 90:
    print("Pass")
else:
    print("Fail")
    
>>> Fail

3. if ~ elif ~ else 여러 조건에 따른 분기

  • elif문을 보면 두 가지 방식으로 표현이 가능하다.
x = 85
if x >=90:
    print("Very good")
elif (x >= 80) and (x < 90):
    print("Good")
else:
    print("Bad")
    
>>> Good
x = 85
if x >=90:
    print("Very good")
elif 80 <= x < 90: #허용됨
    print("Good")
else:
    print("Bad")
    
>>> Good

4. 중첩 조건에 따른 분기

x = 100
if x >=90:
    if x==100:
        print("Perfect")
    else:
        print("Very good")
elif (x >= 80) and (x < 90):
    print("Good")
else:
    print("Bad")
    
>>> Perfect

📍만약 x=200이라면 출력값은?

   ➡ Very good 

👂🏻나중에 구현하고 싶은 코드라면 PASS 활용

x = 75
if x >= 80:
    pass
else:
    print("Bad")
    
>>> Bad

 

2. 지정된 범위만큼 반복하는 for 문 (범위를 정하고 실행하고 싶을 때 사용)

1. 반복문의 필요성

a = 0 #변수 a를 0으로 초기화
print(a) #변수 a 출력

a = a + 1 #변수 a에 1을 더한 후, 다시 a에 대입
print(a) #변수 a 출력

a = a + 1 #같은 코드 반복
print(a) 

a = a + 1 #같은 코드 반복
print(a) 

a = a + 1 #같은 코드 반복
print(a) 

a = a + 1 #같은 코드 반복
print(a) 

>>> 0
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5

이건 에바잖아.. 그래서 for문을 사용할겁니다.

 

2. for문의 구조

3. 반복 범위 지정

  • 리스트 이용
for a in [0, 1, 2, 3, 4, 5]:
    print(a)
    
>>> 0
>>> 1
>>> 2
>>> 3
>>> 4
>>> 5
myFriends = ['James', 'Robert', 'Lisa', 'Mary'] #리스트를 변수에 할당
for myFriend in myFriends:
    print(myFriend)
    
>>> James
>>> Robert
>>> Lisa
>>> Mary
  • range() 함수 이용
    • range(start, stop, step)
    • 리스트 형태로 출력해야 한다.
    • 반복문에 활용한다면 start부터 stop-1까지 step 씩 증가하는 값들을 가진 리스트를 만든다.
      이때, for문에서는 리스트를 설정하지 않아도 된다.
    • 생략도 가능하다.
      • stop은 생략 불가능 
    • 양수가 아니더라도 가능하다.
print(list(range(0, 20, 5)))    #LIne 1
print(list(range(-10, 0, 2)))   #Line 2
print(list(range(3, -10, -3)))  #Line 3
print(list(range(0, -5, 1)))    #Line 4

>>> [0, 5, 10, 15]
>>> [-10, -8, -6, -4, -2]
>>> [3, 0, -3, -6, -9]
>>> []

 

4. 중첩 for 문

x_list = ['x1', 'x2']
y_list = ['y1', 'y2']

print(" x  y")

for x in x_list:
    for y in y_list:
        print(x,y)
        
>>>  x  y
>>> x1 y1
>>> x1 y2
>>> x2 y1
>>> x2 y2

5. 여러 개의 리스트 다루기

#여러 개의 리스트 정의
names = ['James', 'Robert', 'Lisa', 'Mary']
score = [95, 96, 97, 94]
  • len 활용
    len 리스트의 길이를 알아낸다.
for k in range(len(names)): 
    print(names[k], scores[k])
    
>>> James 95
>>> Robert 96
>>> Lisa 97
>>> Mary 94

for k in range ((len(names))

for k in range (4)

  • zip 활용
    zip 같은 순서의 데이터끼리 묶어준다.
for name, score in zip(names, scores):
    print(name, score)
    
>>> James 95
>>> Robert 96
>>> Lisa 97
>>> Mary 94

 

3. 조건에 따라 반복하는 while 문 (특정 조건을 만족하지 않을 때까지 돌리고 싶을 때 사용)

1. while 문의 구조

i = 0     
sum = 0    

print("i  sum")
while sum<20:     
    i = i + 1     
    sum = sum + i  
    print(i, sum)
    
>>> i  sum
>>> 1 1
>>> 2 3
>>> 3 6
>>> 4 10
>>> 5 15
>>> 6 21

2. 무한 반복 while 문

while True:
	print('while Test')

 

4. 반복문을 제어하는 break와 continue

1. break 반복문을 빠져나온다.

k=0
while True:
    k = k + 1   # k는 1씩 증가
    
    if (k > 3): # k가 3보다 크면
        break   # break로 while 문을 빠져나옴
        
    print(k)    # k 출력
    
>>> 1
>>> 2
>>> 3
for k in range(10):
    if (k>2):    #k가 2보다 크면
        break    #break로 for문을 빠져나옴
        
    print(k)      #k 출력
    
>>> 0
>>> 1
>>> 2

2. continue 다음 반복을 실행한다.

for k in range(5):
    if (k == 2):
        continue
        
    print(k)
    
>>> 0
>>> 1
>>> 3
>>> 4
k=0
while True:
    k = k + 1
    
    if (k == 2):
        print("continue next")
        continue
    if (k > 4):
        break
        
    print(k)
    
>>> 1
>>> continue next
>>> 3
>>> 4

5. 조건문을 포함한 리스트 컴프리헨션

1. 컴프리헨션 (comprehension)의 기본 구조

  • 리스트 컴프리헨션
    • [<반복실행문> for <반복변수> in <반복변수>]

쉽게 이해하자면, 기존에는

numbers = [1, 2, 3, 4, 5]
square = []

for i in numbers:
    square.append(i**2)
    
print(square)

>>> [1, 4, 9, 16, 25]

이렇게 구하던 것을

numbers = [1, 2, 3, 4, 5]
square = [i**2 for i in numbers]

print(square)

>>> [1, 4, 9, 16, 25]

이렇게 구할 수 있다. 

👨🏻‍💻강사님 曰: 쉽게 구할 수 있어서 좋지만, 추천하지는 않아요! 이 방식에 익숙해진다면, 다른 언어를 배울 때 어려움을 겪을 수도 있습니다.

2. 조건문을 포함한 리스트 컴프리헨션

  • [<반복실행문> for <반복변수> in <반복범위> if <조건문>]

기존에는

numbers = [1, 2, 3, 4, 5]
square = []

for i in numbers:
    if i >= 3:
        square.append(i**2)
        
print(square)

>>> [9, 16, 25]

이랬던 코드를

numbers = [1, 2, 3, 4, 5]
square = [i**2 for i in numbers if i >=3]

print(square)

>>> [9, 16, 25]

이렇게 간단하게 구할 수 있다.

 

🍯코딩문제 풀기 좋은 사이트 추천

'데이터 엔지니어링 과정 > python' 카테고리의 다른 글

[6일차] 객체와 클래스  (0) 2022.12.27
[5일차] 함수  (0) 2022.12.26
[4일차] 입력과 출력  (2) 2022.12.22
[2일차] 변수와 자료형  (0) 2022.12.20
[1일차] 파이썬 계산  (0) 2022.12.19