IT world

[Python] 24.01.09 조건문과 반복문 본문

모두의 연구소(오름캠프)/AI 모델 활용 백엔드 개발 과정

[Python] 24.01.09 조건문과 반복문

엄킹 2024. 1. 10. 17:00

1. 조건문

조건문이란?

주어진 조건이 참(True) 인지 거짓(False) 인지 평가하여 해당 조건이 참인 경우 특정 코드 블록을 실행하는 구조.

0이 아닌 모든 정수 타입은 True로 인식하고 True, False 값을 직접 사용할 수 있다.

0과 ""와 같이 값이 없는 상태는 False이며, " " 처럼 공백도 True로 처리된다. (None은 False)

# if문의 기본 구조
# 조건은 평가되어 참 또는 거짓으로 나뉘고, 조건이 참인 경우 코드를 실행

if 조건:
    # 조건이 참일 때 실행될 코드

[if문 기본 구조 예시]

1.1 if문에 사용할 수 있는 표현식

  • 비교 연산자 
  • 논리 연산자
  • 멤버십 연산자
  • 식별 연산자
  • 다른 함수의 반환 값이나 변수의 값

이전 포스팅에서 연산자 내용을 확인할 수 있다. https://umking.tistory.com/49

 

[Python] 24.01.04 파이썬 연산자와 시퀀스 자료형

1. 연산자 1.1 논리 연산자 and : 두 조건이 모두 참일 때 True, 아니면 False를 반환 or : 두 조건중 하나만 참일 때 True, 아니면 False를 반환 not : 주어진 조건의 반대의 값 반환 not, and, or의 순서대로 우

umking.tistory.com

 

1.2 단축평가

단축평가란?

논리 연산에서 두 번째 인수의 평가가 첫 번째 인수의 결과에 따라 달라지는 방식으로, and 및 or 연산자가 해당 평가를 수행

[단축평가 예시]

1.3 삼항 연산자

if-else 구문을 한 줄로 간단하게 표현할 수 있는 방법을 제공하며, 'x if 조건 else y' 와 같은 형태로 사용된다.

조건이 참이면 x가 평가되고, 거짓이면 y가 평가된다.

 

삼항 연산자는 코드를 간결하게 해주고, 가독성을 향상시키지만 복잡한 조건에서는 권하지 않는다.

 

1.4 조건문과 람다함수(lambda)

# 람다함수와 조건문을 사용
my_function = lambda x: 'Even' if x % 2 == 0 else 'Odd'

 

1.5 조건문과 딕셔너리

딕셔너리 컴프리헨션을 사용하여 조건문 기반으로 딕셔너리 생성 가능.

# 딕셔너리 컴프리헨션을 사용
my_dict = {x: 'Even' if x % 2 == 0 else 'Odd' for x in range(10)}

 

1.6 if - elif - else

두개의 조건만 있을 경우 조건이 거짓이거나 충족되지 않았을때 if-else 활용, 세개 이상의 조건을 사용할 경우 if-elif-else를 사용. elif와 else는 단독으로 사용할 수 없으며 elif는 if가 있어야만, else는 if, elif가 있어야만 사용이 가능하다.

[if/elif/else 기본 구조]
[예시]

 

2. 반복문

2.1 for문 

특정 범위나 순서열(리스트, 문자열 등)을 순회하며 순서열의 끝에 도달하면 반복을 멈춤. 처음부터 끝까지 하나씩 추출하며 순회(시퀀스 자료형 또는 반복 가능한 자료형을 순회)

또한 중첩 for문(반복문 안에 새로운 반복문을 작성)을 사용하여 다양한 코드를 작성할 수 있다.

 

for문은 반복횟수가 정해져 있어 해당 횟수가 될때까지 반복 실행한다.

# for문의 기본 구조

for 변수명 in 순회_가능한_객체 : # 반드시 순회 가능한 객체를 작성
    pass # 수행할_문장

[for문 예시]

2.2 컴프리헨션(comprehension) 

파이썬의 자료구조(list, dictionary, set)에 데이터를 좀 더 쉽고 간결하게 담기 위한 문법.

컴프리헨션 문법은 간결함을 증대시킬뿐 아니라 기존 for문으로 append하는 것보다 속도가 빠르다.

 

2.2.1 리스트 컴프리헨션(list comprehension)

# 리스트 컴프리헨션 생성 방법
c = [i for i in range(1, 10)]
print(c)


# 컴프리헨션 내 조건문 사용
l = [i for i in range(1, 100) if i % 3 == 0 or i % 5 == 0]
print(l)


# 중첩 반복문 사용
c = [f'{i} × {j} = {i*j}' for i in range(2, 10) for j in range(1, 10)]

 

 

2.2.2 딕셔너리 컴프리헨션(dictionary comprehension)

딕서녀리 생성 시 key와 value가 콜론(:)으로 구분되어 위치한다.

# 딕셔너리 컴프리헨션 생성
even_squares = {x: x**2 for x in range(10) if x % 2 == 0} # x = key, x**2 = value

 

2.3 복합 자료형 순회 

반복되는 값이 같은 구조를 가지고 있다면 언패킹하여 한꺼번에 순회 → 언패킹을 이용한 순회

 

 

2.4 enumerate를 사용한 순회 

enumerate는 순서를 매길 때 사용

 

2.5 while문

조건이 참인 동안에 명령을 반복해서 수행. while문은 특정 조건이 만족될때까지 실행된다.

# while문 기본 구조

while 구문:
    pass # 수행할 문장

[while문 예제]

 

2.5 break, continue, pass

  • break : 반복문 즉시 종료
  • continue : 나머지 부분을 실행하지 않고 다음 반복으로 건너가게 흐름을 조정
  • pass : 실행할 코드가 없다는 것을 의미하며 아무런 동작을 하지 않고 다음 코드를 실행
# break 예제

# 이 코드는 0부터 4까지 출력하고, i가 5가 되었을 때 반복문을 종료합니다.
for i in range(10):
    if i == 5: # i가 5라면 정지시켜라
        break  # 반복문을 즉시 종료
    print(i)
    
    
# continue 예제
# 이 코드는 홀수만 출력합니다.
for i in range(10):
    if i % 2 == 0:
        continue   # 다음 반복으로 이동 -> 짝수 일때 반복문 다음 순서로 이동
    print(i)

3. 반복문 else

if 뿐만 아니라 while, for 문에도 else문을 사용할 수 있다. 

여기서 else는 '그렇지 않으면' 이라는 의미 보단 '그런 다음'이라는 의미가 더 강하며, 반복문이 break에 의한 중단 없이 정상적으로 반복이 종료되면 해당 코드를 실행한다.

[for-else 예시]

 

Comments