[Python] 조건문if, 반복문for
조건문 if : 특정 조건을 만족했을 때 특정 코드 실행
* 파이썬에서 들여쓰기의 중요성: 파이썬에서는 어디까지 구문에 포함되는지를 들여쓰기로 구분하기 때문에 아주 중요하다.
money = 5000
if money > 3800:
print("택시 타자!") #print앞에 들여쓰기가 없는 경우 에러가 뜸
else와 elif : 조건을 만족하지 않을 때의 다른 코드를 실행
age = 27
if age < 20:
print("청소년입니다.") #20세 미만일 경우 청소년
elif age < 65:
print("성인입니다.") #위 조건을 성립하지 않고 65세 미만일때는 성인
else:
print("무료로 이용하세요!") #두가지 조건을 모두 성립하지 않는다면 무료
반복문 for : 특정 구간을 반복하여 출력하고 싶을 때 사용
예시) fruits = ['사과', '배', '감', '귤'] 이라는 리스트가 있을 때
fruits = ['사과', '배', '감', '귤']
print(fruits)
실행 결과:
['사과', '배', '감', '귤']
fruits = ['사과', '배', '감', '귤']
for fruit in fruits: #fruits 리스트 안에 데이터 들을 fruit라는 변수로 지정
print(fruit)
실행 결과:
사과
배
감
귤
[실습] 사람의 이름과 나이 출력하기
표시형식: bob 20
carry 38
john 17
...
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: #person이라는 반복문 변수 지정
name = person['name'] #name변수에 반복문 속 이름을 지정
age = person['age'] #age변수에 반복문 속 나이를 지정
print(name, age)
이 리스트에서 나이가 20보다 큰 사람만 출력
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:
if person['age'] > 20:
print(person['name'])
enumerate함수 : 반복 가능한 객체를 인자로 받아서 해당 객체의 요소들을 순회하면서, 각 요소의 인덱스와 값을 순서쌍으로 반환
예를 들어 people 리스트 값과 함께 인덱스를 함께 출력하고 싶을 경우
*인덱스 : 시퀀스 객체의 각 요소는 순서가 정해져 있으며, 이 순서를 인덱스라고 한다. 인덱스는 0부터 시작한다.
(리스트의 경우 {'name': 'bob', 'age': 20} = 0번, {'name': 'carry', 'age': 38} = 1번, {'name': 'john', 'age': 7} = 2번 인덱스가 됨.
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
]
i = 0
for person in people:
print (i,person)
i += 1
#결과 값
0 {'name': 'bob', 'age': 20}
1 {'name': 'carry', 'age': 38}
2 {'name': 'john', 'age': 7}
참고 블로그 : https://www.daleseo.com/python-enumerate/
하지만 enumerate함수를 이용하면 인덱스 값을 바로 출력할 수 있다.
enumerate는 기본적으로 인덱스와 원소로 이루어진 튜플(tuple)을 만들어준다.
for i in enumerate(['a','b','c']):
print(i)
#결과값
(0, 'a')
(1, 'b')
(2, 'c')
만약 인덱스와 원소를 각각 다른 변수에 할당하고 싶다면 인자 풀기(unpacking)를 실행해줘야 한다.
for i, alph in enumerate(['a','b','c']): # 인덱스는 i, 원소는 alph라는 변수로 지정해줌
print(i, alph)
#결과값
0 a
1 b
2 c
이름 리스트에 적용하면
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
]
for i in enumerate(people) : #people리스트를 순회하며 인덱스 i의 값을 출력
print(i)
#결과 값
#(0, {'name': 'bob', 'age': 20})
#(1, {'name': 'carry', 'age': 38})
#(2, {'name': 'john', 'age': 7})
#인덱스 i 안에 인덱스 값과 원소가 세트로 들어가있기 때문에 i만 프린트 해도 (인덱스, 인덱스에 해당하는 원소 값)이 출력된다.
인자풀기 실행 후
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
]
for i, person in enumerate(people) : #변수 person으로 people의 원소를 지정
name = person['name']
age = person['age']
print(i, name, age)
#결과값
0 bob 20
1 carry 38
2 john 7
위에서부터 4번째까지만 출력
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 enumerate(people):
name = person['name']
age = person['age']
print(i,name,age)
if i > 2:
break
#결과 값
0 bob 20
1 carry 38
2 john 7
3 smith 17
[실습1] 리스트에서 짝수만 출력하는 함수 만들기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
for even in num_list:
if even % 2 == 0:
print(even)
[실습2] 짝수의 개수를 출력하기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
count = 0
for even in num_list:
if even % 2 == 0:
count += 1
print(count)
[실습3] 리스트 안에 있는 모든 숫자 더하기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
add = 0
for even in num_list:
add = add + even
print(add)
[실습4]리스트 안에 있는 자연수 중 가장 큰 숫자 구하기
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
max = 0
for even in num_list:
if max < even :
max = even # '='는 할당 연산자 즉 max는 even과 같다.
print(max)
*'=' 와 '=='의 차이
'='는 할당 연산자로 우항에 있는 피연산자를 좌항의 피연산자에 할당한다. 주로 변수로 설정할 때 많이 쓰인다.
예시) max = even 일 때,
even = 3 이면 max = 3
'==' 는 비교 연산자로 두 객체의 값이 같은지 비교하고 같으면 True, 다르면 False를 출력한다.
예시) max == even
max = 1, even = 3 일 때, 두 객체는 같지 않으므로
'False'