#!/usr/bin/env python # coding: utf-8 # ## 03-1 if문 # # - if문: 프로그래밍에서 조건을 판단하여 해당 조건에 맞는 상황을 수행 # In[1]: money = 1 if money: print("택시를 타고 가라") else: print("걸어가라") # ### if문의 기본 구조 # # ``` # if 조건문: # 수행할 문장1 # 수행할 문장2 # ... # else: # 수행할 문장A # 수행할 문장B # ... # ``` # - 파이썬에서는 위 예문의 "수행할 문장"을 반드시 들여쓰기 해야 한다. # In[1]: money = 1 if money: print("택시를") print("타고 가라") else: print("걸어가라") # ### 조건문이란 무엇인가? # # - "조건문"이란 참과 거짓을 판단하는 문장이다. # # | 자료형 | 참 | 거짓 | # | :---: | :---: | :---: | # | 숫자 | 0 이 아닌 숫자 | 0 | # | 문자열 | "abc" | "" | # | 리스트 | [1, 2, 3] | [] | # | 튜플 | (1, 2, 3) | () | # | 딕셔너리 | {"a": "b"} | {} | # # #### 비교연산자 # # - 조건문에서는 자료형보다는 비교연산자(<, >, ==, !=, >=, <=)를 쓰는 경우가 많다. # # | 비교연산자 | 설명 | # | :---: | :---: | # | x < y | x가 y보다 작다 | # | x > y | x가 y보다 크다 | # | x == y | x와 y가 같다 | # | x != y | x와 y가 같지 않다 | # | x >= y | x가 y보다 크거나 같다 | # | x <= y | x가 y보다 작거나 같다 | # In[2]: x = 3 y = 2 x > y # In[3]: x < y # In[4]: x == y # In[5]: x != y # In[6]: money = 2000 if money >= 3000: print("택시를 타고 가라") else: print('걸어가라') # #### and, or, not (논리연산자) # # | 연산자 | 설명 | # | :---: | :---: | # | x or y | x와 y 둘중 하나만 참이면 참이다 | # | x and y | x와 y 모두 참이어야 참이다 | # | not x | x가 거짓이면 참이다 | # In[7]: money = 2000 card = 1 if money >= 3000 or card: print("택시를 타고 가라") else: print("걸어가라") # #### x in s, x not in s # # | in | not in | # | :---: | :---: | # | x in 리스트 | x not in 리스트 | # | x in 튜플 | x not in 튜플 | # | x in 문자열 | x not in 문자열 | # # In[1]: 1 in [1, 2, 3] # In[2]: 1 not in [1, 2, 3] # In[3]: 'a' in ('a', 'b', 'c') # In[4]: 'j' not in 'python' # In[5]: # 만약 주머니에 돈이 있으면 택시를 타고, 없으면 걸어가라 pocket = ['paper', 'cellphone', 'money'] if 'money' in pocket: print("택시를 타고 가라") else: print("걸어가라") # #### [조건문에서 아무 일도 하지 않게 설정하고 싶다면?] # In[6]: # 주머니에 돈이 있으면 가만히 있고 주머니에 돈이 없으면 카드를 꺼내라 pocket = ['paper', 'money', 'cellphone'] if 'money' in pocket: pass else: print("카드를 꺼내라") # ### 다양한 조건을 판단하는 elif # # > 주머니에 돈이 있으면 택시를 타고, 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어가라 # In[7]: # if와 else만으로 표현 pocket = ['paper', 'handphone'] card = 1 if 'money' in pocket: print("택시를 타라") else: if card: print("택시를 타라") else: print("걸어가라") # In[8]: # elif를 사용 if 'money' in pocket: print("택시를 타라") elif card: print("택시를 타라") else: print("걸어가라") # --- # ## 03-2 while 문 # # ### while문의 기본 구조 # # - while문은 조건문이 참인 동안에 while문 아래에 속하는 문장들을 반복해서 수행한다. # # ``` # while <조건문>: # <수행할 문장1> # <수행할 문장2> # <수행할 문장3> # ... # ``` # # In[9]: # "열번 찍어 안 넘어 가는 나무 없다"라는 속담을 표현 treeHit = 0 while treeHit < 10: treeHit = treeHit + 1 print("나무를 %d번 찍었습니다." % treeHit) if treeHit == 10: print("나무 넘어갑니다.") # - 위 while문이 반복되는 과정 # # | treeHit | 조건문 | 조건 판단 | 수행하는 문장 | while문 | # | :---: | :---: | :---: | :---:| :---: | # | 0 | 0<10 | 참 | 나무를 1번 찍었습니다. | 반복 | # | 1 | 1<10 | 참 | 나무를 2번 찍었습니다. | 반복 | # | 2 | 2<10 | 참 | 나무를 3번 찍었습니다. | 반복 | # | 3 | 3<10 | 참 | 나무를 4번 찍었습니다. | 반복 | # | 4 | 4<10 | 참 | 나무를 5번 찍었습니다. | 반복 | # | 5 | 5<10 | 참 | 나무를 6번 찍었습니다. | 반복 | # | 6 | 6<10 | 참 | 나무를 7번 찍었습니다. | 반복 | # | 7 | 7<10 | 참 | 나무를 8번 찍었습니다. | 반복 | # | 8 | 8<10 | 참 | 나무를 9번 찍었습니다. | 반복 | # | 9 | 9<10 | 참 | 나무를 10번 찍었습니다. 나무 넘어갑니다. | 반복 | # | 10 | 10<10 | 거짓 | | 종료 | # # ### while문 직접 만들기 # In[10]: prompt = """ 1. Add 2. Del 3. List 4. Quit Enter number: """ number = 0 while number != 4: print(prompt) number = int(input()) # ### while문 강제로 빠져나가기 # In[11]: coffee = 10 money = 300 while money: print("돈을 받았으니 커피를 줍니다.") coffee = coffee - 1 print("남은 커피의 양은 %d 개입니다." % coffee) if not coffee: print("커피가 다 떨어졌습니다. 판매를 중지합니다.") break #강제로 빠져나가기 # ### 조건에 맞지 않는 경우 맨 처음으로 돌아가기 # In[12]: # 1부터 10까지의 숫자 중에서 홀수만 출력 a = 0 while a < 10: a = a + 1 if a % 2 == 0: continue print(a) # ### 무한 루프 # # - 무한 루프의 기본적인 형태 # # ``` # while True: # 수행할 문장1 # 수행할 문장2 # ... # ``` # --- # ## 03-3 for 문 # # ### for문의 기본 구조 # # ``` # for 변수 in 리스트(또는 튜플, 문자열): # 수행할 문장 1 # 수행할 문장 2 # ... # ``` # # #### 예제 이용해 for문 이해하기 # In[1]: # 1. 전형적인 for문 test_list = ['one', 'two', 'three'] for i in test_list: print(i) # In[2]: # 2.다양한 for문의 사용 a = [(1,2), (3,4), (5,6)] for (first, last) in a: print(first+last) # In[3]: # 3. for문의 활용 # 총 5명의 학생 중 점수가 60점이 넘으면 합격, 아니면 불합격. 결과 보여주시오. marks = [90, 25, 67, 45, 80] number = 0 for mark in marks: number += 1 if mark >= 60: print("%d번 학생은 합격입니다" % number) else: print("%d번 학생은 불합격입니다" % number) # ### for와 함께 자주 사용하는 range 함수 # In[7]: # 1부터 10까지 합 sum = 0 for i in range(1, 11): sum += i print("i = %d, sum = %d" % (i, sum)) # In[9]: # 성적 예제를 range 함수를 사용해서... marks = [90, 25, 67, 45, 80] for number in range(len(marks)): if marks[number] < 60: continue print("%d번 학생 축하합니다. 합격입니다" % (number+1)) # In[11]: # 구구단 for i in range(2, 10): for j in range(1, 10): print(i*j, end=" ") print("") # ### 리스트 안에 for문 포함하기 # # - 다음의 예제를 리스트 내포(List comprehension)를 이용하여 변경해 보자. # In[12]: a = [1, 2, 3, 4] result = [] for num in a: result.append(num*3) print(result) # In[13]: # 리스트 내포 사용하여 변경 result = [num * 3 for num in a] print(result) # In[3]: # 리스트 내포에서 if 사용하기 a = [1, 2, 3, 4] result = [num *3 for num in a if num%2 == 0] print(result) # In[5]: # for 문 두번 사용하기 result = [x*y for x in range(2,10) for y in range(1,10)] print(result)