Python

[Python] 조건문if, 반복문for

dydatablog 2024. 11. 21. 17:20
728x90

조건문 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'

728x90