[내일배움캠프] 파이썬 문법 기초(3) - 조건문, 반복문

재명·2021년 12월 14일
0

Python

목록 보기
3/8

1-6 조건문

#기본구조 if / elif / else

if money > 3800:
    print('택시를 타자!')
elif money > 1200:
    print('버스를 타자!')
else:
    print('걸어가자!')

1) 사실 if/elif/else는 굉장히 직관적 형태를 가지고 있기 때문에 딱히 어려운 부분은 없으나, 들여쓰기(indentation)의 유무에 따라 메서드의 적용 범위를 결정하는데 영향을 주기때문에(Python 종특) 반드시 주의해야 한다!

2)조건문의 기본 실행조건은 (bool 타입 기준) 해당 구문이 True 값을 가질때이다.

간단한 예)

if 'Python':
    print('참')
else:
    print('거짓')
    
>>> 참


if '':   #빈 문자열인 경우
    print('참')
else:
    print('거짓')
    
>>> 거짓

추후에 이를 활용해 다양한 조건부 응용이 가능하므로 꼭 알아두도록 하자

1-7 반복문

#기본구조: for 변수 in (모집단 or 범위(range))

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    name = person['name']
    age = person['age']
    if age > 20:
        print(name, age)
        
>>>
carry 38
ben 27
bobby 57
red 32
queen 25

step.1) 변수 people에 각 인물들의 이름과 나이가 적힌 딕셔너리를 리스트 형태로 저장한다

step.2) people에 저장된 자료들(이름/나이로 구성된 딕셔너리)을 새로운 변수 person이란 형태로 담아 호출하는데 이때 얻어낸 이름정보를 name에, 나이정보를 age라는 변수로 담아 준다. (마지막 queen씨의 정보를 담아서 호출할 때까지 반복)

step.3) 반복문을 돌며 호출된 person들 중 age가 20 초과인 경우에만 이름과 나이정보를 print 해준다

#enumerate & break

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for i, person in people:
    name = person['name']
    age = person['age']
    print(i, name, age)
    if i > 3:
    	break
             
>>>
0 bob 20
1 carry 38
2 john 7
3 smith 17
4 ben 27

#enumerate는 반복문을 사용할 때 반환되는 리스트의 원소에 순서값을 부여해주는 메서드이다

#위 코드에서는 순서값 부여와 동시에, 자료의 출력 이후 i > 3일경우 반복문을 종료하게끔 지시하였으므로 4번 ben씨의 정보까지만 출력하게 된다

#만약 조건문이 print문보다 더 상위에 위치했다면 3번 smith씨의 정보까지 출력하고 반복문이 종료되었을 것이다

1-8 반복문-연습문제

1. 리스트내의 자료들 중 짝수만 출력하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

1-1) 자료값들이 일정한 간격과 규칙성을 띄는 경우라면 슬라이싱 혹은 in range()에서 간격을 지정하여 해결할 수도 있겠지만, 위와같이 불규칙한 형태를 띄는 경우에는 '짝수'를 선별할 수 있는 조건을 달아줘야 한다

1-2) 대표적인 방법은 2로 나누었을 때 나머지가 0이 되도록 하면 됨

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

for num in num_list:
    if num % 2 == 0:
        print(num)
        
>>>
2
6
2
4
6
2
4

EZ

2. 리스트에서 짝수의 갯수 출력하기

2-1) 리스트 내에서 짝수를 가져올 때마다 별도의 변수에 count를 1씩 증가시켜 최종 결과값을 찾는 방법이 있다(해설 영상에서 나온 방법)

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

count = 0
for num in num_list:
    if num % 2 == 0:
        count += 1
        
print(count)

>>> 7

#위와 같은 방법이 사실 제일 먼저 떠오르기도 하고 유용한 방법이나 한가지 더 추가해 보자면

2-2) 리스트 내에서 짝수를 가져올 때마다 새로운 리스트에 집어넣고, 새 리스트의 길이를 출력하는 방법

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
even_list = []

for num in num_list:
    if num % 2 == 0:
        even_list.append(num)

print(len(even_list))

>>> 7

#선별된 짝수들을 단순히 갯수만 체크하는 것이 아니라, 이를 활용해 추가적인 작업을 해야하는 경우 두 번째 방법이 더 유용해질 수도 있다.

#다만 새로운 리스트 변수를 선언하는 만큼 메모리 부분에서 불필요한 자원을 소모한다고 볼 수도 있기 때문에 상황에 맞춰서 방법을 결정하는 것이 중요하다

**사실 윗 예시 정도로는 티도 안나는 수준이겠지만 리스트의 크기가 훨씬 방대해진다던가 다중 반복문 사용 여부, 추가 작업등이 겹쳐질 수록 그 차이는 상당히 벌어지게 된다

profile
개발자가 되고싶은 늦깎이 코린이

0개의 댓글