파이썬과 기본문법(2) 제어문


제어문(Control Statement)

  • 파이썬은 기본적으로 위에서부터 아래로 순차적으로 명령을 수행한다.
  • 특정 상황에 따라 코드를 선택적으로 실행(분기/조건)if 하거나 계속 실행(반복)for/while 하는 제어가 필요함
  • 제어문은 순서도(flow chart)로 표현이 가능


조건문

조건문은 참/거짓을 판단할 수 있는 조건식과 함께 사용

📌 기본형식

  • expression에는 참/거짓에 대한 조건식

    • 조건이 참인 경우 등여쓰기 되어있는 코드 블럭을 실행

    • 이외의 경우 else 이후 들여쓰기 되어있는 코드 블럭을 실행

      • else는 선택적으로 활용이 가능

        a = 10
        if a >= 0: # <expression>
          print("양수")
        else:
          print("음수")
        


📌 복수 조건문

복수의 조건식을 활용할 경우 elif를 활용하여 표현함

  • 복수 조건문

    dust = int(input())
    if dust >= 150:
        print("매우 나쁨")
    elif dust <= 150 and dust >= 81:
        print("나쁨")
    elif dust <= 80 and dust >= 31:
        print("보통")
    elif dust <= 30 and dust >= 0:
        print("좋음")  
    


📌 중첩 조건문

조건문은 다른 조건문에 중첩되어 사용할 수 있음

  • 들여쓰기를 유의하여 작성
dust = int(input())
if dust >= 150:
  if dust > 300:
    print('실외 활동을 자제하세요')
	print("매우 나쁨")
elif dust <= 150 and dust >= 81:
    print("나쁨")
elif dust <= 80 and dust >= 31:
    print("보통")
elif dust <= 30 and dust >= 0:
    print("좋음")
else:
    if dust < 0:
        print('음수값 입니다.')
    else:
        print('좋음')


📌 조건 표현식

value = num if num >= 0 else -num
# 참일결우	  # <expression> # 거짓일 경우

# 위 코드는 아래와 같다.
if num >= 0: # <expression>
  value = num # 참일경우
else:
  value = -num # 거짓일 경우


반복문

특정 조건을 도달할 때 까지, 계속 반복되는 문장

  • while
    • 종료 조건에 해당하는 코드를 통해 반복문을 종료시켜야 함
  • for
    • 반복가능한 객체를 모두 순회하면 종료


📌 while

조건식이 참인 경우 반복적으로 코드를 실행

  • 조건이 참인 경우 들여쓰기 되어 있는 코드 블록이 실행된다
  • 코드 블록이 모두 실행되고, 다시 조건식을 검사하며 반복적으로 실행
  • while문은 무한 루프를 하지 않도록 종료조건이 반드시 필요하다
a = 0
while a < 5:
  print(a)
  a += 1
print("끝")


📌 for

for문은 시퀀스(string, tuple, list, range)를 포함한 순회 가능한 객체(iterable) 요소를 모두 순회한다.

  • 처음부터 끝까지 모두 순회하므로 별도의 종료조건이 필요하지 않다.
for <변수명> in <iterable>:
  #code block
  
for fruit in ['apple', 'mango', 'banana']:
  print(fruit)
print('끝')


  • 문자열(string) 순회

    chars = input()
    # hi
      
    for idx in range(len(chars)):
      print(chars[idx])
    # idx를 기준으로 순회를 한다.
    
  • enumerate()

    • 인덱스와 객체를 쌍으로 담은 열거형(enumerate) 객체 반환

      • (index, value) 형태의 tuple로 구성된 열거 객체를 반환

        members = ['민수', '영희', '철수']
              
        for i in range(len(members)):
          print(f'{i} {members[i]}')
                
        for i, member in enumerate(members):
          print(i, member)
                
        enumerate(members)
              
        list(enumerate(members))
        # 리스트로 변환시 [(0, '민수'), (1, '영희'), (2, '철수')]로 인덱스 값과, 해당값을 나타내줌
        list(enumerate(members, start=1))
        # 리스트로 변환시 [(1, '민수'), (2, '영희'), (3, '철수')]
        
  • 딕셔너리 순회

    • 딕셔너리는 기본적으로 key를 순회하며, key를 통해 값을 활용
    grades = {'john':80, 'eric':90}
    for name in grades:
      print(name)
    # john
    # eric
    grades = {'john':80, 'eric':90}
    for name in grades:
      print(name, grades[name])
    # john 80
    # eric 90
    


반복문 제어

  • break
    • 반복문을 종료
  • continue
    • continue 이후의 코드 블록은 수행하지 않고, 다음 반복을 수행
  • for-else
    • 끝까지 반복문을 실행한 이후에 else문 실행
      • break를 통해 중간에 종료되는 경우 else문은 실행되지 않음


📌 break

  • break는 실행 중 만나게 되면 반복문을 종료한다.
n = 0
while True:
  if n == 3:
    break
  print(n)
  n += 1
# 0
# 1
# 2


📌 continue

continue 이후의 코드 블록은 수행하지 않고, 다음 반복을 수행한다.

for i in range(6):
  if i % 2 == 0:
    continue
  print(i)
# 1
# 3
# 5


📌 for-else

for char in 'apple':
  if char == 'b':
    print('b!')
    break
else:
  print('b가 없습니다.')
# b가 없습니다.
  • 끝까지 반복문을 실행한 이후에 else문 실행

  • break를 통해 중간에 종료되는 경우 else문은 실행되지 않음


관심있을 포스팅