{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. if문 (조건에 따라 분기)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.1 if" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pass\n" ] } ], "source": [ "x = 95\n", "if x >= 90:\n", " print(\"Pass\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.2 if ~ else" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fail\n" ] } ], "source": [ "x = 75\n", "if x >= 90:\n", " print(\"Pass\")\n", "else:\n", " print(\"Fail\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.3 if ~ elif ~ else" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Good\n" ] } ], "source": [ "x = 85\n", "if x >= 90:\n", " print(\"Very good\")\n", "elif (x >= 80) and (x < 90):\n", " print(\"Good\")\n", "else:\n", " print(\"Bad\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Good\n" ] } ], "source": [ "x = 85 \n", "if x >= 90:\n", " print(\"Very Good\")\n", "elif 80 <= x < 90: # elif범위는 같지만 표현은 다르게도 가능\n", " print(\"Good\")\n", "else:\n", " print(\"Bad\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.4 중첩된 if문" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Perfect\n" ] } ], "source": [ "x = 100\n", "if x >= 90:\n", " if x==100 :\n", " print(\"Perfect\")\n", " else:\n", " print(\"Very Good\")\n", "elif (x >= 80) and (x < 90):\n", " print(\"Good\")\n", "else:\n", " print(\"Bad\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. for문 (반복문)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.1 for문의 구조" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "10\n", "1\n", "11\n", "2\n", "12\n", "3\n", "13\n", "4\n", "14\n", "5\n", "15\n" ] } ], "source": [ "for a in [0,1,2,3,4,5]: # a는 반복 변수 # [0,1,2,3,4,5]는 반복 범위\n", " print(a)\n", " print(a+10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 반복 범위 지정" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 리스트 이용한 반복 범위 지정" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n" ] } ], "source": [ "for a in [0, 1, 2, 3, 4, 5]: # a는 반복 변수 # [0,1,2,3,4,5]는 반복 범위\n", " print(a)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "James\n", "Robert\n", "Lisa\n", "Mary\n" ] } ], "source": [ "myFriends = ['James', 'Robert', 'Lisa', 'Mary'] # 리스트를 변수에 할당\n", "for myFriend in myFriends:\n", " print(myFriend)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### range함수 이용한 반복 범위 지정" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- range(시작, 끝, 스텝)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "range(0, 10)\n" ] } ], "source": [ "print(range(0, 10, 1)) # range로 만들어진 숫자의 리스트를 출력하려면 list함수를 이용해 리스트로 변환 후 출력해야 함" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" ] } ], "source": [ "print(list(range(0, 10, 1))) # 리스트로 변환 " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n" ] } ], "source": [ "for a in range(0, 6, 1): # range로 반복 범위 지정\n", " print(a)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" ] } ], "source": [ "print(list(range(0, 10, 1))) \n", "print(list(range(0, 10))) # 스텝 생략하면 1씩 증가\n", "print(list(range(10))) # 시작 생략하면 0부터, 스텝 생략하면 1씩 증가" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 5, 10, 15]\n", "[-10, -8, -6, -4, -2]\n", "[3, 0, -3, -6, -9]\n", "[]\n" ] } ], "source": [ "print(list(range(0, 20, 5))) \n", "print(list(range(-10, 0, 2))) \n", "print(list(range(3, -10, -3))) \n", "print(list(range(0, -5, 1))) # 조건을 만족하는 숫자가 없으므로 빈 리스트[] 출력" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3 중첩된 for문" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x y\n", "x1 y1\n", "x1 y2\n", "x2 y1\n", "x2 y2\n" ] } ], "source": [ "x_list = ['x1', 'x2']\n", "y_list = ['y1', 'y2']\n", "\n", "print(\"x y\")\n", "for x in x_list: #반복변수 x의 x1에 대해 반복변수 y의 y1,y2를 출력\n", " for y in y_list: #반복변수 x의 x2에 대해 반복변수 y의 y1,y2를 출력\n", " print(x,y)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.4 여러 개의 리스트 다루기 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### len, range이용하기" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 이름별로 시험점수를 출력하려면?\n", "- 리스트가 1개라면 반복범위를 지정하면 됨\n", "- 하지만 리스트가 2개이므로 반복범위 지정불가\n", "- 그러므로 리스트, 튜플, 세트, 딕셔너리의 항목개수(데이터의 길이)를 나타내는 len() 함수와 range() 함수를 이용해 반복범위를 지정 후, \n", "
반복변수를 이용해 리스트 요소를 불러오면 됨" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "names = ['James', 'Robert', 'Lisa', 'Mary'] # 이름 리스트 생성\n", "scores = [95, 96, 97, 94] # 성적 리스트 생성" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "James 95\n", "Robert 96\n", "Lisa 97\n", "Mary 94\n" ] } ], "source": [ "for k in range(len(names)): # len, range이용해 <반복범위> 지정\n", " print(names[k], scores[k])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### zip함수 이용하기" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 같은 길이의 데이터를 하나로 묶어주는 zip() 함수 이용해 반복범위 정하고, 데이터별 반복변수지정" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "James 95\n", "Robert 96\n", "Lisa 97\n", "Mary 94\n" ] } ], "source": [ "for name, score in zip(names, scores): # for var1, var2 in zip(list1, list2):\n", " print(name, score) # list1, list2가 순서대로 반복변수인 var1, var2에 대입되고 코드블록 수행" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. while문" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.1 조건이 만족하는 경우에만 while문 수행" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i sum\n", "1 1\n", "2 3\n", "3 6\n", "4 10\n", "5 15\n", "6 21\n" ] } ], "source": [ "i = 0 # 초기화\n", "sum = 0 # 초기화\n", "\n", "print(\"i sum\")\n", "while (sum < 20): # 조건 작성 (1부터 더하다가 합이 20보다 커지면 멈추기)\n", " i = i + 1 # i를 1씩 증가\n", " sum = sum + i # 이전의 sum과 현재 i를 더해서 sum을 갱신\n", " print(i, sum) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 무한 반복 while문" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "while True: # 무조건 계속 반복하라고 명령을 내릴때 while True \n", " print(\"while test\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. 반복문을 제어하는 break와 continue" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.1 반복문을 빠져나오는 break" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### while문" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "2\n", "3\n" ] } ], "source": [ "k=0\n", "while True: \n", " k = k + 1 # k는 1씩 증가\n", " \n", " if(k > 3): # k가 3보다 크면 \n", " break # break로 while 문을 빠져나옴\n", " \n", " print(k) # k 출력" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### for문" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n" ] } ], "source": [ "for k in range(10): \n", " if(k > 2): # k 가 2보다 크면 \n", " break # break로 for 문을 빠져나옴 \n", " \n", " print(k) # k 출력 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.2 다음 반복을 실행하는 continue" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- continue만나면 반복문의 처음으로 돌아가 다음 반복 진행" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### for문" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "3\n", "4\n" ] } ], "source": [ "for k in range(5): # 반복범위\n", " if(k == 2): \n", " continue # k=2일 때 continue가 실행되어 반복문의 처음으로 돌아가 k=2일 때 결과물은 안나옴\n", " \n", " print(k) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### while문" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "continue next\n", "3\n", "4\n" ] } ], "source": [ "k = 0\n", "while True:\n", " k = k + 1\n", " \n", " if(k == 2): \n", " print(\"continue next\") \n", " continue # k=2일 때 continue가 실행되어 반복문의 처음으로 돌아가 k=2일 때 결과물은 안나옴\n", " if(k > 4):\n", " break # k=5가 되면 break되어 while문 빠져나와 5이상의 결과물은 안나옴\n", " \n", " print(k)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. 리스트, 세트, 딕셔너리에서 실행하는 한 줄 for문 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.1 리스트 컴프리헨션의 기본 구조" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 4, 9, 16, 25]\n" ] } ], "source": [ "numbers = [1,2,3,4,5]\n", "square = [i**2 for i in numbers] # [반복실행문 for 반복변수 in 반복범위]\n", "print(square)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.2 조건문을 포함한 리스트 컴프리헨션" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[9, 16, 25]\n" ] } ], "source": [ "numbers = [1,2,3,4,5]\n", "square = []\n", "\n", "for i in numbers:\n", " if i >= 3:\n", " square.append(i**2)\n", " \n", "print(square)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[9, 16, 25]\n" ] } ], "source": [ "numbers = [1,2,3,4,5]\n", "square = [i**2 for i in numbers if i>=3]\n", "\n", "print(square)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }