에이블스쿨 6기 DX 트랙/일일 복습

DAY 04. 제어문

d061120 2024. 9. 11. 23:50

7. 제어문

  • 조건 처리반복 처리를 통해 코드의 실행 흐름을 제어할 수 있음
  • Python 제어문은 들여쓰기로 블럭을 지정하니 이에 필히 주의

7.1. if 문

  • 특정 조건에 맞는 경우에만 코드를 실행하고 싶을 때 사용

1) 단순 if 문

  • 조건이 참인 경우만 처리
  • 조건이 거짓인 경우는 아무 처리도 하지 않음
# 리스트 만들기
score_list = [75, 80, 70, 95, 90]

# 리스트에 요소가 있으면 출력, 없으면 말고
if len(score_list) > 0:  # 요소의 유무 여부는 리스트의 길이인 len() 메서드를 활용하는 것이 간편하다.
    print(score_list)
---
# 출력
# [75, 80, 70, 95, 90]

 

2) if ~ else 문

  • 조건이 참인 경우와 참이 아닌 경우를 각각 처리함
# 리스트 만들기
score_list = [75, 80, 70, 95, 90]

# 리스트에 요소가 있으면 출력, 없으면 '요소 없음' 출력
if score_list:
    print(score_list)
else:
    print('요소 없음')
---
# 출력
# [75, 80, 70, 95, 90]

 

  • 처리할 구문이 없거나 이후에 작성할 목적으로 pass를 사용할 수 있음
# 리스트 만들기
score_list = [75, 80, 70, 95, 90]

# 우선 pass
if score_list:
    pass   # 따로 출력은 안하지만 문제가 없음을 의미.
else:
    print('요소 없음')
---
# 출력
#

 

  • input() 함수 사용
    • input() 함수로 받는 것은 무조건 문자열임을 기억할 것
    • 상황에 따라 정수로 변환해줄 필요도 있음
# 사용자가 입력한 값이 80 이상이면 '합격' 아니면 '불합격' 출력
# 입력 받기
my_score = input('점수를 입력하세요:')

# 정수로 변환(input() 함수를 통해 받은 값은 무조건 문자열임)
my_score = int(my_score)   # str --> int

# 입력값 및 자료형식 확인
print('점수 =', my_score)
print(type(my_score))   # input() 함수로 받는 것은 무조건 문자열임을 기억해야한다!!!

# 조건처리
if my_score >= 80:
    print('합격')
else:
    print('불합격')
---
# 출력
# 점수를 입력하세요: 90
# 점수 = 90
# <class 'int'>
# 합격

 

3) if ~ elif ~ else 문

  • 여러 조건 중에서 참인 경우 각각 처리, 그렇지 않은 경우를 처리함
# 변수 선언
my_score = 76

# 점수에 따른 학점 주기
if my_score >= 90:
    my_grade = 'A'
elif my_score >= 80:
    my_grade = 'B'
elif my_score >= 70:
    my_grade = 'C'
elif my_score >= 60:
    my_grade = 'D'
else:
    my_grade = 'F'

# 결과 출력
print(my_grade)
---
# 출력
# C

 

7.2. for 문

  • 주로 반복 횟수를 지정해서 반복문을 돌리고자 할 때 사용하는 구문
# 문자열의 문자 줄력
for i in 'PYTHON':
    print(i, end=' ')
---
# 출력
# P Y T H O N
# 리스트 만들기
fruits = ['apple', 'banana', 'cherry']

# 리스트 요소 출력
for i in fruits:
    print(i)
---
# 출력
# apple
# banana
# cherry
# 0부터 20까지의 숫자 중 짝수만 뽑아서 새로운 리스트 만들기
nums = range(0, 21)   # 0 ~ 20
new_nums = []
for x in nums:
    if x % 2 == 0:
        new_nums.append(x)

# 확인
print(new_nums)
---
# 출력
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

 

7.3. 리스트와 for 문

1) 기본 반복문

  • 첫 번째 요소부터 마지막 요소까지를 대상으로 코드를 반복 처리
# 리스트 만들기
member = ['홍길동', '한사랑', '일지매', '박여인', '강우동']
n = 0
# 루프 돌면서 이름 출력
for name in member:
    n += 1
    print(f'{n}: {name}')
---
# 출력
# 1: 홍길동
# 2: 한사랑
# 3: 일지매
# 4: 박여인
# 5: 강우동

 

2) enumerate() 함수 사용

  • enumerate: 낱낱이 세다
  • 문자열이나 컨테이너 자료형을 입력받아, 순번과 요소를 포함하는 오브젝트로 반환
  • 순번과 요소를 반환하여 몇 번째, 어느 요소를 처리하고 있는지 확인 가능하게 함
