HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
장지원 페이지/
DGroid
DGroid
/
🐍
Python 초급
/
3️⃣
3주차 (230430)
3️⃣

3주차 (230430)

제어문 : 프로그램의 구조를 쌓는다

조건문 - if문

  • if문의 기본 구조
    • <기본 작동원리>
      위에서부터 코드를 읽으면서,
      조건문 = 참(True)
      → 해당 블록 실행
      조건문 = 거짓(False)
      → 다음 블록의 조건문 체크
      블록이란? (들여쓰기의 중요성)
      notion image
       
      블록 → 콜론(:)을 쓰고 그 다음 들여쓰기 된 부분들을 말한다
      콜론 뒤 들여쓰기를 해야 한 블럭으로 치기 때문에 정확한 들여쓰기를 해줘야한다!
      들여쓰기 ⇒ 스페이스4 또는 탭1
      ~들여쓰기 이해를 돕기위한 예제~
 
  • elif, else
    • [공통점]
      if가 앞에 있어야만 사용가능.
      생략가능(즉, if는 혼자 써도 됨).
      [차이점]
      elif는 안써도, 여러번 써도 됨. (개수 제한 없음)
      else는 조건문이 없고 마지막 한번만 쓸 수 있음.
 
  • 조건문 자리에 들어갈 수 있는 것 → True나 False의 결과가 나올 수 있는 것
    • 비교연산자
      • notion image
        예제
    • and, or, not
      • notion image
        예제
    • in, not in
      • notion image
        예제
       
  • if문 간단히 적기
    • 수행할 문장이 한 줄인 경우 → 콜론 옆에 바로 적기
       
    • 조건부 표현식(conditional expression) [형식] 변수 = 조건문이 참인 경우의 값 if 조건문 else 조건문이 거짓인 경우의 값

반복문 - while문

  • while문의 기본 구조
    • <기본 작동원리>
      조건문이 참인 동안에 while문에 속한 문장들이 반복해서 수행됨
      예제
      treeHit
      조건문
      조건판단
      수행하는 문장
      while문
      0
      0 < 3
      True
      나무를 1번 찍었습니다.
      반복
      1
      1 < 3
      True
      나무를 2번 찍었습니다.
      반복
      2
      2 < 3
      True
      나무를 3번 찍었습니다. 나무 넘어갑니다.
      반복
      3
      3 < 3
      False
      ㅤ
      종료
       
 
  • 무한 루프
    • 무한히 반복한다는 의미.
      while문으로 구현 가능!

반복문 - for문

  • for문의 기본 구조
    • <기본 작동원리>
      리스트(또는 튜플, 문자열)의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 수행할 문장들을 수행한다.
      예제
      test_list의 첫 번째 요소인 ‘one’이 먼저 변수 i에 대입된 후 print(i) 문장을 수행한다. 다음에 두 번째 요소 ‘two’가 변수 i에 대입된 후 print(i) 문장을 수행하고 리스트의 마지막 요소까지 이것을 반복한다.
       
      a 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last) 변수에 대입된다.
       
      5명의 학생이 시험을 보았는데, 점수가 60점 이상이면 합격이고 아니면 불합격이라고 말해주는 프로그램이다.
 
  • range 함수 →진짜 많이 씀 !
    • range(10) → 0, 1, 2, …, 9
      range에 숫자 1개 ⇒ range(끝 숫자) 시작 숫자가 자동으로 0부터~끝 숫자는 포함되지 않음
      range(1, 11) → 1, 2, 3, …, 10
      range에 숫자 2개 ⇒ range(시작 숫자, 끝 숫자) 시작 숫자 포함~끝 숫자는 포함되지 않음
      range(0, 10, 2) → 0, 2, 4, 6, 8
      range에 숫자 3개 ⇒ range(시작 숫자, 끝 숫자, 간격) 시작 숫자 포함~간격을 지켜가며~끝 숫자는 포함되지않음
      예제
      for문을 돌때마다의 변수 i와 변수 add의 값 업데이트 과정은 다음 표와 같이 나온다
      i
      add
      1
      1
      2
      3
      3
      6
      4
      10
      5
      15
      6
      21
      7
      28
      8
      36
      9
      45
      10
      55
       
      range(len(리스트))형태는 많이 쓰이므로 알아두자!
      리스트 대신 튜플, 문자열 등 길이를 잴 수 다른 것으로 바꿔도 된다
      리스트의 길이에 따라 알아서 바뀌는 range! 를 for문과 쓰고 싶을때 주로 쓴다.
      리스트 전체를 훑고싶을때 range(len())을 쓰면 range(5)같은 것과 달리 리스트의 길이가 달라져도 괜찮다~
       
 
  • 리스트 컴프리헨션
    • 리스트 안에 for문을 포함하기
      좀 더 편리하고 직관적인 프로그램 만들기
      [형식] [표현식 for 항목 in 반복가능객체 if 조건문]
      “if 조건”부분은 생략 가능

break, continue, pass

  • break
    • 반복문 그만 둠
      while문
      for문
      그림으로 확인해보기는 continue밑에 사진 있음
  • continue
    • 현재 반복중인 부분만 그만 둠
      while문
      for문
break, continue 그림으로 확인해보기
break, continue 그림으로 확인해보기
  • pass
    • 아무일 안일어남
      문법 오류를 피하기위해 자리채우기 용으로 쓸 수 있다
      ex. 개발자들 끼리 협업 중
      밑과 프로그램 틀은 짜두었으나 내용은 다른 사람 담당이라 안채움
      이렇게 틀만 짜두면 if와 else의 콜론뒤에 내용이 없어서 오류 발생
      이렇게 채워주면 오류도 안나고 틀은 전해줄 수 있다
if 조건문: 수행할 문장1 수행할 문장2 ... elif 조건문: 수행할 문장1 수행할 문장2 ... elif 조건문: 수행할 문장1 수행할 문장2 ... ... else: 수행할 문장1 수행할 문장2 ...
# if문 안에 들어가지 않은 수행할 문장1. if 조건문: 수행할 문장1
이렇게 적으면 조건문이 True인지 False인지와 관계없이 문장이 수행된다.
# if문 안에 들어간 수행할 문장1. if 조건문: 수행할 문장1
조건문이 True일 경우에만 수행할 문장1이 수행된다
money = True if money: print("택시를") print("타고") print("가라") # 이 부분에서 예상치 못한 들여쓰기라는 오류가 뜬다
money = True if money: print("택시를") # 조건문이 True이므로 실행됨. print("타고") # if문 블럭에 해당되지 않으므로 그냥 실행됨.
[출력결과] 택시를 타고
money = False if money: print("택시를") # 조건문이 False이므로 실행 안됨. print("타고") # if문 블럭에 해당되지 않으므로 그냥 실행됨.
[출력결과] 타고
x = 3 y = 2 print(x > y) # True print(x < y) # False print(x == y) # False print(x != y) # True print(x >= y) # True print(x <= y) # False
money = 2000 card = True print((money >= 3000) or card) # True <- False or True
print(1 in [1, 2, 3]) # True print(1 not in [1, 2, 3]) # False pocket = ['paper','cellphone', 'money'] print('money' in pocket) # True
if 'money' in pocket: print("돈 있음") # 수행할 문장이 한 줄뿐 else: print("카드 꺼내자") # 수행할 문장이 한 줄뿐
if 'money' in pocket: print("돈 있음") # 콜론 옆에 바로 붙여 써도 똑같이 동작한다 else: print("카드 꺼내자")
if score >= 60: # score가 60이상이면 message = "success" # 변수 message에 "success"라는 글자 할당 else: # score가 60이상이 아니라면 message = "failure" # 변수 message에 "failure"라는 글자 할당
# 위 코드를 조건부 표현식으로 한 줄로 정리. message = "success" if score >= 60 else "failure"
while 조건문: 수행할 문장1 수행할 문장2 ...
# 나무를 3번 찍으면 나무가 넘어가는 프로그램 treeHit = 0 while treeHit < 3: treeHit = treeHit + 1 print("나무를 %d번 찍었습니다." % treeHit) if treeHit == 3: print("나무 넘어갑니다.")
while True: 수행할 문장1 수행할 문장2 ...
while문의 조건문이 True이므로 항상 참이 된다. 따라서 while문 안에 있는 문장들은 무한하게 수행된다.
for 변수 in 리스트(또는 튜플, 문자열): 수행할 문장1 수행할 문장2 ...
# 전형적인 for문 test_list = ['one', 'two', 'three'] for i in test_list: print(i)
[출력결과] one two three
# 다양한 for문의 사용 a = [(1,2), (3,4), (5,6)] for (first, last) in a: print(first + last)
[출력결과] 3 7 11
# for문의 응용 marks = [90, 25, 67, 45, 80] number = 0 #각각의 학생에게 번호를 붙여주기 위한 변수 for mark in marks: number = number +1 if mark >= 60: print("%d번 학생은 합격입니다." % number) else: print("%d번 학생은 불합격입니다." % number)
[출력결과] 1번 학생은 합격입니다. 2번 학생은 불합격입니다. 3번 학생은 합격입니다. 4번 학생은 불합격입니다. 5번 학생은 합격입니다.
add = 0 for i in range(1, 11): add = add + i print(add)
[출력결과] 55
marks = [90, 25, 67, 45, 80] for number in range(len(marks)): #range(5)와 동일. if marks[number] < 60: continue print("%d번 학생 축하합니다. 합격입니다." % (number+1))
[출력결과] 1번 학생 축하합니다. 합격입니다. 3번 학생 축하합니다. 합격입니다. 5번 학생 축하합니다. 합격입니다.
#구구단 for i in range(2,10): # 1번 for문 for j in range(1, 10): # 2번 for문 print(i*j, end=" ") # 같은 단끼리는 옆에 붙여 출력하기위해, end=" " 사용 print('') # 한 단 종료후 엔터. print를 하면 기본으로 나오는 엔터를 출력하기 위함.
[출력결과] 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
#리스트 컴프리헨션 안 쓴 상태 a = [1,2,3,4] result = [] for num in a: result.append(num*3) print(result)
[출력결과] [3, 6, 9, 12]
#리스트 컴프리헨션 사용 a = [1,2,3,4] result = [num * 3 for num in a] print(result)
[출력결과] [3, 6, 9, 12]
#리스트 컴프리헨션에 "if 조건"까지 사용 a = [1,2,3,4] result = [num * 3 for num in a if num%2 == 0] #리스트 a에서 짝수인 것에만 3곱하기 print(result)
[출력결과] [6, 12]
coffee = 10 while True: money = int(input("돈을 넣어 주세요: ")) if money == 300: print("커피를 줍니다.") coffee = coffee -1 elif money > 300: print("거스름돈 %d를 주고 커피를 줍니다." % (money -300)) coffee = coffee -1 else: print("돈을 다시 돌려주고 커피를 주지 않습니다.") print("남은 커피의 양은 %d개 입니다." % coffee) if coffee == 0: print("커피가 다 떨어졌습니다. 판매를 중지 합니다.") break # 커피가 없으면 break로 무한루프를 빠져나감
while True를 쓰는 무한 루프이지만, 커피가 다 떨어지면 break를 통해 루프를 빠져나갈 수 있음
for i in range(3): print('start') if i==1: break #i가 1이면 for문을 그만 둠 print('end')
[출력결과] start end start
# 1부터 10까지의 숫자 중, 홀수만 출력하는 프로그램 a = 0 while a < 10: a = a + 1 if a % 2 == 0: continue #짝수면 while문의 맨 처음(조건문:a<10)으로 돌아가게 함 print(a)
# 60점 이상인 사람은 축하메세지, 나머지는 아무 메세지도 전하지 않는 프로그램. marks = [90, 25, 67, 45, 80] number = 0 for mark in marks: number = number +1 if mark < 60: continue #점수가 60점 미만이면 for문 처음으로 돌아감->변수 mark 다음거~ print("%d번 학생 축하합니다. 합격입니다. " % number)
[출력결과] 1번 학생 축하합니다. 합격입니다. 3번 학생 축하합니다. 합격입니다. 5번 학생 축하합니다. 합격입니다.
#주머니에 돈이 있으면 가만히 있고 주머니에 돈이 없으면 카드를 꺼내라 pocket = ['paper', 'money', 'cellphone'] if 'money' in pocket: pass else: print("카드를 꺼내라")
if 'money' in pocket: else:
if 'money' in pocket: pass else: pass