# 순번이 짝수인 경우만 '순번: 이름' 형태로 출력
member = ['홍길동', '한사랑', '일지매', '박여인', '강우동']

for i, name in enumerate(member):
    if i % 2 == 0:
        print(f'{i}: {name}')
---
# 출력
# 0: 홍길동
# 2: 일지매
# 4: 강우동

 

3) 반복문 확장

  • 반복문 코드를 간결하게 만들어주는 Python 스러운 문법
# 리스트 만들기
nums = [0, 1, 2, 3, 4]

# 빈 리스트 만들기
squares = []

# 2를 곱한 결과를 squares 리스트에 추가
for x in nums:
    squares.append(x ** 2)

# 확인
print(squares)
---
# 출력
# [0, 1, 4, 9, 16]

↓ 위 코드를 아래처럼 바꿀 수 있다.

# 리스트 만들기
nums = [0, 1, 2, 3, 4]

# 반복문 확장 문법 #1
squares = [x ** 2 for x in nums]

# 확인
print(squares)
---
# 출력
# [0, 1, 4, 9, 16]

 

  • 쉬운 이해법
    • 기존 반복문: for 문 안에 if 문, if 문 안에 구할 값
    • 확장 반복문: 구할 값 + for 문 + if 문 순으로 나열하면 됨
# 리스트 만들기
nums = [0, 1, 2, 3, 4]

# 반복문 확장 문법 #2
# 반복문 + 조건문: 짝수인 값의 제곱을 구해서 even_squares 리스트에 넣기
even_squares = [x ** 2 for x in nums if x % 2 == 0]

# 확인
print(even_squares)
---
# 출력
# [0, 4, 16]

 

7.4. 딕셔너리와 for 문

1) 기본 반복문

# 딕셔너리 만들기
score = {'홍길동': 85, '한사랑': 95, '일지매': 90}

# key와 value 조회
for key in score:
    value = score[key]
    print('{}: {}'.format(key, value))
    # print(f'{key}: {value}')
---
# 출력
# 홍길동: 85
# 한사랑: 95
# 일지매: 90

 

2) items() 메서드 사용

  • items() 메서드는 key와 value를 함께 반환해주므로 딕셔너리 반복문에서 많이 사용함

 

# 딕셔너리 만들기
score = {'홍길동': 85, '한사랑': 95, '일지매': 90}

# items() 메서드 사용
for key, value in score.items():
    print('{}: {}'.format(key, value))
---
# 출력
# 홍길동: 85
# 한사랑: 95
# 일지매: 90

 

3) 반복문 확장

# 딕셔너리 만들기
score = {'홍길동': 85, '한사랑': 95, '일지매': 90}

# 확장 문법 - 반복문 + 제어문
score_over_90 = {k: v for k, v in score.items() if v > 90}

# 확인
print(score_over_90)
---
# 출력
# {'한사랑': 95}

 

7.5. 집합과 for 문

  • 리스트와 같은 방법으로 사용
  • enumerate() 함수도 같은 방법으로 사용 가능

 

7.6. while 문

  • 조건문이 True인 동안 while문 안의 문장이 반복해서 실행
  • 특정 상황에서 반복을 중지하도록 while 문 안에서 조건을 제어

1) 일반 while 문

  • 문자열 길이를 반환하는 len() 함수가 리스트의 요소 개수를 반환
# 리스트 만들기
fruits = ['apple', 'banana', 'cherry']

# 요소 출력
i = 0
while i < len(fruits):
    print(fruits[i])
    i += 1
---
# 출력
# apple
# banana
# cherry

 

2) 무한루프 다루기

  • break 문: 반복문 안에서 특정 조건이 되어 반복문을 빠져 나올 때 사용
  • continue 문: 반복문을 중단시키지 않고 다음 반복으로 넘어갈 때 사용(생략 가능)
# 변수 선언
tot, i = 0, 0

# 100까지 짝수 합 구하기
while True:
    i += 1
    if i > 100:
        break

    if i % 2 == 0:
        tot += i
    else:          # 생략해도 되는 부분
        continue   # 생략해도 되는 부분

# 확인
print(tot)
---
# 출력
# 2550

'에이블스쿨 6기 DX 트랙 > 일일 복습' 카테고리의 다른 글

DAY 07. 넘파이 기초  (1) 2024.09.18
DAY 05. 함수  (1) 2024.09.12
DAY 03. 딕셔너리 자료형  (3) 2024.09.06
DAY 03. 집합 자료형  (0) 2024.09.06
DAY 03. 튜플 자료형  (0) 2024.09.06