스터디/파이썬 스터디 강의자료

[1팀/지다인] 2차시 파이썬 스터디- 자료형

알 수 없는 사용자 2023. 3. 16. 01:20

💡 데이터 과학을 위한 파이썬 프로그래밍을 수업에 맞게 정리한 교안입니다. 무단 공유와 배포는 금지합니다.

2차시_과제_자료형.pdf
2.05MB
2차시_강의안_자료형.pdf
2.05MB

  • 파이썬 경험 유무, 어느 정도 알고 있는지, 1주차 잘 모르는 부분 check
  • w1 review
    • 요약
      1. 코딩이란 프로그래밍을 하는 행위이며, 프로그래밍은 프로그래밍 언어를 사용하여 프로그램을 개발하는 것이다. 프로그래밍 언어는 인간이 원하는 것을 컴퓨터로 실행시키기 위해 사용하는 컴퓨터가 이해할 수 있는 언어이다.
      2. 파이썬은 귀도 반 로섬이 개발한 언어이고 이후 다양한 기능이 추가되었다.
      3. 파이썬은 플랫폼 독립적인 언어, 인터프리터 언어, 객체 지향 언어, 동적 타이핑 언어라는 특징을 갖고 있다.
      4. 화면 입출력 함수인 input(), print()함수에 대해 배웠다.
        1. input()은 사용자로부터 값을 입력 받는 함수이고
        2. print()는 화면에 결과값을 출력하는 함수이다.

2차시_과제_자료형.pdf
2.05MB

part2 파이썬 기초

chapter02 변수와 자료형

학습 목표

  • 변수의 개념, 변수와 메모리의 관계에 대해 알아본다
  • 변수명을 선언하는 규칙에 대해 이해한다
  • 기본 자료형인 정수형, 실수형, 문자형, 불린형에 대해 학습한다
  • 사칙연산을 비롯한 간단한 연산을 수행한다
  • 자료형 간 변환하는 방법에 대해 알아보고, 자료형을 확인하는 방법을 학습한다
  • 01 변수의 이해우선 이 코드의 결과 값을 생각해보자
    • 결과값a+b예상한 값과 실제 값이 일치하는가?
      professor = "sungchul choi"
      print(professor)
      
      • 왼쪽에 오는 professor 는 변수이다 쉽게 말해 값을 집어 넣는 상자이다. 오른쪽에 sungchul choi는 값이다
      • 즉, 오른쪽 값을 왼쪽 변수 상자에 집어넣어라
      <aside> 💡 숫자를 제외한 문자열은 따옴표를 사용하여 하나의 값이라는 걸 말한다.
      a = 7
      b = 5
      print("a+b")
      print(a+b)
      
      • a = 7 은 7이라는 값을 a에 넣으라는 뜻, b = 5도 동일
      • print()는 괄호 안의 값을 출력하는 것
    • </aside>
    • <코드 설명>
    • 12
    • sungchul choi
    • 변수와 메모리
      • 변수 : 어떠한 값을 저장하는 장소 상자
      • 메모리: 이러한 변수를 저장하는 공간 누리관
      • 메모리 주소: 변수의 저장 위치 서울시 노원구 공릉동 &*8〰️누리관
        • 순간적으로 물리적인 공간을 확보하는 것으로 실행마다 메모리 주소는 변할 수 있음
      • 알아두면 쓸모 있는 컴퓨터의 구조 🤭
        • 주기억장치: CPU에서 처리 중인 프로그램과 데이터를 임시로 저장
        • 즉 a = 3을 코드로 작성했다면 a라는 메모리 장소에 3이라는 값을 넣어라 라고 해석할 수 있다
      • 중앙처리장치: 입력된 자료를 적절한 정보로 변환하기 위하여 소프트웨어로부터 받은 명령어를 실행하는 장치
    • 변수명 선언
      1. 다른 사람이 읽어도 이해할 수 있는 이름
        1. 프로그램은 혼자 만드는 것이 아닌 여럿이 함께 만드는 것이므로 직관적이고 의미가 담긴 단어로 만들어야 한다
      2. 파이썬은 대소문자를 구별한다
        1. professor 과 Professor은 다른 변수이다. 파이썬은 대소문자를 구별하기 때문에 반드시 기억하고 써야한다
        2. 대부분의 경우 소문자로 구성하는 것을 추천한다
      3. 단어와 단어 사이는 밑줄(_)로 이어 한 단어를 만든다
        1. 이러한 방식을 under score라고 한다
          1. under_score
          2. 주의 사항으로는 붙임표(-)를 사용하지 않는다
        2. 다른 언어에서는 camel case를 이용하기도 한다
          1. 단어와 단어의 첫 스펠링을 대문자로 사용하여 단어를 구분해준다
          2. ex) CamelCase
      4. 숫자를 사용할 수 있지만 변수명이 숫자로 시작하면 안된다
        1. 1professor 사용 불가 professor1 사용가능
      5. 예약어는 사용할 수 없다
        1. for, if, else 등 우리가 약속한 단어를 사용하면 파이썬은 오류가 난다
        2. 우리가 지정한 파일 이름도 마찬가지이다.
    • 변수명 선언 규칙
  • print() → 괄호 안의 내용을 화면에 출력하는 함수
  • professor = "sungchul choi" print(professor) a = 7 b = 5 print("a+b") print(a+b)
  • 02 자료형과 기본 연산
    • 메모리 공간
      • 공간에 대한 개념 이해이진수 한 자리를 비트라고 하며 8개의 비트는 1바이트, 1024바이트는 1킬로바이트 , 1024킬로바이트는 1메가바이트
        • 알아두면 쓸데있는 이진수
        • 컴퓨터의 메모리는 실리콘으로 만든 반도체이다. 반도체의 가장 큰 특징은 어떤 자극을 주었을 때 전기가 통할 수 있어 전류의 흐름을 제어할 수 있다는 것이다. 이러한 성질을 이용해 반도체에 전류가 흐를 때1 흐르지 않을 때0이라는 숫자로 표현할 수 있다 따라서 메모리는 전류의 흐름을 이진수로 표현하는 것이다
      • 컴퓨터는 0과 1 두가지 정보만 저장할 수 있으며 이러한 방식은 이진수를 사용한다
    • 과연 하나의 변수는 어느 정도의 메모리 공간을 사용할까?
    • 기본 자료형
      • 정수형(integer type)데이터 선언할 때: data = 1 (따로 따옴표를 사용하지 않아도 정수로 인식한다)
      • 자연수를 포함해 0,-1,-2,1,2와 같이 값의 영역이 정수로 한정된 값을 뜻한다
      • 실수형(floating-point type)
      • 10.2, 7.2와 같이 소수점이 포함된 값을 말한다. 실제로 값이 정수형이라도 9.0으로 입력하면 인터프리터는 실수형으로 해석한다
      • 문자형(string type)(따옴표는 큰 따옴표, 작은 따옴표 상관없이 편한 걸 이용하면 되지만 주로 큰 따옴표를 이용한다)
      • 값이 문자로 출력되는 자료형이다. 파이썬에서는 보통 따옴표가 들어간 정보를 문자형 데이터라고 한다. 예를 들어 코드에서 print(a+b)와 print(”a+b”)는 매우 비슷해 보이지만 결과는 전혀 다르다. 후자의 코드에서 따옴표 안에 있는 a+b는 변수가 아니라 문자열로 인식하기 때문에 a+b라는 문자가 화면에 그대로 출력되는 것을 알 수 있다.
      • 불린형(boolean type)
        • 알아두면 쓸데있는 동적 타이핑이러한 동적 타이핑의 가장 큰 장점은 유연하기에 메모리 공간도 저장되는 크기에 따라 동적으로 할당받을 수 있다이제 실제로 타입을 확인해봅시다! 🤔 type()
        • int() a = int(7)
        • 동적 타이핑이란 변수의 메모리 공간을 확보하는 행위가 프로그램 실행 시점에서 발생하는 것을 뜻한다. 일반적으로 다른 언어에서는 변수의 타입을 미리 선언하지만 파이썬은 선언을 하지 않아도 인터프리터가 알아서 판단한다. 이렇게 프로그래머가 직접 판단하는 것이 아니라 인터프리터가 직접 판단하는 것을 동적 타이핑이라 한다.
      • 불린형은 논리형이라고도 하며 참 또는 거짓을 표현할 때 사용한다. 만약 값이 true 라면 참을 의미하며, 컴퓨터에서는 1을 뜻한다. 반대로 false라면 거짓을 의미하며, 컴퓨터에서는 0을 뜻한다.
    • 메모리의 크기는 변수의 자료형에 의해 결정된다.
    • 간단한 연산
      • 연산자 : +, -, *, / 기호
      • 피연산자: 연산자에 의해 계산되는 숫자 또는 문자
      • 수학연산
          • 덧셈
          • 뺄셈
          • 곱셈
        • / 나눗셈
        • ** 제곱
      • 파이썬의 사칙연산은 수학의 사칙연산과 비슷하다. 다만 다른 점은 문자형끼리 더하는 것이 가능하다
      • 증가연산과 감소연산
        a = 2
        a += 1 #a = a+1
        print(a)
        
        a = 3
        a = a-1
        a -= 1
        print(a)
        
      • a = 1 a = a + 1 print(a)
    • 파이썬에서는 다양한 자료형을 사용하여 간단한 연산이 가능하다
  • 03 자료형 변환예를 들어 인터넷 사이트에 로그인할 때 일반적으로 숫자를 입력해야 하는데 컴퓨터는 그 값을 숫자가 아닌 문자열로 인식하는 경우가 많다. 사람이 보기에는 똑같이 보이지만 컴퓨터에서는 메모리의 용량 확보 등 인터프리터와 운영체제가 해당 데이터를 처리하는 방식이 완전히 달라진다
    • 정수형과 실수형 간 변환
      a = 10
      print(a)
      a = float(10)
      print(a)
      
      a = 10
      b = 3
      print(a/b)
      
      결과: 3.33333…
      a = int(10.7)
      b = int(10.3)
      print(a+b)
      print(a)
      print(b)
      
      결과: 20결과를 확인하면 실수형이 정수형으로 변환되어 소수점이하의 내림이 발생한다. 이 점이 기존 수학 연산과 다른 점이다.
    • 10 10
    • 인터프리터는 변수 간 계산할 때 필요하다 생각되면 스스로 정수형을 실수형으로 변환한다. 이것이 파이썬 인터프리터의 특징이다.
    • 변수의 자료형은 float() 함수나 int()함수를 사용하면 매우 간단하게 변환할 수 있다.
    • 숫자형과 문자형 간 변환
      a = '76.3' #정수형
      b = float(a)
      print(a)
      print(b)
      print(a+b)
      
      a = float(a)
      b = a
      print(a+b)
      
      a = str(a)
      b = str(b)
      print(a+b)
      
    • 문자형으로 선언된 값도 정수형이나 실수형으로 변환할 수 있다.
    • 자료형 확인하기
      a = int(10.3)
      b = float(10.3)
      c = str(10.3)
      
      print(type(a))
      print(type(b))
      print(type(c))
      
    • 실제 프로그래밍을 하다 보면 a라는 변수와 b라는 변수의 자료형이 무엇인지 헷갈릴 때 type() 함수를 사용한다
  • 실제 프로그래밍에서 앞에서 배운 4가지 타입의 자료형을 자유롭게 바꿔가며 사용해야할 때가 많다,

chapter03 화면 입출력과 리스트

  • 01 파이썬 프로그래밍 환경
    • 사용자 인터페이스대표적인 사용자 인터페이스로 GUI가 있다
      • CLI 환경그렇지만, 우리가 주로 코딩에서 사용하게 되는 환경은 CLI 환경이라 생각하면 된다.
      • 파이참에서 명령어를 입력하는 것, 터미널에서 입력하는 것 또한 다 CLI 환경이다
      • 그러나 반대로 CLI는 마우스의 클릭이 아닌 키보드만으로 명령을 입력하는 환경이다
    • 이렇게 보기 좋게 생긴 아이콘을 클릭하면 앱이 실행된다.
    • GUI환경에서는 여러 가지 도구가 사용되는데 대표적으로 마우스와 아이콘이 있다.
    • 컴퓨터에 명령을 입력할 때 사용하는 환경을 사용자 인터페이스라고 하는데 여기에는 다양한 방식이 있다
  • 04 리스트의 이해
    • 리스트가 필요한 이유
      • 많은 변수를 만들지 않고 한 개의 변수의 모든 값을 저장 → 효율적
        • 학생 100명의 성적을 입력해야 하는데 100개의 변수를 만든다면 코드가 길어지고 번거로움
    • 리스트의 개념
      • 리스트는 하나의 변수에 여러 값을 저장하는 자료형이다.
      • 하나의 변수의 여러가지 값을 저장하는 기법을 시퀀스 자료형이라고 한다.
      • 시퀀스 자료형은 여러 자료를 순서대로 넣는다는 뜻이다. (순서가 있다는 것만 인지할 것)
        • 예를 들어, 국어, 수학, 영어 점수를 순서없이 넣으면 뭐가 국어 점수인지 알 수 없다.
      • 다양한 자료형을 같이 넣을 수 있다
        • [100,숫자, false]
    • 인덱싱과 슬라이싱
      • 인덱싱(indexing)간단히 말해, 첫번째 값을 0으로 했을 때 첫번째 값과 얼마나 떨어져 있는지를 나타낸 것<aside> 💡 len()은 length의 준말로 리스트의 길이 반환하는 함수 → 여기서는 값 3개를 반환했음
      • </aside>
      • colors = ['red', 'blue', 'green'] print(colors[0]) print(colors[2]) print(len(colors))
      • 인덱싱이란 리스트에 저장되어 있는 값에 접근하기 위해 이 값의 상대적인 주소를 사용하는 것
      • 슬라이싱(slicing)
        cities = ['서울', '부산', '인천', '대구', '광주', '울산', '수원']
        
        기본 문법: 변수명[시작인덱스:마지막인덱스]
        • e.g.) cities[0:6]
          • indexing부산 1대구 3울산 5
          • 수원 6
          • 광주 4
          • 인천 2
          • 서울 0
          • 예상 정답</aside>[’서울’, ‘부산’, ‘인천’, ‘대구’, ‘광주’]
          • 마지막인덱스-1 까지만 출력된다는 점 잊지 말자
          • 실제 정답은 울산까지 출력됩니다
          • <aside> 👧🏻 수원까지 입니다!
      • 슬라이싱이란 리스트의 인덱스 기능을 사용하여 전체 리스트에서 일부를 잘라내어 사용하는 것이다.
      • 리버스 인덱싱(reverse index)마지막 값에 -1 할당
        • e.g.)부산 -7대구 -5광주 -3수원 -1
        • 울산 -2
        • 대전 -4
        • 인천 -6
        • 서울 -8
      • 인덱스를 첫번째 값이 아닌 마지막 값부터 시작하는 방식
      • 추가로 알아두면 좋은 것
        • 인덱스 범위를 넘어가는 슬라이싱cities[-50:50] → 인덱싱 범위를 넘어가면 최대 범위인 처음부터 끝까지 출력
        • cities[:] → 인덱싱 범위를 지정하지 않으면 처음부터 끝까지 출력
        • 증가값
          cities = ['서울', '부산', '인천', '대구','대전', '광주', '울산', '수원']
          
          cities[::2] →서울, 인천, 대전, 울산
        • 변수명[시작인덱스:마지막인덱스:증가값]
    • 리스트의 연산
      • 덧셈 연산
      • color1 = ['orange',’red’, 'blue','black', 'green','white'] color2 = ['orange1, ’black’, 'white'] print(colorl + color2) # 두 리스트. 합치기 -> ['red', ’blue’, ’green', 'orange', 'black1, 'white'] len(color1) # 리스트 길이 -> 3 total_color = colorl + color2 -> ['red', ’blue', ’green', ’orange', 'black', 'white']
      • 곱셈 연산
      • colorl = [’red’, 'blue', 'green'] color2 = ['orange1', ’black’, 'white'] print(colorl + color2) # 두 리스트. 합치기 -> ['red', ’blue’, ’green', 'orange', 'black1', 'white'] len(colorl) # 리A트 길이 -> 3 total_color = colorl + color2 -> ['red', ’blue', ’green', ’orange', 'black', 'white'] color1 * 2 -> [’red’, 'blue', 'green',’red’, 'blue', 'green']
      • in 연산
        color2 = ['orange', 'black’, 'white']
        'blue' in color2
        
        -> false
        
      • 포함 여부를 확인하는 연산
    • 리스트 추가 및 삭제
    • 패킹과 언패킹언패킹: 한 변수에 여러 개의 데이터가 들어있을 때 그것을 각각의 변수로 반환하는 방법
      • 만약 리스트의 값이 3개이고 5개로 언패킹을 시도하면 오류가 난다! (개수가 같아야 하는 점 잊지 말자)
      t = [1,2,3]
      a,b,c = t
      print(t,a,b,c)
      
      결과값: [1,2,3] 1 2 3
    • 패킹: 한 변수에 여러 개의 데이터를 할당하는 그 자체
    • 이차원 리스트행렬의 개념과 비슷 (행렬을 배운 적이 있나…요? 기초수학과 선형대수학에서 배웁니다!)결과값: [[49,79,20,100,80], [43,59,85,30,90],[49,79,48,60,100]]코드를 시각화한 결과값
    • print(midterm_score[0][2])
    • kor_score = [49,79,20,100,80] math_score = [43,59,85,30,90] eng_score = [49,79,48,60,100] midterm_score = [kor_score, math_score, eng_score] midterm_score
    • 이차원 리스트는 리스트를 효율적 활용하기 위해 여러개의 리스트를 하나의 변수에 할당
  • 05 리스트의 메모리 관리 방식
    • 리스트의 메모리 저장
      • 리스트는 안에는 값 자체를 저장하는 구조가 아니라 그 값이 위치한 메모리의 주소에 주소값을 저장
      a = 300
      b = 300
      a is b
      a == b
      
      == 은 값을 비교하는 연산이고 is는 메모리의 주소를 비교하는 연산이다
      a = 1
      b = 1
      a is b
      a == b
      
      파이썬의 정수형 저장 방식의 특성때문!
      • 파이썬은 인터프리터(아나콘다)가 구동될 때, -5〰️256까지의 정수값을 특정 메모리 주소에 저장
        • 따라서 이 범위 내에 존재하는 정수값(int)는 True값이 나올 수 있는 것이다
        • 이 개념은 조금 어려울 수 있어 이런 게 있다 정도만 지금 알아두는 것정도로 충분하다 컴퓨터 시스템에 대한 이해를 한 뒤, 그때 다시 들으면 이해가 잘 될 것이다
    • 메모리 저장 구조로 인한 리스트 특징
      • 하나의 리스트에 다양한 자료형 포함 가능
      • a = ["color", 1, 0.2]
      • 리스트의 저장 방식
        a.sort()
        print(b)
        
        ⇒ a를 정렬했는데 b도 정렬되었다. 그 이유는 b=a를 입력한 순간 b에도 a 리스트의 메모리 주소가 저장되었다. 둘 다 동일한 메모리 주소를 가르키고 있으므로 실제로는 하나만 변경했지만 둘 다 변경된 리스트의 값을 보여주게 된다b 변수 내 a의 주소가 이미 있기 때문에 a의 주소에서 변경되어 마찬가지로 둘 다 변경</aside>
      • 포인트는 b = a 라는 걸 잊지 말자
      • <aside> 💡 b를 정렬하는 경우는 a의 값이 바뀌지 않을 거라고 생각했다면 경기도 오산!
      • a = [5,4,3,2,1] b = [1,2,3,4,5] b=a print(b)
  • 요약
    1. 변수는 프로그래밍에서 특정한 값을 저장하는 공간의 이름을 뜻한다
    2. 변수에 값을 넣으라고 선언하는 순간 메모리 어딘가에 물리적인 공간을 확보할 수 있도록 운영체제와 파이썬 인터프리터가 협력하여 메모리 저장 위치를 할당한다. 이 위치를 메모리 주소라고 한다.
    3. 변수명 선언 규칙
      1. 다른 사람이 읽어도 이해할 수 있는 이름
      2. 파이썬은 대소문자를 구별한다 (대소문자 구별하여 쓰기)
      3. 단어와 단어 사이는 밑줄(_)로 이어 한 단어를 만든다
      4. 숫자를 사용할 수 있지만 변수명이 숫자로 시작하면 안된다
      5. 예약어는 사용할 수 없다
    4. 자료형의 종류
      1. 정수형
      2. 실수형
      3. 문자형
      4. 불린형
    5. 파이썬의 덧셈 연산자는 +, -, *, / 사용한다
    6. 파이썬에서 제곱승을 구하는 연산자는 **이다
    7. 파이썬에서 몫을 반환하는 연산자는 //이고 나머지 연산자는 %이다
    8. 증가 연산자는 +=, 감소 연산자는 -=이다
    9. 변수의 자료형은 float() 나 int() 함수를 사용하여 매우 간단하게 변환할 수 있다
    10. 문자형으로 선언된 값도 정수형이나 실수형으로 변환할 수 있다
    11. 자료형을 확인할 수 있는 함수는 type()이다
  • 과제
    1. 다음과 같은 코드 작성 시, 빈 칸에 들어갈 수 없는 코드를 고르시오
      1. a≤b
      2. a≠int(b)
      3. str(a)≠b
      4. a is not int(b)
      5. int(a) ≥ int(b)
    2. a = 20 b = '10' print(________) True
    3. 다음 중 변수를 메모리에서 삭제하기 위해 사용하는 명령어는?
      1. remove
      2. clear
      3. del
      4. pop
      5. delate
    4. 입력받은 섭씨온도를 화씨온도로 변환하는 프로그램을 코딩하려고 한다. 코드 순서를 바르게 나열하시오.
      1. fahrenheit = ((9/5) * celsius) + 32
      2. celsius = input(”섭씨온도를 입력하세요:”)
      3. print(”섭씨온도:”, celsius, “화씨온도:”, fahrenheit)
      4. celsius = float(input(”섭씨온도를 입력하세요:”))
    5. 다음 중 파이썬의 변수명으로 적절치 않은 것은?
      1. ABC1982
      2. abc1982
      3. 1982abc
      4. abc_23
      5. _23abc
    6. box = “apple”의 뜻은?
      1. box 변수의 이름은 apple이다
      2. box 변수에 apple 값을 넣어라
      3. box 변수와 apple은 같다
      4. box 변수는 apple이다
      5. apple 변수는 box이다
    7. 다음과 같이 코드를 작성했을 때, 실행결과로 알맞은 것은?
      1. 에러 발생
      2. 1.51.51.51.5
      3. 6.0
      4. 6
      5. “6”
    8. a = "1.5" b = 4 print(a*b)
    9. 변수에 대한 설명으로 틀린 것은?
      1. 프로그램에서 사용하기 위한 특정한 값을 저장하는 공간이다
      2. 선언되는 순간 메모리의 특정 영역에 공간이 할당된다
      3. 변수에 할당된 값은 하드디스크에 저장된다
      4. A=8은 “A는 8이다”라는 뜻은 아니다
      5. ‘2x+7y’는 14라고 하면, 이 식에서 x,y는 변수이다
    10. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
      1. 0.53
      2. 530
      3. 512
      4. 3
      5. 5
    11. a = 53%10 print(a)
    12. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
      1. <class’float’>
      2. <class ‘int’>
      3. <class ‘str’>
      4. TypeError
      5. 025
    13. a = "10" b = "40" print(type(float(a/b)))
    14. 다음 코드의 실행 결과로 알맞은 것을 고르시오
      1. <class’integer’>
      2. <class’int’>
      3. <class’str’>
      4. <class’string’>
      5. <class’float’>
    15. a = 572 print(type(a))
    16. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 2.12.12.1
      1. int(a)*b
      2. a*b
      3. a*int(b)
      4. int(a)*int(b)
      5. float(a)*b
    17. a = '3' b = '2.1' print(___________)
    18. 변수명을 지을 때 권장하는 규칙 중 틀린 것은?
      1. 변수명은 알파벳, 숫자, 밑줄 등을 사용하여 표현할 수 있다
      2. 변수명은 의미있는 단어로 쓰는 것을 권장하며, 한글도 사용할 수 있다
      3. 변수명은 대소문자가 구분된다
      4. 문법으로 사용되는 특별한 예약어는 변수명으로 사용하지 않는다
      5. 변수명을 “a”, “b”등으로 사용하는 것은 권장하지 않는다
    19. 다음과 같이 코드를 작성했을 때, 실행 결과를 쓰시오.
    20. x = 15 x = x+5 print(x)
    21. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 30010.5
      1. str(a*b) + str(c)
      2. str(a) + str(b) + str(c)
      3. a * b + str(c)
      4. int(a) + str(b) + str(c)
      5. a + b + c
    22. a = 10 b = 30 c =10.5 print(_________)
    23. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
      1. 10
      2. 1
      3. 5
      4. 15
      5. 11
    24. x = 1 x += 5 x = x+5 print(x)
    25. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
    26. x = 5 + 4 * 3 -2 /2 x</aside>
      • 파이썬 경험 유무, 어느 정도 알고 있는지, 1주차 잘 모르는 부분 check
      • w1 review
        • 요약
          1. 코딩이란 프로그래밍을 하는 행위이며, 프로그래밍은 프로그래밍 언어를 사용하여 프로그램을 개발하는 것이다. 프로그래밍 언어는 인간이 원하는 것을 컴퓨터로 실행시키기 위해 사용하는 컴퓨터가 이해할 수 있는 언어이다.
          2. 파이썬은 귀도 반 로섬이 개발한 언어이고 이후 다양한 기능이 추가되었다.
          3. 파이썬은 플랫폼 독립적인 언어, 인터프리터 언어, 객체 지향 언어, 동적 타이핑 언어라는 특징을 갖고 있다.
          4. 화면 입출력 함수인 input(), print()함수에 대해 배웠다.
            1. input()은 사용자로부터 값을 입력 받는 함수이고
            2. print()는 화면에 결과값을 출력하는 함수이다.
      part2 파이썬 기초학습 목표
      • 변수의 개념, 변수와 메모리의 관계에 대해 알아본다
      • 변수명을 선언하는 규칙에 대해 이해한다
      • 기본 자료형인 정수형, 실수형, 문자형, 불린형에 대해 학습한다
      • 사칙연산을 비롯한 간단한 연산을 수행한다
      • 자료형 간 변환하는 방법에 대해 알아보고, 자료형을 확인하는 방법을 학습한다
      • 01 변수의 이해우선 이 코드의 결과 값을 생각해보자
        • 결과값a+b예상한 값과 실제 값이 일치하는가?
          professor = "sungchul choi"
          print(professor)
          
          • 왼쪽에 오는 professor 는 변수이다 쉽게 말해 값을 집어 넣는 상자이다. 오른쪽에 sungchul choi는 값이다
          • 즉, 오른쪽 값을 왼쪽 변수 상자에 집어넣어라
          <aside> 💡 숫자를 제외한 문자열은 따옴표를 사용하여 하나의 값이라는 걸 말한다.
          a = 7
          b = 5
          print("a+b")
          print(a+b)
          
          • a = 7 은 7이라는 값을 a에 넣으라는 뜻, b = 5도 동일
          • print()는 괄호 안의 값을 출력하는 것
        • </aside>
        • <코드 설명>
        • 12
        • sungchul choi
        • 변수와 메모리
          • 변수 : 어떠한 값을 저장하는 장소 상자
          • 메모리: 이러한 변수를 저장하는 공간 누리관
          • 메모리 주소: 변수의 저장 위치 서울시 노원구 공릉동 &*8〰️누리관
            • 순간적으로 물리적인 공간을 확보하는 것으로 실행마다 메모리 주소는 변할 수 있음
          • 알아두면 쓸모 있는 컴퓨터의 구조 🤭
            • 주기억장치: CPU에서 처리 중인 프로그램과 데이터를 임시로 저장
            • 즉 a = 3을 코드로 작성했다면 a라는 메모리 장소에 3이라는 값을 넣어라 라고 해석할 수 있다
          • 중앙처리장치: 입력된 자료를 적절한 정보로 변환하기 위하여 소프트웨어로부터 받은 명령어를 실행하는 장치
        • 변수명 선언
          1. 다른 사람이 읽어도 이해할 수 있는 이름
            1. 프로그램은 혼자 만드는 것이 아닌 여럿이 함께 만드는 것이므로 직관적이고 의미가 담긴 단어로 만들어야 한다
          2. 파이썬은 대소문자를 구별한다
            1. professor 과 Professor은 다른 변수이다. 파이썬은 대소문자를 구별하기 때문에 반드시 기억하고 써야한다
            2. 대부분의 경우 소문자로 구성하는 것을 추천한다
          3. 단어와 단어 사이는 밑줄(_)로 이어 한 단어를 만든다
            1. 이러한 방식을 under score라고 한다
              1. under_score
              2. 주의 사항으로는 붙임표(-)를 사용하지 않는다
            2. 다른 언어에서는 camel case를 이용하기도 한다
              1. 단어와 단어의 첫 스펠링을 대문자로 사용하여 단어를 구분해준다
              2. ex) CamelCase
          4. 숫자를 사용할 수 있지만 변수명이 숫자로 시작하면 안된다
            1. 1professor 사용 불가 professor1 사용가능
          5. 예약어는 사용할 수 없다
            1. for, if, else 등 우리가 약속한 단어를 사용하면 파이썬은 오류가 난다
            2. 우리가 지정한 파일 이름도 마찬가지이다.
        • 변수명 선언 규칙
      • print() → 괄호 안의 내용을 화면에 출력하는 함수
      • professor = "sungchul choi" print(professor) a = 7 b = 5 print("a+b") print(a+b)
      • 02 자료형과 기본 연산
        • 메모리 공간
          • 공간에 대한 개념 이해이진수 한 자리를 비트라고 하며 8개의 비트는 1바이트, 1024바이트는 1킬로바이트 , 1024킬로바이트는 1메가바이트
            • 알아두면 쓸데있는 이진수
            • 컴퓨터의 메모리는 실리콘으로 만든 반도체이다. 반도체의 가장 큰 특징은 어떤 자극을 주었을 때 전기가 통할 수 있어 전류의 흐름을 제어할 수 있다는 것이다. 이러한 성질을 이용해 반도체에 전류가 흐를 때1 흐르지 않을 때0이라는 숫자로 표현할 수 있다 따라서 메모리는 전류의 흐름을 이진수로 표현하는 것이다
          • 컴퓨터는 0과 1 두가지 정보만 저장할 수 있으며 이러한 방식은 이진수를 사용한다
        • 과연 하나의 변수는 어느 정도의 메모리 공간을 사용할까?
        • 기본 자료형
          • 정수형(integer type)데이터 선언할 때: data = 1 (따로 따옴표를 사용하지 않아도 정수로 인식한다)
          • 자연수를 포함해 0,-1,-2,1,2와 같이 값의 영역이 정수로 한정된 값을 뜻한다
          • 실수형(floating-point type)
          • 10.2, 7.2와 같이 소수점이 포함된 값을 말한다. 실제로 값이 정수형이라도 9.0으로 입력하면 인터프리터는 실수형으로 해석한다
          • 문자형(string type)(따옴표는 큰 따옴표, 작은 따옴표 상관없이 편한 걸 이용하면 되지만 주로 큰 따옴표를 이용한다)
          • 값이 문자로 출력되는 자료형이다. 파이썬에서는 보통 따옴표가 들어간 정보를 문자형 데이터라고 한다. 예를 들어 코드에서 print(a+b)와 print(”a+b”)는 매우 비슷해 보이지만 결과는 전혀 다르다. 후자의 코드에서 따옴표 안에 있는 a+b는 변수가 아니라 문자열로 인식하기 때문에 a+b라는 문자가 화면에 그대로 출력되는 것을 알 수 있다.
          • 불린형(boolean type)
            • 알아두면 쓸데있는 동적 타이핑이러한 동적 타이핑의 가장 큰 장점은 유연하기에 메모리 공간도 저장되는 크기에 따라 동적으로 할당받을 수 있다이제 실제로 타입을 확인해봅시다! 🤔 type()
            • int() a = int(7)
            • 동적 타이핑이란 변수의 메모리 공간을 확보하는 행위가 프로그램 실행 시점에서 발생하는 것을 뜻한다. 일반적으로 다른 언어에서는 변수의 타입을 미리 선언하지만 파이썬은 선언을 하지 않아도 인터프리터가 알아서 판단한다. 이렇게 프로그래머가 직접 판단하는 것이 아니라 인터프리터가 직접 판단하는 것을 동적 타이핑이라 한다.
          • 불린형은 논리형이라고도 하며 참 또는 거짓을 표현할 때 사용한다. 만약 값이 true 라면 참을 의미하며, 컴퓨터에서는 1을 뜻한다. 반대로 false라면 거짓을 의미하며, 컴퓨터에서는 0을 뜻한다.
        • 메모리의 크기는 변수의 자료형에 의해 결정된다.
        • 간단한 연산
          • 연산자 : +, -, *, / 기호
          • 피연산자: 연산자에 의해 계산되는 숫자 또는 문자
          • 수학연산
              • 덧셈
              • 뺄셈
              • 곱셈
            • / 나눗셈
            • ** 제곱
          • 파이썬의 사칙연산은 수학의 사칙연산과 비슷하다. 다만 다른 점은 문자형끼리 더하는 것이 가능하다
          • 증가연산과 감소연산
            a = 2
            a += 1 #a = a+1
            print(a)
            
            a = 3
            a = a-1
            a -= 1
            print(a)
            
          • a = 1 a = a + 1 print(a)
        • 파이썬에서는 다양한 자료형을 사용하여 간단한 연산이 가능하다
      • 03 자료형 변환예를 들어 인터넷 사이트에 로그인할 때 일반적으로 숫자를 입력해야 하는데 컴퓨터는 그 값을 숫자가 아닌 문자열로 인식하는 경우가 많다. 사람이 보기에는 똑같이 보이지만 컴퓨터에서는 메모리의 용량 확보 등 인터프리터와 운영체제가 해당 데이터를 처리하는 방식이 완전히 달라진다
        • 정수형과 실수형 간 변환
          a = 10
          print(a)
          a = float(10)
          print(a)
          
          a = 10
          b = 3
          print(a/b)
          
          결과: 3.33333…
          a = int(10.7)
          b = int(10.3)
          print(a+b)
          print(a)
          print(b)
          
          결과: 20결과를 확인하면 실수형이 정수형으로 변환되어 소수점이하의 내림이 발생한다. 이 점이 기존 수학 연산과 다른 점이다.
        • 10 10
        • 인터프리터는 변수 간 계산할 때 필요하다 생각되면 스스로 정수형을 실수형으로 변환한다. 이것이 파이썬 인터프리터의 특징이다.
        • 변수의 자료형은 float() 함수나 int()함수를 사용하면 매우 간단하게 변환할 수 있다.
        • 숫자형과 문자형 간 변환
          a = '76.3' #정수형
          b = float(a)
          print(a)
          print(b)
          print(a+b)
          
          a = float(a)
          b = a
          print(a+b)
          
          a = str(a)
          b = str(b)
          print(a+b)
          
        • 문자형으로 선언된 값도 정수형이나 실수형으로 변환할 수 있다.
        • 자료형 확인하기
          a = int(10.3)
          b = float(10.3)
          c = str(10.3)
          
          print(type(a))
          print(type(b))
          print(type(c))
          
        • 실제 프로그래밍을 하다 보면 a라는 변수와 b라는 변수의 자료형이 무엇인지 헷갈릴 때 type() 함수를 사용한다
      • 실제 프로그래밍에서 앞에서 배운 4가지 타입의 자료형을 자유롭게 바꿔가며 사용해야할 때가 많다,
      chapter03 화면 입출력과 리스트
      • 01 파이썬 프로그래밍 환경
        • 사용자 인터페이스대표적인 사용자 인터페이스로 GUI가 있다
          • CLI 환경그렇지만, 우리가 주로 코딩에서 사용하게 되는 환경은 CLI 환경이라 생각하면 된다.
          • 파이참에서 명령어를 입력하는 것, 터미널에서 입력하는 것 또한 다 CLI 환경이다
          • 그러나 반대로 CLI는 마우스의 클릭이 아닌 키보드만으로 명령을 입력하는 환경이다
        • 이렇게 보기 좋게 생긴 아이콘을 클릭하면 앱이 실행된다.
        • GUI환경에서는 여러 가지 도구가 사용되는데 대표적으로 마우스와 아이콘이 있다.
        • 컴퓨터에 명령을 입력할 때 사용하는 환경을 사용자 인터페이스라고 하는데 여기에는 다양한 방식이 있다
      • 04 리스트의 이해
        • 리스트가 필요한 이유
          • 많은 변수를 만들지 않고 한 개의 변수의 모든 값을 저장 → 효율적
            • 학생 100명의 성적을 입력해야 하는데 100개의 변수를 만든다면 코드가 길어지고 번거로움
        • 리스트의 개념
          • 리스트는 하나의 변수에 여러 값을 저장하는 자료형이다.
          • 하나의 변수의 여러가지 값을 저장하는 기법을 시퀀스 자료형이라고 한다.
          • 시퀀스 자료형은 여러 자료를 순서대로 넣는다는 뜻이다. (순서가 있다는 것만 인지할 것)
            • 예를 들어, 국어, 수학, 영어 점수를 순서없이 넣으면 뭐가 국어 점수인지 알 수 없다.
          • 다양한 자료형을 같이 넣을 수 있다
            • [100,숫자, false]
        • 인덱싱과 슬라이싱
          • 인덱싱(indexing)간단히 말해, 첫번째 값을 0으로 했을 때 첫번째 값과 얼마나 떨어져 있는지를 나타낸 것<aside> 💡 len()은 length의 준말로 리스트의 길이 반환하는 함수 → 여기서는 값 3개를 반환했음
          • </aside>
          • colors = ['red', 'blue', 'green'] print(colors[0]) print(colors[2]) print(len(colors))
          • 인덱싱이란 리스트에 저장되어 있는 값에 접근하기 위해 이 값의 상대적인 주소를 사용하는 것
          • 슬라이싱(slicing)
            cities = ['서울', '부산', '인천', '대구', '광주', '울산', '수원']
            
            기본 문법: 변수명[시작인덱스:마지막인덱스]
            • e.g.) cities[0:6]
              • indexing부산 1대구 3울산 5
              • 수원 6
              • 광주 4
              • 인천 2
              • 서울 0
              • 예상 정답</aside>[’서울’, ‘부산’, ‘인천’, ‘대구’, ‘광주’]
              • 마지막인덱스-1 까지만 출력된다는 점 잊지 말자
              • 실제 정답은 울산까지 출력됩니다
              • <aside> 👧🏻 수원까지 입니다!
          • 슬라이싱이란 리스트의 인덱스 기능을 사용하여 전체 리스트에서 일부를 잘라내어 사용하는 것이다.
          • 리버스 인덱싱(reverse index)마지막 값에 -1 할당
            • e.g.)부산 -7대구 -5광주 -3수원 -1
            • 울산 -2
            • 대전 -4
            • 인천 -6
            • 서울 -8
          • 인덱스를 첫번째 값이 아닌 마지막 값부터 시작하는 방식
          • 추가로 알아두면 좋은 것
            • 인덱스 범위를 넘어가는 슬라이싱cities[-50:50] → 인덱싱 범위를 넘어가면 최대 범위인 처음부터 끝까지 출력
            • cities[:] → 인덱싱 범위를 지정하지 않으면 처음부터 끝까지 출력
            • 증가값
              cities = ['서울', '부산', '인천', '대구','대전', '광주', '울산', '수원']
              
              cities[::2] →서울, 인천, 대전, 울산
            • 변수명[시작인덱스:마지막인덱스:증가값]
        • 리스트의 연산
          • 덧셈 연산
          • color1 = ['orange',’red’, 'blue','black', 'green','white'] color2 = ['orange1, ’black’, 'white'] print(colorl + color2) # 두 리스트. 합치기 -> ['red', ’blue’, ’green', 'orange', 'black1, 'white'] len(color1) # 리스트 길이 -> 3 total_color = colorl + color2 -> ['red', ’blue', ’green', ’orange', 'black', 'white']
          • 곱셈 연산
          • colorl = [’red’, 'blue', 'green'] color2 = ['orange1', ’black’, 'white'] print(colorl + color2) # 두 리스트. 합치기 -> ['red', ’blue’, ’green', 'orange', 'black1', 'white'] len(colorl) # 리A트 길이 -> 3 total_color = colorl + color2 -> ['red', ’blue', ’green', ’orange', 'black', 'white'] color1 * 2 -> [’red’, 'blue', 'green',’red’, 'blue', 'green']
          • in 연산
            color2 = ['orange', 'black’, 'white']
            'blue' in color2
            
            -> false
            
          • 포함 여부를 확인하는 연산
        • 리스트 추가 및 삭제
        • 패킹과 언패킹언패킹: 한 변수에 여러 개의 데이터가 들어있을 때 그것을 각각의 변수로 반환하는 방법
          • 만약 리스트의 값이 3개이고 5개로 언패킹을 시도하면 오류가 난다! (개수가 같아야 하는 점 잊지 말자)
          t = [1,2,3]
          a,b,c = t
          print(t,a,b,c)
          
          결과값: [1,2,3] 1 2 3
        • 패킹: 한 변수에 여러 개의 데이터를 할당하는 그 자체
        • 이차원 리스트행렬의 개념과 비슷 (행렬을 배운 적이 있나…요? 기초수학과 선형대수학에서 배웁니다!)결과값: [[49,79,20,100,80], [43,59,85,30,90],[49,79,48,60,100]]코드를 시각화한 결과값
        • print(midterm_score[0][2])
        • kor_score = [49,79,20,100,80] math_score = [43,59,85,30,90] eng_score = [49,79,48,60,100] midterm_score = [kor_score, math_score, eng_score] midterm_score
        • 이차원 리스트는 리스트를 효율적 활용하기 위해 여러개의 리스트를 하나의 변수에 할당
      • 05 리스트의 메모리 관리 방식
        • 리스트의 메모리 저장
          • 리스트는 안에는 값 자체를 저장하는 구조가 아니라 그 값이 위치한 메모리의 주소에 주소값을 저장
          a = 300
          b = 300
          a is b
          a == b
          
          == 은 값을 비교하는 연산이고 is는 메모리의 주소를 비교하는 연산이다
          a = 1
          b = 1
          a is b
          a == b
          
          파이썬의 정수형 저장 방식의 특성때문!
          • 파이썬은 인터프리터(아나콘다)가 구동될 때, -5〰️256까지의 정수값을 특정 메모리 주소에 저장
            • 따라서 이 범위 내에 존재하는 정수값(int)는 True값이 나올 수 있는 것이다
            • 이 개념은 조금 어려울 수 있어 이런 게 있다 정도만 지금 알아두는 것정도로 충분하다 컴퓨터 시스템에 대한 이해를 한 뒤, 그때 다시 들으면 이해가 잘 될 것이다
        • 메모리 저장 구조로 인한 리스트 특징
          • 하나의 리스트에 다양한 자료형 포함 가능
          • a = ["color", 1, 0.2]
          • 리스트의 저장 방식
            a.sort()
            print(b)
            
            ⇒ a를 정렬했는데 b도 정렬되었다. 그 이유는 b=a를 입력한 순간 b에도 a 리스트의 메모리 주소가 저장되었다. 둘 다 동일한 메모리 주소를 가르키고 있으므로 실제로는 하나만 변경했지만 둘 다 변경된 리스트의 값을 보여주게 된다b 변수 내 a의 주소가 이미 있기 때문에 a의 주소에서 변경되어 마찬가지로 둘 다 변경</aside>
          • 포인트는 b = a 라는 걸 잊지 말자
          • <aside> 💡 b를 정렬하는 경우는 a의 값이 바뀌지 않을 거라고 생각했다면 경기도 오산!
          • a = [5,4,3,2,1] b = [1,2,3,4,5] b=a print(b)
      • 요약
        1. 변수는 프로그래밍에서 특정한 값을 저장하는 공간의 이름을 뜻한다
        2. 변수에 값을 넣으라고 선언하는 순간 메모리 어딘가에 물리적인 공간을 확보할 수 있도록 운영체제와 파이썬 인터프리터가 협력하여 메모리 저장 위치를 할당한다. 이 위치를 메모리 주소라고 한다.
        3. 변수명 선언 규칙
          1. 다른 사람이 읽어도 이해할 수 있는 이름
          2. 파이썬은 대소문자를 구별한다 (대소문자 구별하여 쓰기)
          3. 단어와 단어 사이는 밑줄(_)로 이어 한 단어를 만든다
          4. 숫자를 사용할 수 있지만 변수명이 숫자로 시작하면 안된다
          5. 예약어는 사용할 수 없다
        4. 자료형의 종류
          1. 정수형
          2. 실수형
          3. 문자형
          4. 불린형
        5. 파이썬의 덧셈 연산자는 +, -, *, / 사용한다
        6. 파이썬에서 제곱승을 구하는 연산자는 **이다
        7. 파이썬에서 몫을 반환하는 연산자는 //이고 나머지 연산자는 %이다
        8. 증가 연산자는 +=, 감소 연산자는 -=이다
        9. 변수의 자료형은 float() 나 int() 함수를 사용하여 매우 간단하게 변환할 수 있다
        10. 문자형으로 선언된 값도 정수형이나 실수형으로 변환할 수 있다
        11. 자료형을 확인할 수 있는 함수는 type()이다
      • 과제
        1. 다음과 같은 코드 작성 시, 빈 칸에 들어갈 수 없는 코드를 고르시오
          1. a≤b
          2. a≠int(b)
          3. str(a)≠b
          4. a is not int(b)
          5. int(a) ≥ int(b)
        2. a = 20 b = '10' print(________) True
        3. 다음 중 변수를 메모리에서 삭제하기 위해 사용하는 명령어는?
          1. remove
          2. clear
          3. del
          4. pop
          5. delate
        4. 입력받은 섭씨온도를 화씨온도로 변환하는 프로그램을 코딩하려고 한다. 코드 순서를 바르게 나열하시오.
          1. fahrenheit = ((9/5) * celsius) + 32
          2. celsius = input(”섭씨온도를 입력하세요:”)
          3. print(”섭씨온도:”, celsius, “화씨온도:”, fahrenheit)
          4. celsius = float(input(”섭씨온도를 입력하세요:”))
        5. 다음 중 파이썬의 변수명으로 적절치 않은 것은?
          1. ABC1982
          2. abc1982
          3. 1982abc
          4. abc_23
          5. _23abc
        6. box = “apple”의 뜻은?
          1. box 변수의 이름은 apple이다
          2. box 변수에 apple 값을 넣어라
          3. box 변수와 apple은 같다
          4. box 변수는 apple이다
          5. apple 변수는 box이다
        7. 다음과 같이 코드를 작성했을 때, 실행결과로 알맞은 것은?
          1. 에러 발생
          2. 1.51.51.51.5
          3. 6.0
          4. 6
          5. “6”
        8. a = "1.5" b = 4 print(a*b)
        9. 변수에 대한 설명으로 틀린 것은?
          1. 프로그램에서 사용하기 위한 특정한 값을 저장하는 공간이다
          2. 선언되는 순간 메모리의 특정 영역에 공간이 할당된다
          3. 변수에 할당된 값은 하드디스크에 저장된다
          4. A=8은 “A는 8이다”라는 뜻은 아니다
          5. ‘2x+7y’는 14라고 하면, 이 식에서 x,y는 변수이다
        10. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
          1. 0.53
          2. 530
          3. 512
          4. 3
          5. 5
        11. a = 53%10 print(a)
        12. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
          1. <class’float’>
          2. <class ‘int’>
          3. <class ‘str’>
          4. TypeError
          5. 025
        13. a = "10" b = "40" print(type(float(a/b)))
        14. 다음 코드의 실행 결과로 알맞은 것을 고르시오
          1. <class’integer’>
          2. <class’int’>
          3. <class’str’>
          4. <class’string’>
          5. <class’float’>
        15. a = 572 print(type(a))
        16. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 2.12.12.1
          1. int(a)*b
          2. a*b
          3. a*int(b)
          4. int(a)*int(b)
          5. float(a)*b
        17. a = '3' b = '2.1' print(___________)
        18. 변수명을 지을 때 권장하는 규칙 중 틀린 것은?
          1. 변수명은 알파벳, 숫자, 밑줄 등을 사용하여 표현할 수 있다
          2. 변수명은 의미있는 단어로 쓰는 것을 권장하며, 한글도 사용할 수 있다
          3. 변수명은 대소문자가 구분된다
          4. 문법으로 사용되는 특별한 예약어는 변수명으로 사용하지 않는다
          5. 변수명을 “a”, “b”등으로 사용하는 것은 권장하지 않는다
        19. 다음과 같이 코드를 작성했을 때, 실행 결과를 쓰시오.
        20. x = 15 x = x+5 print(x)
        21. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 30010.5
          1. str(a*b) + str(c)
          2. str(a) + str(b) + str(c)
          3. a * b + str(c)
          4. int(a) + str(b) + str(c)
          5. a + b + c
        22. a = 10 b = 30 c =10.5 print(_________)
        23. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
          1. 10
          2. 1
          3. 5
          4. 15
          5. 11
          •  
        24. 니라 그 값이 위치한 메모리의 주소에 주소값을 저장
                  a = 300
                  b = 300
                  a is b
                  a == b
                  
                  == 은 값을 비교하는 연산이고 is는 메모리의 주소를 비교하는 연산이다
                  a = 1
                  b = 1
                  a is b
                  a == b
                  
                  파이썬의 정수형 저장 방식의 특성때문!
                  • 파이썬은 인터프리터(아나콘다)가 구동될 때, -5〰️256까지의 정수값을 특정 메모리 주소에 저장
                    • 따라서 이 범위 내에 존재하는 정수값(int)는 True값이 나올 수 있는 것이다
                    • 이 개념은 조금 어려울 수 있어 이런 게 있다 정도만 지금 알아두는 것정도로 충분하다 컴퓨터 시스템에 대한 이해를 한 뒤, 그때 다시 들으면 이해가 잘 될 것이다
                • 메모리 저장 구조로 인한 리스트 특징
                  • 하나의 리스트에 다양한 자료형 포함 가능
                  • a = ["color", 1, 0.2]
                  • 리스트의 저장 방식
                    a.sort()
                    print(b)
                    
                    ⇒ a를 정렬했는데 b도 정렬되었다. 그 이유는 b=a를 입력한 순간 b에도 a 리스트의 메모리 주소가 저장되었다. 둘 다 동일한 메모리 주소를 가르키고 있으므로 실제로는 하나만 변경했지만 둘 다 변경된 리스트의 값을 보여주게 된다b 변수 내 a의 주소가 이미 있기 때문에 a의 주소에서 변경되어 마찬가지로 둘 다 변경</aside>
                  • 포인트는 b = a 라는 걸 잊지 말자
                  • <aside> 💡 b를 정렬하는 경우는 a의 값이 바뀌지 않을 거라고 생각했다면 경기도 오산!
                  • a = [5,4,3,2,1] b = [1,2,3,4,5] b=a print(b)
              • 요약
                1. 변수는 프로그래밍에서 특정한 값을 저장하는 공간의 이름을 뜻한다
                2. 변수에 값을 넣으라고 선언하는 순간 메모리 어딘가에 물리적인 공간을 확보할 수 있도록 운영체제와 파이썬 인터프리터가 협력하여 메모리 저장 위치를 할당한다. 이 위치를 메모리 주소라고 한다.
                3. 변수명 선언 규칙
                  1. 다른 사람이 읽어도 이해할 수 있는 이름
                  2. 파이썬은 대소문자를 구별한다 (대소문자 구별하여 쓰기)
                  3. 단어와 단어 사이는 밑줄(_)로 이어 한 단어를 만든다
                  4. 숫자를 사용할 수 있지만 변수명이 숫자로 시작하면 안된다
                  5. 예약어는 사용할 수 없다
                4. 자료형의 종류
                  1. 정수형
                  2. 실수형
                  3. 문자형
                  4. 불린형
                5. 파이썬의 덧셈 연산자는 +, -, *, / 사용한다
                6. 파이썬에서 제곱승을 구하는 연산자는 **이다
                7. 파이썬에서 몫을 반환하는 연산자는 //이고 나머지 연산자는 %이다
                8. 증가 연산자는 +=, 감소 연산자는 -=이다
                9. 변수의 자료형은 float() 나 int() 함수를 사용하여 매우 간단하게 변환할 수 있다
                10. 문자형으로 선언된 값도 정수형이나 실수형으로 변환할 수 있다
                11. 자료형을 확인할 수 있는 함수는 type()이다
              • 과제
                1. 다음과 같은 코드 작성 시, 빈 칸에 들어갈 수 없는 코드를 고르시오
                  1. a≤b
                  2. a≠int(b)
                  3. str(a)≠b
                  4. a is not int(b)
                  5. int(a) ≥ int(b)
                2. a = 20 b = '10' print(________) True
                3. 다음 중 변수를 메모리에서 삭제하기 위해 사용하는 명령어는?
                  1. remove
                  2. clear
                  3. del
                  4. pop
                  5. delate
                4. 입력받은 섭씨온도를 화씨온도로 변환하는 프로그램을 코딩하려고 한다. 코드 순서를 바르게 나열하시오.
                  1. fahrenheit = ((9/5) * celsius) + 32
                  2. celsius = input(”섭씨온도를 입력하세요:”)
                  3. print(”섭씨온도:”, celsius, “화씨온도:”, fahrenheit)
                  4. celsius = float(input(”섭씨온도를 입력하세요:”))
                5. 다음 중 파이썬의 변수명으로 적절치 않은 것은?
                  1. ABC1982
                  2. abc1982
                  3. 1982abc
                  4. abc_23
                  5. _23abc
                6. box = “apple”의 뜻은?
                  1. box 변수의 이름은 apple이다
                  2. box 변수에 apple 값을 넣어라
                  3. box 변수와 apple은 같다
                  4. box 변수는 apple이다
                  5. apple 변수는 box이다
                7. 다음과 같이 코드를 작성했을 때, 실행결과로 알맞은 것은?
                  1. 에러 발생
                  2. 1.51.51.51.5
                  3. 6.0
                  4. 6
                  5. “6”
                8. a = "1.5" b = 4 print(a*b)
                9. 변수에 대한 설명으로 틀린 것은?
                  1. 프로그램에서 사용하기 위한 특정한 값을 저장하는 공간이다
                  2. 선언되는 순간 메모리의 특정 영역에 공간이 할당된다
                  3. 변수에 할당된 값은 하드디스크에 저장된다
                  4. A=8은 “A는 8이다”라는 뜻은 아니다
                  5. ‘2x+7y’는 14라고 하면, 이 식에서 x,y는 변수이다
                10. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                  1. 0.53
                  2. 530
                  3. 512
                  4. 3
                  5. 5
                11. a = 53%10 print(a)
                12. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                  1. <class’float’>
                  2. <class ‘int’>
                  3. <class ‘str’>
                  4. TypeError
                  5. 025
                13. a = "10" b = "40" print(type(float(a/b)))
                14. 다음 코드의 실행 결과로 알맞은 것을 고르시오
                  1. <class’integer’>
                  2. <class’int’>
                  3. <class’str’>
                  4. <class’string’>
                  5. <class’float’>
                15. a = 572 print(type(a))
                16. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 2.12.12.1
                  1. int(a)*b
                  2. a*b
                  3. a*int(b)
                  4. int(a)*int(b)
                  5. float(a)*b
                17. a = '3' b = '2.1' print(___________)
                18. 변수명을 지을 때 권장하는 규칙 중 틀린 것은?
                  1. 변수명은 알파벳, 숫자, 밑줄 등을 사용하여 표현할 수 있다
                  2. 변수명은 의미있는 단어로 쓰는 것을 권장하며, 한글도 사용할 수 있다
                  3. 변수명은 대소문자가 구분된다
                  4. 문법으로 사용되는 특별한 예약어는 변수명으로 사용하지 않는다
                  5. 변수명을 “a”, “b”등으로 사용하는 것은 권장하지 않는다
                19. 다음과 같이 코드를 작성했을 때, 실행 결과를 쓰시오.
                20. x = 15 x = x+5 print(x)
                21. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 30010.5
                  1. str(a*b) + str(c)
                  2. str(a) + str(b) + str(c)
                  3. a * b + str(c)
                  4. int(a) + str(b) + str(c)
                  5. a + b + c
                22. a = 10 b = 30 c =10.5 print(_________)
                23. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                  1. 10
                  2. 1
                  3. 5
                  4. 15
                  5. 11
                24. x = 1 x += 5 x = x+5 print(x)
                25. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                26. x = 5 + 4 * 3 -2 /2 x</aside>
                  •  
                    1. 다음과 같이 코드를 작성했을 때, 실행결과로 알맞은 것은?
                      1. 에러 발생
                      2. 1.51.51.51.5
                      3. 6.0
                      4. 6
                      5. “6”
                    2. a = "1.5" b = 4 print(a*b)
                    3. 변수에 대한 설명으로 틀린 것은?
                      1. 프로그램에서 사용하기 위한 특정한 값을 저장하는 공간이다
                      2. 선언되는 순간 메모리의 특정 영역에 공간이 할당된다
                      3. 변수에 할당된 값은 하드디스크에 저장된다
                      4. A=8은 “A는 8이다”라는 뜻은 아니다
                      5. ‘2x+7y’는 14라고 하면, 이 식에서 x,y는 변수이다
                    4. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                      1. 0.53
                      2. 530
                      3. 512
                      4. 3
                      5. 5
                    5. a = 53%10 print(a)
                    6. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                      1. <class’float’>
                      2. <class ‘int’>
                      3. <class ‘str’>
                      4. TypeError
                      5. 025
                    7. a = "10" b = "40" print(type(float(a/b)))
                    8. 다음 코드의 실행 결과로 알맞은 것을 고르시오
                      1. <class’integer’>
                      2. <class’int’>
                      3. <class’str’>
                      4. <class’string’>
                      5. <class’float’>
                    9. a = 572 print(type(a))
                    10. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 2.12.12.1
                      1. int(a)*b
                      2. a*b
                      3. a*int(b)
                      4. int(a)*int(b)
                      5. float(a)*b
                    11. a = '3' b = '2.1' print(___________)
                    12. 변수명을 지을 때 권장하는 규칙 중 틀린 것은?
                      1. 변수명은 알파벳, 숫자, 밑줄 등을 사용하여 표현할 수 있다
                      2. 변수명은 의미있는 단어로 쓰는 것을 권장하며, 한글도 사용할 수 있다
                      3. 변수명은 대소문자가 구분된다
                      4. 문법으로 사용되는 특별한 예약어는 변수명으로 사용하지 않는다
                      5. 변수명을 “a”, “b”등으로 사용하는 것은 권장하지 않는다
                    13. 다음과 같이 코드를 작성했을 때, 실행 결과를 쓰시오.
                    14. x = 15 x = x+5 print(x)
                    15. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 30010.5
                      1. str(a*b) + str(c)
                      2. str(a) + str(b) + str(c)
                      3. a * b + str(c)
                      4. int(a) + str(b) + str(c)
                      5. a + b + c
                    16. a = 10 b = 30 c =10.5 print(_________)
                    17. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                      1. 10
                      2. 1
                      3. 5
                      4. 15
                      5. 11
                    18. x = 1 x += 5 x = x+5 print(x)
                    19. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                    20. x = 5 + 4 * 3 -2 /2 x</aside>
                            •  
                        •  
                        •  
                        •  
                        1.  
                          1. clear
                          2. del
                          3. pop
                          4. delate
                        1. 입력받은 섭씨온도를 화씨온도로 변환하는 프로그램을 코딩하려고 한다. 코드 순서를 바르게 나열하시오.
                          1. fahrenheit = ((9/5) * celsius) + 32
                          2. celsius = input(”섭씨온도를 입력하세요:”)
                          3. print(”섭씨온도:”, celsius, “화씨온도:”, fahrenheit)
                          4. celsius = float(input(”섭씨온도를 입력하세요:”))
                        2. 다음 중 파이썬의 변수명으로 적절치 않은 것은?
                          1. ABC1982
                          2. abc1982
                          3. 1982abc
                          4. abc_23
                          5. _23abc
                        3. box = “apple”의 뜻은?
                          1. box 변수의 이름은 apple이다
                          2. box 변수에 apple 값을 넣어라
                          3. box 변수와 apple은 같다
                          4. box 변수는 apple이다
                          5. apple 변수는 box이다
                        4. 다음과 같이 코드를 작성했을 때, 실행결과로 알맞은 것은?
                          1. 에러 발생
                          2. 1.51.51.51.5
                          3. 6.0
                          4. 6
                          5. “6”
                        5. a = "1.5" b = 4 print(a*b)
                        6. 변수에 대한 설명으로 틀린 것은?
                          1. 프로그램에서 사용하기 위한 특정한 값을 저장하는 공간이다
                          2. 선언되는 순간 메모리의 특정 영역에 공간이 할당된다
                          3. 변수에 할당된 값은 하드디스크에 저장된다
                          4. A=8은 “A는 8이다”라는 뜻은 아니다
                          5. ‘2x+7y’는 14라고 하면, 이 식에서 x,y는 변수이다
                        7. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                          1. 0.53
                          2. 530
                          3. 512
                          4. 3
                          5. 5
                        8. a = 53%10 print(a)
                        9. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                          1. <class’float’>
                          2. <class ‘int’>
                          3. <class ‘str’>
                          4. TypeError
                          5. 025
                        10. a = "10" b = "40" print(type(float(a/b)))
                        11. 다음 코드의 실행 결과로 알맞은 것을 고르시오
                          1. <class’integer’>
                          2. <class’int’>
                          3. <class’str’>
                          4. <class’string’>
                          5. <class’float’>
                        12. a = 572 print(type(a))
                        13. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 2.12.12.1
                          1. int(a)*b
                          2. a*b
                          3. a*int(b)
                          4. int(a)*int(b)
                          5. float(a)*b
                        14. a = '3' b = '2.1' print(___________)
                        15. 변수명을 지을 때 권장하는 규칙 중 틀린 것은?
                          1. 변수명은 알파벳, 숫자, 밑줄 등을 사용하여 표현할 수 있다
                          2. 변수명은 의미있는 단어로 쓰는 것을 권장하며, 한글도 사용할 수 있다
                          3. 변수명은 대소문자가 구분된다
                          4. 문법으로 사용되는 특별한 예약어는 변수명으로 사용하지 않는다
                          5. 변수명을 “a”, “b”등으로 사용하는 것은 권장하지 않는다
                        16. 다음과 같이 코드를 작성했을 때, 실행 결과를 쓰시오.
                        17. x = 15 x = x+5 print(x)
                        18. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 30010.5
                          1. str(a*b) + str(c)
                          2. str(a) + str(b) + str(c)
                          3. a * b + str(c)
                          4. int(a) + str(b) + str(c)
                          5. a + b + c
                        19. a = 10 b = 30 c =10.5 print(_________)
                        20. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                          1. 10
                          2. 1
                          3. 5
                          4. 15
                          5. 11
                        21. x = 1 x += 5 x = x+5 print(x)
                        22. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                        23. x = 5 + 4 * 3 -2 /2 x</aside>
                          • 파이썬 경험 유무, 어느 정도 알고 있는지, 1주차 잘 모르는 부분 check
                          • w1 review
                            • 요약
                              1. 코딩이란 프로그래밍을 하는 행위이며, 프로그래밍은 프로그래밍 언어를 사용하여 프로그램을 개발하는 것이다. 프로그래밍 언어는 인간이 원하는 것을 컴퓨터로 실행시키기 위해 사용하는 컴퓨터가 이해할 수 있는 언어이다.
                              2. 파이썬은 귀도 반 로섬이 개발한 언어이고 이후 다양한 기능이 추가되었다.
                              3. 파이썬은 플랫폼 독립적인 언어, 인터프리터 언어, 객체 지향 언어, 동적 타이핑 언어라는 특징을 갖고 있다.
                              4. 화면 입출력 함수인 input(), print()함수에 대해 배웠다.
                                1. input()은 사용자로부터 값을 입력 받는 함수이고
                                2. print()는 화면에 결과값을 출력하는 함수이다.
                          part2 파이썬 기초학습 목표
                          • 변수의 개념, 변수와 메모리의 관계에 대해 알아본다
                          • 변수명을 선언하는 규칙에 대해 이해한다
                          • 기본 자료형인 정수형, 실수형, 문자형, 불린형에 대해 학습한다
                          • 사칙연산을 비롯한 간단한 연산을 수행한다
                          • 자료형 간 변환하는 방법에 대해 알아보고, 자료형을 확인하는 방법을 학습한다
                          • 01 변수의 이해우선 이 코드의 결과 값을 생각해보자
                            • 결과값a+b예상한 값과 실제 값이 일치하는가?
                              professor = "sungchul choi"
                              print(professor)
                              
                              • 왼쪽에 오는 professor 는 변수이다 쉽게 말해 값을 집어 넣는 상자이다. 오른쪽에 sungchul choi는 값이다
                              • 즉, 오른쪽 값을 왼쪽 변수 상자에 집어넣어라
                              <aside> 💡 숫자를 제외한 문자열은 따옴표를 사용하여 하나의 값이라는 걸 말한다.
                              a = 7
                              b = 5
                              print("a+b")
                              print(a+b)
                              
                              • a = 7 은 7이라는 값을 a에 넣으라는 뜻, b = 5도 동일
                              • print()는 괄호 안의 값을 출력하는 것
                            • </aside>
                            • <코드 설명>
                            • 12
                            • sungchul choi
                            • 변수와 메모리
                              • 변수 : 어떠한 값을 저장하는 장소 상자
                              • 메모리: 이러한 변수를 저장하는 공간 누리관
                              • 메모리 주소: 변수의 저장 위치 서울시 노원구 공릉동 &*8〰️누리관
                                • 순간적으로 물리적인 공간을 확보하는 것으로 실행마다 메모리 주소는 변할 수 있음
                              • 알아두면 쓸모 있는 컴퓨터의 구조 🤭
                                • 주기억장치: CPU에서 처리 중인 프로그램과 데이터를 임시로 저장
                                • 즉 a = 3을 코드로 작성했다면 a라는 메모리 장소에 3이라는 값을 넣어라 라고 해석할 수 있다
                              • 중앙처리장치: 입력된 자료를 적절한 정보로 변환하기 위하여 소프트웨어로부터 받은 명령어를 실행하는 장치
                            • 변수명 선언
                              1. 다른 사람이 읽어도 이해할 수 있는 이름
                                1. 프로그램은 혼자 만드는 것이 아닌 여럿이 함께 만드는 것이므로 직관적이고 의미가 담긴 단어로 만들어야 한다
                              2. 파이썬은 대소문자를 구별한다
                                1. professor 과 Professor은 다른 변수이다. 파이썬은 대소문자를 구별하기 때문에 반드시 기억하고 써야한다
                                2. 대부분의 경우 소문자로 구성하는 것을 추천한다
                              3. 단어와 단어 사이는 밑줄(_)로 이어 한 단어를 만든다
                                1. 이러한 방식을 under score라고 한다
                                  1. under_score
                                  2. 주의 사항으로는 붙임표(-)를 사용하지 않는다
                                2. 다른 언어에서는 camel case를 이용하기도 한다
                                  1. 단어와 단어의 첫 스펠링을 대문자로 사용하여 단어를 구분해준다
                                  2. ex) CamelCase
                              4. 숫자를 사용할 수 있지만 변수명이 숫자로 시작하면 안된다
                                1. 1professor 사용 불가 professor1 사용가능
                              5. 예약어는 사용할 수 없다
                                1. for, if, else 등 우리가 약속한 단어를 사용하면 파이썬은 오류가 난다
                                2. 우리가 지정한 파일 이름도 마찬가지이다.
                            • 변수명 선언 규칙
                          • print() → 괄호 안의 내용을 화면에 출력하는 함수
                          • professor = "sungchul choi" print(professor) a = 7 b = 5 print("a+b") print(a+b)
                          • 02 자료형과 기본 연산
                            • 메모리 공간
                              • 공간에 대한 개념 이해이진수 한 자리를 비트라고 하며 8개의 비트는 1바이트, 1024바이트는 1킬로바이트 , 1024킬로바이트는 1메가바이트
                                • 알아두면 쓸데있는 이진수
                                • 컴퓨터의 메모리는 실리콘으로 만든 반도체이다. 반도체의 가장 큰 특징은 어떤 자극을 주었을 때 전기가 통할 수 있어 전류의 흐름을 제어할 수 있다는 것이다. 이러한 성질을 이용해 반도체에 전류가 흐를 때1 흐르지 않을 때0이라는 숫자로 표현할 수 있다 따라서 메모리는 전류의 흐름을 이진수로 표현하는 것이다
                              • 컴퓨터는 0과 1 두가지 정보만 저장할 수 있으며 이러한 방식은 이진수를 사용한다
                            • 과연 하나의 변수는 어느 정도의 메모리 공간을 사용할까?
                            • 기본 자료형
                              • 정수형(integer type)데이터 선언할 때: data = 1 (따로 따옴표를 사용하지 않아도 정수로 인식한다)
                              • 자연수를 포함해 0,-1,-2,1,2와 같이 값의 영역이 정수로 한정된 값을 뜻한다
                              • 실수형(floating-point type)
                              • 10.2, 7.2와 같이 소수점이 포함된 값을 말한다. 실제로 값이 정수형이라도 9.0으로 입력하면 인터프리터는 실수형으로 해석한다
                              • 문자형(string type)(따옴표는 큰 따옴표, 작은 따옴표 상관없이 편한 걸 이용하면 되지만 주로 큰 따옴표를 이용한다)
                              • 값이 문자로 출력되는 자료형이다. 파이썬에서는 보통 따옴표가 들어간 정보를 문자형 데이터라고 한다. 예를 들어 코드에서 print(a+b)와 print(”a+b”)는 매우 비슷해 보이지만 결과는 전혀 다르다. 후자의 코드에서 따옴표 안에 있는 a+b는 변수가 아니라 문자열로 인식하기 때문에 a+b라는 문자가 화면에 그대로 출력되는 것을 알 수 있다.
                              • 불린형(boolean type)
                                • 알아두면 쓸데있는 동적 타이핑이러한 동적 타이핑의 가장 큰 장점은 유연하기에 메모리 공간도 저장되는 크기에 따라 동적으로 할당받을 수 있다이제 실제로 타입을 확인해봅시다! 🤔 type()
                                • int() a = int(7)
                                • 동적 타이핑이란 변수의 메모리 공간을 확보하는 행위가 프로그램 실행 시점에서 발생하는 것을 뜻한다. 일반적으로 다른 언어에서는 변수의 타입을 미리 선언하지만 파이썬은 선언을 하지 않아도 인터프리터가 알아서 판단한다. 이렇게 프로그래머가 직접 판단하는 것이 아니라 인터프리터가 직접 판단하는 것을 동적 타이핑이라 한다.
                              • 불린형은 논리형이라고도 하며 참 또는 거짓을 표현할 때 사용한다. 만약 값이 true 라면 참을 의미하며, 컴퓨터에서는 1을 뜻한다. 반대로 false라면 거짓을 의미하며, 컴퓨터에서는 0을 뜻한다.
                            • 메모리의 크기는 변수의 자료형에 의해 결정된다.
                            • 간단한 연산
                              • 연산자 : +, -, *, / 기호
                              • 피연산자: 연산자에 의해 계산되는 숫자 또는 문자
                              • 수학연산
                                  • 덧셈
                                  • 뺄셈
                                  • 곱셈
                                • / 나눗셈
                                • ** 제곱
                              • 파이썬의 사칙연산은 수학의 사칙연산과 비슷하다. 다만 다른 점은 문자형끼리 더하는 것이 가능하다
                              • 증가연산과 감소연산
                                a = 2
                                a += 1 #a = a+1
                                print(a)
                                
                                a = 3
                                a = a-1
                                a -= 1
                                print(a)
                                
                              • a = 1 a = a + 1 print(a)
                            • 파이썬에서는 다양한 자료형을 사용하여 간단한 연산이 가능하다
                          • 03 자료형 변환예를 들어 인터넷 사이트에 로그인할 때 일반적으로 숫자를 입력해야 하는데 컴퓨터는 그 값을 숫자가 아닌 문자열로 인식하는 경우가 많다. 사람이 보기에는 똑같이 보이지만 컴퓨터에서는 메모리의 용량 확보 등 인터프리터와 운영체제가 해당 데이터를 처리하는 방식이 완전히 달라진다
                            • 정수형과 실수형 간 변환
                              a = 10
                              print(a)
                              a = float(10)
                              print(a)
                              
                              a = 10
                              b = 3
                              print(a/b)
                              
                              결과: 3.33333…
                              a = int(10.7)
                              b = int(10.3)
                              print(a+b)
                              print(a)
                              print(b)
                              
                              결과: 20결과를 확인하면 실수형이 정수형으로 변환되어 소수점이하의 내림이 발생한다. 이 점이 기존 수학 연산과 다른 점이다.
                            • 10 10
                            • 인터프리터는 변수 간 계산할 때 필요하다 생각되면 스스로 정수형을 실수형으로 변환한다. 이것이 파이썬 인터프리터의 특징이다.
                            • 변수의 자료형은 float() 함수나 int()함수를 사용하면 매우 간단하게 변환할 수 있다.
                            • 숫자형과 문자형 간 변환
                              a = '76.3' #정수형
                              b = float(a)
                              print(a)
                              print(b)
                              print(a+b)
                              
                              a = float(a)
                              b = a
                              print(a+b)
                              
                              a = str(a)
                              b = str(b)
                              print(a+b)
                              
                            • 문자형으로 선언된 값도 정수형이나 실수형으로 변환할 수 있다.
                            • 자료형 확인하기
                              a = int(10.3)
                              b = float(10.3)
                              c = str(10.3)
                              
                              print(type(a))
                              print(type(b))
                              print(type(c))
                              
                            • 실제 프로그래밍을 하다 보면 a라는 변수와 b라는 변수의 자료형이 무엇인지 헷갈릴 때 type() 함수를 사용한다
                          • 실제 프로그래밍에서 앞에서 배운 4가지 타입의 자료형을 자유롭게 바꿔가며 사용해야할 때가 많다,
                          chapter03 화면 입출력과 리스트
                          • 01 파이썬 프로그래밍 환경
                            • 사용자 인터페이스대표적인 사용자 인터페이스로 GUI가 있다
                              • CLI 환경그렇지만, 우리가 주로 코딩에서 사용하게 되는 환경은 CLI 환경이라 생각하면 된다.
                              • 파이참에서 명령어를 입력하는 것, 터미널에서 입력하는 것 또한 다 CLI 환경이다
                              • 그러나 반대로 CLI는 마우스의 클릭이 아닌 키보드만으로 명령을 입력하는 환경이다
                            • 이렇게 보기 좋게 생긴 아이콘을 클릭하면 앱이 실행된다.
                            • GUI환경에서는 여러 가지 도구가 사용되는데 대표적으로 마우스와 아이콘이 있다.
                            • 컴퓨터에 명령을 입력할 때 사용하는 환경을 사용자 인터페이스라고 하는데 여기에는 다양한 방식이 있다
                          • 04 리스트의 이해
                            • 리스트가 필요한 이유
                              • 많은 변수를 만들지 않고 한 개의 변수의 모든 값을 저장 → 효율적
                                • 학생 100명의 성적을 입력해야 하는데 100개의 변수를 만든다면 코드가 길어지고 번거로움
                            • 리스트의 개념
                              • 리스트는 하나의 변수에 여러 값을 저장하는 자료형이다.
                              • 하나의 변수의 여러가지 값을 저장하는 기법을 시퀀스 자료형이라고 한다.
                              • 시퀀스 자료형은 여러 자료를 순서대로 넣는다는 뜻이다. (순서가 있다는 것만 인지할 것)
                                • 예를 들어, 국어, 수학, 영어 점수를 순서없이 넣으면 뭐가 국어 점수인지 알 수 없다.
                              • 다양한 자료형을 같이 넣을 수 있다
                                • [100,숫자, false]
                            • 인덱싱과 슬라이싱
                              • 인덱싱(indexing)간단히 말해, 첫번째 값을 0으로 했을 때 첫번째 값과 얼마나 떨어져 있는지를 나타낸 것<aside> 💡 len()은 length의 준말로 리스트의 길이 반환하는 함수 → 여기서는 값 3개를 반환했음
                              • </aside>
                              • colors = ['red', 'blue', 'green'] print(colors[0]) print(colors[2]) print(len(colors))
                              • 인덱싱이란 리스트에 저장되어 있는 값에 접근하기 위해 이 값의 상대적인 주소를 사용하는 것
                              • 슬라이싱(slicing)
                                cities = ['서울', '부산', '인천', '대구', '광주', '울산', '수원']
                                
                                기본 문법: 변수명[시작인덱스:마지막인덱스]
                                • e.g.) cities[0:6]
                                  • indexing부산 1대구 3울산 5
                                  • 수원 6
                                  • 광주 4
                                  • 인천 2
                                  • 서울 0
                                  • 예상 정답</aside>[’서울’, ‘부산’, ‘인천’, ‘대구’, ‘광주’]
                                  • 마지막인덱스-1 까지만 출력된다는 점 잊지 말자
                                  • 실제 정답은 울산까지 출력됩니다
                                  • <aside> 👧🏻 수원까지 입니다!
                              • 슬라이싱이란 리스트의 인덱스 기능을 사용하여 전체 리스트에서 일부를 잘라내어 사용하는 것이다.
                              • 리버스 인덱싱(reverse index)마지막 값에 -1 할당
                                • e.g.)부산 -7대구 -5광주 -3수원 -1
                                • 울산 -2
                                • 대전 -4
                                • 인천 -6
                                • 서울 -8
                              • 인덱스를 첫번째 값이 아닌 마지막 값부터 시작하는 방식
                              • 추가로 알아두면 좋은 것
                                • 인덱스 범위를 넘어가는 슬라이싱cities[-50:50] → 인덱싱 범위를 넘어가면 최대 범위인 처음부터 끝까지 출력
                                • cities[:] → 인덱싱 범위를 지정하지 않으면 처음부터 끝까지 출력
                                • 증가값
                                  cities = ['서울', '부산', '인천', '대구','대전', '광주', '울산', '수원']
                                  
                                  cities[::2] →서울, 인천, 대전, 울산
                                • 변수명[시작인덱스:마지막인덱스:증가값]
                            • 리스트의 연산
                              • 덧셈 연산
                              • color1 = ['orange',’red’, 'blue','black', 'green','white'] color2 = ['orange1, ’black’, 'white'] print(colorl + color2) # 두 리스트. 합치기 -> ['red', ’blue’, ’green', 'orange', 'black1, 'white'] len(color1) # 리스트 길이 -> 3 total_color = colorl + color2 -> ['red', ’blue', ’green', ’orange', 'black', 'white']
                              • 곱셈 연산
                              • colorl = [’red’, 'blue', 'green'] color2 = ['orange1', ’black’, 'white'] print(colorl + color2) # 두 리스트. 합치기 -> ['red', ’blue’, ’green', 'orange', 'black1', 'white'] len(colorl) # 리A트 길이 -> 3 total_color = colorl + color2 -> ['red', ’blue', ’green', ’orange', 'black', 'white'] color1 * 2 -> [’red’, 'blue', 'green',’red’, 'blue', 'green']
                              • in 연산
                                color2 = ['orange', 'black’, 'white']
                                'blue' in color2
                                
                                -> false
                                
                              • 포함 여부를 확인하는 연산
                            • 리스트 추가 및 삭제
                            • 패킹과 언패킹언패킹: 한 변수에 여러 개의 데이터가 들어있을 때 그것을 각각의 변수로 반환하는 방법
                              • 만약 리스트의 값이 3개이고 5개로 언패킹을 시도하면 오류가 난다! (개수가 같아야 하는 점 잊지 말자)
                              t = [1,2,3]
                              a,b,c = t
                              print(t,a,b,c)
                              
                              결과값: [1,2,3] 1 2 3
                            • 패킹: 한 변수에 여러 개의 데이터를 할당하는 그 자체
                            • 이차원 리스트행렬의 개념과 비슷 (행렬을 배운 적이 있나…요? 기초수학과 선형대수학에서 배웁니다!)결과값: [[49,79,20,100,80], [43,59,85,30,90],[49,79,48,60,100]]코드를 시각화한 결과값
                            • print(midterm_score[0][2])
                            • kor_score = [49,79,20,100,80] math_score = [43,59,85,30,90] eng_score = [49,79,48,60,100] midterm_score = [kor_score, math_score, eng_score] midterm_score
                            • 이차원 리스트는 리스트를 효율적 활용하기 위해 여러개의 리스트를 하나의 변수에 할당
                          • 05 리스트의 메모리 관리 방식
                            • 리스트의 메모리 저장
                              • 리스트는 안에는 값 자체를 저장하는 구조가 아니라 그 값이 위치한 메모리의 주소에 주소값을 저장
                              a = 300
                              b = 300
                              a is b
                              a == b
                              
                              == 은 값을 비교하는 연산이고 is는 메모리의 주소를 비교하는 연산이다
                              a = 1
                              b = 1
                              a is b
                              a == b
                              
                              파이썬의 정수형 저장 방식의 특성때문!
                              • 파이썬은 인터프리터(아나콘다)가 구동될 때, -5〰️256까지의 정수값을 특정 메모리 주소에 저장
                                • 따라서 이 범위 내에 존재하는 정수값(int)는 True값이 나올 수 있는 것이다
                                • 이 개념은 조금 어려울 수 있어 이런 게 있다 정도만 지금 알아두는 것정도로 충분하다 컴퓨터 시스템에 대한 이해를 한 뒤, 그때 다시 들으면 이해가 잘 될 것이다
                            • 메모리 저장 구조로 인한 리스트 특징
                              • 하나의 리스트에 다양한 자료형 포함 가능
                              • a = ["color", 1, 0.2]
                              • 리스트의 저장 방식
                                a.sort()
                                print(b)
                                
                                ⇒ a를 정렬했는데 b도 정렬되었다. 그 이유는 b=a를 입력한 순간 b에도 a 리스트의 메모리 주소가 저장되었다. 둘 다 동일한 메모리 주소를 가르키고 있으므로 실제로는 하나만 변경했지만 둘 다 변경된 리스트의 값을 보여주게 된다b 변수 내 a의 주소가 이미 있기 때문에 a의 주소에서 변경되어 마찬가지로 둘 다 변경</aside>
                              • 포인트는 b = a 라는 걸 잊지 말자
                              • <aside> 💡 b를 정렬하는 경우는 a의 값이 바뀌지 않을 거라고 생각했다면 경기도 오산!
                              • a = [5,4,3,2,1] b = [1,2,3,4,5] b=a print(b)
                          • 요약
                            1. 변수는 프로그래밍에서 특정한 값을 저장하는 공간의 이름을 뜻한다
                            2. 변수에 값을 넣으라고 선언하는 순간 메모리 어딘가에 물리적인 공간을 확보할 수 있도록 운영체제와 파이썬 인터프리터가 협력하여 메모리 저장 위치를 할당한다. 이 위치를 메모리 주소라고 한다.
                            3. 변수명 선언 규칙
                              1. 다른 사람이 읽어도 이해할 수 있는 이름
                              2. 파이썬은 대소문자를 구별한다 (대소문자 구별하여 쓰기)
                              3. 단어와 단어 사이는 밑줄(_)로 이어 한 단어를 만든다
                              4. 숫자를 사용할 수 있지만 변수명이 숫자로 시작하면 안된다
                              5. 예약어는 사용할 수 없다
                            4. 자료형의 종류
                              1. 정수형
                              2. 실수형
                              3. 문자형
                              4. 불린형
                            5. 파이썬의 덧셈 연산자는 +, -, *, / 사용한다
                            6. 파이썬에서 제곱승을 구하는 연산자는 **이다
                            7. 파이썬에서 몫을 반환하는 연산자는 //이고 나머지 연산자는 %이다
                            8. 증가 연산자는 +=, 감소 연산자는 -=이다
                            9. 변수의 자료형은 float() 나 int() 함수를 사용하여 매우 간단하게 변환할 수 있다
                            10. 문자형으로 선언된 값도 정수형이나 실수형으로 변환할 수 있다
                            11. 자료형을 확인할 수 있는 함수는 type()이다
                          • 과제
                            1. 다음과 같은 코드 작성 시, 빈 칸에 들어갈 수 없는 코드를 고르시오
                              1. a≤b
                              2. a≠int(b)
                              3. str(a)≠b
                              4. a is not int(b)
                              5. int(a) ≥ int(b)
                            2. a = 20 b = '10' print(________) True
                            3. 다음 중 변수를 메모리에서 삭제하기 위해 사용하는 명령어는?
                              1. remove
                              2. clear
                              3. del
                              4. pop
                              5. delate
                            4. 입력받은 섭씨온도를 화씨온도로 변환하는 프로그램을 코딩하려고 한다. 코드 순서를 바르게 나열하시오.
                              1. fahrenheit = ((9/5) * celsius) + 32
                              2. celsius = input(”섭씨온도를 입력하세요:”)
                              3. print(”섭씨온도:”, celsius, “화씨온도:”, fahrenheit)
                              4. celsius = float(input(”섭씨온도를 입력하세요:”))
                            5. 다음 중 파이썬의 변수명으로 적절치 않은 것은?
                              1. ABC1982
                              2. abc1982
                              3. 1982abc
                              4. abc_23
                              5. _23abc
                            6. box = “apple”의 뜻은?
                              1. box 변수의 이름은 apple이다
                              2. box 변수에 apple 값을 넣어라
                              3. box 변수와 apple은 같다
                              4. box 변수는 apple이다
                              5. apple 변수는 box이다
                            7. 다음과 같이 코드를 작성했을 때, 실행결과로 알맞은 것은?
                              1. 에러 발생
                              2. 1.51.51.51.5
                              3. 6.0
                              4. 6
                              5. “6”
                            8. a = "1.5" b = 4 print(a*b)
                            9. 변수에 대한 설명으로 틀린 것은?
                              1. 프로그램에서 사용하기 위한 특정한 값을 저장하는 공간이다
                              2. 선언되는 순간 메모리의 특정 영역에 공간이 할당된다
                              3. 변수에 할당된 값은 하드디스크에 저장된다
                              4. A=8은 “A는 8이다”라는 뜻은 아니다
                              5. ‘2x+7y’는 14라고 하면, 이 식에서 x,y는 변수이다
                            10. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                              1. 0.53
                              2. 530
                              3. 512
                              4. 3
                              5. 5
                            11. a = 53%10 print(a)
                            12. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                              1. <class’float’>
                              2. <class ‘int’>
                              3. <class ‘str’>
                              4. TypeError
                              5. 025
                            13. a = "10" b = "40" print(type(float(a/b)))
                            14. 다음 코드의 실행 결과로 알맞은 것을 고르시오
                              1. <class’integer’>
                              2. <class’int’>
                              3. <class’str’>
                              4. <class’string’>
                              5. <class’float’>
                            15. a = 572 print(type(a))
                            16. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 2.12.12.1
                              1. int(a)*b
                              2. a*b
                              3. a*int(b)
                              4. int(a)*int(b)
                              5. float(a)*b
                            17. a = '3' b = '2.1' print(___________)
                            18. 변수명을 지을 때 권장하는 규칙 중 틀린 것은?
                              1. 변수명은 알파벳, 숫자, 밑줄 등을 사용하여 표현할 수 있다
                              2. 변수명은 의미있는 단어로 쓰는 것을 권장하며, 한글도 사용할 수 있다
                              3. 변수명은 대소문자가 구분된다
                              4. 문법으로 사용되는 특별한 예약어는 변수명으로 사용하지 않는다
                              5. 변수명을 “a”, “b”등으로 사용하는 것은 권장하지 않는다
                            19. 다음과 같이 코드를 작성했을 때, 실행 결과를 쓰시오.
                            20. x = 15 x = x+5 print(x)
                            21. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 30010.5
                              1. str(a*b) + str(c)
                              2. str(a) + str(b) + str(c)
                              3. a * b + str(c)
                              4. int(a) + str(b) + str(c)
                              5. a + b + c
                            22. a = 10 b = 30 c =10.5 print(_________)
                            23. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                              1. 10
                              2. 1
                              3. 5
                              4. 15
                              5. 11
                            24. x = 1 x += 5 x = x+5 print(x)
                            25. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                            26. x = 5 + 4 * 3 -2 /2 x</aside>
                              • 파이썬 경험 유무, 어느 정도 알고 있는지, 1주차 잘 모르는 부분 check
                              • w1 review
                                • 요약
                                  1. 코딩이란 프로그래밍을 하는 행위이며, 프로그래밍은 프로그래밍 언어를 사용하여 프로그램을 개발하는 것이다. 프로그래밍 언어는 인간이 원하는 것을 컴퓨터로 실행시키기 위해 사용하는 컴퓨터가 이해할 수 있는 언어이다.
                                  2. 파이썬은 귀도 반 로섬이 개발한 언어이고 이후 다양한 기능이 추가되었다.
                                  3. 파이썬은 플랫폼 독립적인 언어, 인터프리터 언어, 객체 지향 언어, 동적 타이핑 언어라는 특징을 갖고 있다.
                                  4. 화면 입출력 함수인 input(), print()함수에 대해 배웠다.
                                    1. input()은 사용자로부터 값을 입력 받는 함수이고
                                    2. print()는 화면에 결과값을 출력하는 함수이다.
                              part2 파이썬 기초학습 목표
                              • 변수의 개념, 변수와 메모리의 관계에 대해 알아본다
                              • 변수명을 선언하는 규칙에 대해 이해한다
                              • 기본 자료형인 정수형, 실수형, 문자형, 불린형에 대해 학습한다
                              • 사칙연산을 비롯한 간단한 연산을 수행한다
                              • 자료형 간 변환하는 방법에 대해 알아보고, 자료형을 확인하는 방법을 학습한다
                              • 01 변수의 이해우선 이 코드의 결과 값을 생각해보자
                                • 결과값a+b예상한 값과 실제 값이 일치하는가?
                                  professor = "sungchul choi"
                                  print(professor)
                                  
                                  • 왼쪽에 오는 professor 는 변수이다 쉽게 말해 값을 집어 넣는 상자이다. 오른쪽에 sungchul choi는 값이다
                                  • 즉, 오른쪽 값을 왼쪽 변수 상자에 집어넣어라
                                  <aside> 💡 숫자를 제외한 문자열은 따옴표를 사용하여 하나의 값이라는 걸 말한다.
                                  a = 7
                                  b = 5
                                  print("a+b")
                                  print(a+b)
                                  
                                  • a = 7 은 7이라는 값을 a에 넣으라는 뜻, b = 5도 동일
                                  • print()는 괄호 안의 값을 출력하는 것
                                • </aside>
                                • <코드 설명>
                                • 12
                                • sungchul choi
                                • 변수와 메모리
                                  • 변수 : 어떠한 값을 저장하는 장소 상자
                                  • 메모리: 이러한 변수를 저장하는 공간 누리관
                                  • 메모리 주소: 변수의 저장 위치 서울시 노원구 공릉동 &*8〰️누리관
                                    • 순간적으로 물리적인 공간을 확보하는 것으로 실행마다 메모리 주소는 변할 수 있음
                                  • 알아두면 쓸모 있는 컴퓨터의 구조 🤭
                                    • 주기억장치: CPU에서 처리 중인 프로그램과 데이터를 임시로 저장
                                    • 즉 a = 3을 코드로 작성했다면 a라는 메모리 장소에 3이라는 값을 넣어라 라고 해석할 수 있다
                                  • 중앙처리장치: 입력된 자료를 적절한 정보로 변환하기 위하여 소프트웨어로부터 받은 명령어를 실행하는 장치
                                • 변수명 선언
                                  1. 다른 사람이 읽어도 이해할 수 있는 이름
                                    1. 프로그램은 혼자 만드는 것이 아닌 여럿이 함께 만드는 것이므로 직관적이고 의미가 담긴 단어로 만들어야 한다
                                  2. 파이썬은 대소문자를 구별한다
                                    1. professor 과 Professor은 다른 변수이다. 파이썬은 대소문자를 구별하기 때문에 반드시 기억하고 써야한다
                                    2. 대부분의 경우 소문자로 구성하는 것을 추천한다
                                  3. 단어와 단어 사이는 밑줄(_)로 이어 한 단어를 만든다
                                    1. 이러한 방식을 under score라고 한다
                                      1. under_score
                                      2. 주의 사항으로는 붙임표(-)를 사용하지 않는다
                                    2. 다른 언어에서는 camel case를 이용하기도 한다
                                      1. 단어와 단어의 첫 스펠링을 대문자로 사용하여 단어를 구분해준다
                                      2. ex) CamelCase
                                  4. 숫자를 사용할 수 있지만 변수명이 숫자로 시작하면 안된다
                                    1. 1professor 사용 불가 professor1 사용가능
                                  5. 예약어는 사용할 수 없다
                                    1. for, if, else 등 우리가 약속한 단어를 사용하면 파이썬은 오류가 난다
                                    2. 우리가 지정한 파일 이름도 마찬가지이다.
                                • 변수명 선언 규칙
                              • print() → 괄호 안의 내용을 화면에 출력하는 함수
                              • professor = "sungchul choi" print(professor) a = 7 b = 5 print("a+b") print(a+b)
                              • 02 자료형과 기본 연산
                                • 메모리 공간
                                  • 공간에 대한 개념 이해이진수 한 자리를 비트라고 하며 8개의 비트는 1바이트, 1024바이트는 1킬로바이트 , 1024킬로바이트는 1메가바이트
                                    • 알아두면 쓸데있는 이진수
                                    • 컴퓨터의 메모리는 실리콘으로 만든 반도체이다. 반도체의 가장 큰 특징은 어떤 자극을 주었을 때 전기가 통할 수 있어 전류의 흐름을 제어할 수 있다는 것이다. 이러한 성질을 이용해 반도체에 전류가 흐를 때1 흐르지 않을 때0이라는 숫자로 표현할 수 있다 따라서 메모리는 전류의 흐름을 이진수로 표현하는 것이다
                                  • 컴퓨터는 0과 1 두가지 정보만 저장할 수 있으며 이러한 방식은 이진수를 사용한다
                                • 과연 하나의 변수는 어느 정도의 메모리 공간을 사용할까?
                                • 기본 자료형
                                  • 정수형(integer type)데이터 선언할 때: data = 1 (따로 따옴표를 사용하지 않아도 정수로 인식한다)
                                  • 자연수를 포함해 0,-1,-2,1,2와 같이 값의 영역이 정수로 한정된 값을 뜻한다
                                  • 실수형(floating-point type)
                                  • 10.2, 7.2와 같이 소수점이 포함된 값을 말한다. 실제로 값이 정수형이라도 9.0으로 입력하면 인터프리터는 실수형으로 해석한다
                                  • 문자형(string type)(따옴표는 큰 따옴표, 작은 따옴표 상관없이 편한 걸 이용하면 되지만 주로 큰 따옴표를 이용한다)
                                  • 값이 문자로 출력되는 자료형이다. 파이썬에서는 보통 따옴표가 들어간 정보를 문자형 데이터라고 한다. 예를 들어 코드에서 print(a+b)와 print(”a+b”)는 매우 비슷해 보이지만 결과는 전혀 다르다. 후자의 코드에서 따옴표 안에 있는 a+b는 변수가 아니라 문자열로 인식하기 때문에 a+b라는 문자가 화면에 그대로 출력되는 것을 알 수 있다.
                                  • 불린형(boolean type)
                                    • 알아두면 쓸데있는 동적 타이핑이러한 동적 타이핑의 가장 큰 장점은 유연하기에 메모리 공간도 저장되는 크기에 따라 동적으로 할당받을 수 있다이제 실제로 타입을 확인해봅시다! 🤔 type()
                                    • int() a = int(7)
                                    • 동적 타이핑이란 변수의 메모리 공간을 확보하는 행위가 프로그램 실행 시점에서 발생하는 것을 뜻한다. 일반적으로 다른 언어에서는 변수의 타입을 미리 선언하지만 파이썬은 선언을 하지 않아도 인터프리터가 알아서 판단한다. 이렇게 프로그래머가 직접 판단하는 것이 아니라 인터프리터가 직접 판단하는 것을 동적 타이핑이라 한다.
                                  • 불린형은 논리형이라고도 하며 참 또는 거짓을 표현할 때 사용한다. 만약 값이 true 라면 참을 의미하며, 컴퓨터에서는 1을 뜻한다. 반대로 false라면 거짓을 의미하며, 컴퓨터에서는 0을 뜻한다.
                                • 메모리의 크기는 변수의 자료형에 의해 결정된다.
                                • 간단한 연산
                                  • 연산자 : +, -, *, / 기호
                                  • 피연산자: 연산자에 의해 계산되는 숫자 또는 문자
                                  • 수학연산
                                      • 덧셈
                                      • 뺄셈
                                      • 곱셈
                                    • / 나눗셈
                                    • ** 제곱
                                  • 파이썬의 사칙연산은 수학의 사칙연산과 비슷하다. 다만 다른 점은 문자형끼리 더하는 것이 가능하다
                                  • 증가연산과 감소연산
                                    a = 2
                                    a += 1 #a = a+1
                                    print(a)
                                    
                                    a = 3
                                    a = a-1
                                    a -= 1
                                    print(a)
                                    
                                  • a = 1 a = a + 1 print(a)
                                • 파이썬에서는 다양한 자료형을 사용하여 간단한 연산이 가능하다
                              • 03 자료형 변환예를 들어 인터넷 사이트에 로그인할 때 일반적으로 숫자를 입력해야 하는데 컴퓨터는 그 값을 숫자가 아닌 문자열로 인식하는 경우가 많다. 사람이 보기에는 똑같이 보이지만 컴퓨터에서는 메모리의 용량 확보 등 인터프리터와 운영체제가 해당 데이터를 처리하는 방식이 완전히 달라진다
                                • 정수형과 실수형 간 변환
                                  a = 10
                                  print(a)
                                  a = float(10)
                                  print(a)
                                  
                                  a = 10
                                  b = 3
                                  print(a/b)
                                  
                                  결과: 3.33333…
                                  a = int(10.7)
                                  b = int(10.3)
                                  print(a+b)
                                  print(a)
                                  print(b)
                                  
                                  결과: 20결과를 확인하면 실수형이 정수형으로 변환되어 소수점이하의 내림이 발생한다. 이 점이 기존 수학 연산과 다른 점이다.
                                • 10 10
                                • 인터프리터는 변수 간 계산할 때 필요하다 생각되면 스스로 정수형을 실수형으로 변환한다. 이것이 파이썬 인터프리터의 특징이다.
                                • 변수의 자료형은 float() 함수나 int()함수를 사용하면 매우 간단하게 변환할 수 있다.
                                • 숫자형과 문자형 간 변환
                                  a = '76.3' #정수형
                                  b = float(a)
                                  print(a)
                                  print(b)
                                  print(a+b)
                                  
                                  a = float(a)
                                  b = a
                                  print(a+b)
                                  
                                  a = str(a)
                                  b = str(b)
                                  print(a+b)
                                  
                                • 문자형으로 선언된 값도 정수형이나 실수형으로 변환할 수 있다.
                                • 자료형 확인하기
                                  a = int(10.3)
                                  b = float(10.3)
                                  c = str(10.3)
                                  
                                  print(type(a))
                                  print(type(b))
                                  print(type(c))
                                  
                                • 실제 프로그래밍을 하다 보면 a라는 변수와 b라는 변수의 자료형이 무엇인지 헷갈릴 때 type() 함수를 사용한다
                              • 실제 프로그래밍에서 앞에서 배운 4가지 타입의 자료형을 자유롭게 바꿔가며 사용해야할 때가 많다,
                              chapter03 화면 입출력과 리스트
                              • 01 파이썬 프로그래밍 환경
                                • 사용자 인터페이스대표적인 사용자 인터페이스로 GUI가 있다
                                  • CLI 환경그렇지만, 우리가 주로 코딩에서 사용하게 되는 환경은 CLI 환경이라 생각하면 된다.
                                  • 파이참에서 명령어를 입력하는 것, 터미널에서 입력하는 것 또한 다 CLI 환경이다
                                  • 그러나 반대로 CLI는 마우스의 클릭이 아닌 키보드만으로 명령을 입력하는 환경이다
                                • 이렇게 보기 좋게 생긴 아이콘을 클릭하면 앱이 실행된다.
                                • GUI환경에서는 여러 가지 도구가 사용되는데 대표적으로 마우스와 아이콘이 있다.
                                • 컴퓨터에 명령을 입력할 때 사용하는 환경을 사용자 인터페이스라고 하는데 여기에는 다양한 방식이 있다
                              • 04 리스트의 이해
                                • 리스트가 필요한 이유
                                  • 많은 변수를 만들지 않고 한 개의 변수의 모든 값을 저장 → 효율적
                                    • 학생 100명의 성적을 입력해야 하는데 100개의 변수를 만든다면 코드가 길어지고 번거로움
                                • 리스트의 개념
                                  • 리스트는 하나의 변수에 여러 값을 저장하는 자료형이다.
                                  • 하나의 변수의 여러가지 값을 저장하는 기법을 시퀀스 자료형이라고 한다.
                                  • 시퀀스 자료형은 여러 자료를 순서대로 넣는다는 뜻이다. (순서가 있다는 것만 인지할 것)
                                    • 예를 들어, 국어, 수학, 영어 점수를 순서없이 넣으면 뭐가 국어 점수인지 알 수 없다.
                                  • 다양한 자료형을 같이 넣을 수 있다
                                    • [100,숫자, false]
                                • 인덱싱과 슬라이싱
                                  • 인덱싱(indexing)간단히 말해, 첫번째 값을 0으로 했을 때 첫번째 값과 얼마나 떨어져 있는지를 나타낸 것<aside> 💡 len()은 length의 준말로 리스트의 길이 반환하는 함수 → 여기서는 값 3개를 반환했음
                                  • </aside>
                                  • colors = ['red', 'blue', 'green'] print(colors[0]) print(colors[2]) print(len(colors))
                                  • 인덱싱이란 리스트에 저장되어 있는 값에 접근하기 위해 이 값의 상대적인 주소를 사용하는 것
                                  • 슬라이싱(slicing)
                                    cities = ['서울', '부산', '인천', '대구', '광주', '울산', '수원']
                                    
                                    기본 문법: 변수명[시작인덱스:마지막인덱스]
                                    • e.g.) cities[0:6]
                                      • indexing부산 1대구 3울산 5
                                      • 수원 6
                                      • 광주 4
                                      • 인천 2
                                      • 서울 0
                                      • 예상 정답</aside>[’서울’, ‘부산’, ‘인천’, ‘대구’, ‘광주’]
                                      • 마지막인덱스-1 까지만 출력된다는 점 잊지 말자
                                      • 실제 정답은 울산까지 출력됩니다
                                      • <aside> 👧🏻 수원까지 입니다!
                                  • 슬라이싱이란 리스트의 인덱스 기능을 사용하여 전체 리스트에서 일부를 잘라내어 사용하는 것이다.
                                  • 리버스 인덱싱(reverse index)마지막 값에 -1 할당
                                    • e.g.)부산 -7대구 -5광주 -3수원 -1
                                    • 울산 -2
                                    • 대전 -4
                                    • 인천 -6
                                    • 서울 -8
                                  • 인덱스를 첫번째 값이 아닌 마지막 값부터 시작하는 방식
                                  • 추가로 알아두면 좋은 것
                                    • 인덱스 범위를 넘어가는 슬라이싱cities[-50:50] → 인덱싱 범위를 넘어가면 최대 범위인 처음부터 끝까지 출력
                                    • cities[:] → 인덱싱 범위를 지정하지 않으면 처음부터 끝까지 출력
                                    • 증가값
                                      cities = ['서울', '부산', '인천', '대구','대전', '광주', '울산', '수원']
                                      
                                      cities[::2] →서울, 인천, 대전, 울산
                                    • 변수명[시작인덱스:마지막인덱스:증가값]
                                • 리스트의 연산
                                  • 덧셈 연산
                                  • color1 = ['orange',’red’, 'blue','black', 'green','white'] color2 = ['orange1, ’black’, 'white'] print(colorl + color2) # 두 리스트. 합치기 -> ['red', ’blue’, ’green', 'orange', 'black1, 'white'] len(color1) # 리스트 길이 -> 3 total_color = colorl + color2 -> ['red', ’blue', ’green', ’orange', 'black', 'white']
                                  • 곱셈 연산
                                  • colorl = [’red’, 'blue', 'green'] color2 = ['orange1', ’black’, 'white'] print(colorl + color2) # 두 리스트. 합치기 -> ['red', ’blue’, ’green', 'orange', 'black1', 'white'] len(colorl) # 리A트 길이 -> 3 total_color = colorl + color2 -> ['red', ’blue', ’green', ’orange', 'black', 'white'] color1 * 2 -> [’red’, 'blue', 'green',’red’, 'blue', 'green']
                                  • in 연산
                                    color2 = ['orange', 'black’, 'white']
                                    'blue' in color2
                                    
                                    -> false
                                    
                                  • 포함 여부를 확인하는 연산
                                • 리스트 추가 및 삭제
                                • 패킹과 언패킹언패킹: 한 변수에 여러 개의 데이터가 들어있을 때 그것을 각각의 변수로 반환하는 방법
                                  • 만약 리스트의 값이 3개이고 5개로 언패킹을 시도하면 오류가 난다! (개수가 같아야 하는 점 잊지 말자)
                                  t = [1,2,3]
                                  a,b,c = t
                                  print(t,a,b,c)
                                  
                                  결과값: [1,2,3] 1 2 3
                                • 패킹: 한 변수에 여러 개의 데이터를 할당하는 그 자체
                                • 이차원 리스트행렬의 개념과 비슷 (행렬을 배운 적이 있나…요? 기초수학과 선형대수학에서 배웁니다!)결과값: [[49,79,20,100,80], [43,59,85,30,90],[49,79,48,60,100]]코드를 시각화한 결과값
                                • print(midterm_score[0][2])
                                • kor_score = [49,79,20,100,80] math_score = [43,59,85,30,90] eng_score = [49,79,48,60,100] midterm_score = [kor_score, math_score, eng_score] midterm_score
                                • 이차원 리스트는 리스트를 효율적 활용하기 위해 여러개의 리스트를 하나의 변수에 할당
                              • 05 리스트의 메모리 관리 방식
                                • 리스트의 메모리 저장
                                  • 리스트는 안에는 값 자체를 저장하는 구조가 아니라 그 값이 위치한 메모리의 주소에 주소값을 저장
                                  a = 300
                                  b = 300
                                  a is b
                                  a == b
                                  
                                  == 은 값을 비교하는 연산이고 is는 메모리의 주소를 비교하는 연산이다
                                  a = 1
                                  b = 1
                                  a is b
                                  a == b
                                  
                                  파이썬의 정수형 저장 방식의 특성때문!
                                  • 파이썬은 인터프리터(아나콘다)가 구동될 때, -5〰️256까지의 정수값을 특정 메모리 주소에 저장
                                    • 따라서 이 범위 내에 존재하는 정수값(int)는 True값이 나올 수 있는 것이다
                                    • 이 개념은 조금 어려울 수 있어 이런 게 있다 정도만 지금 알아두는 것정도로 충분하다 컴퓨터 시스템에 대한 이해를 한 뒤, 그때 다시 들으면 이해가 잘 될 것이다
                                • 메모리 저장 구조로 인한 리스트 특징
                                  • 하나의 리스트에 다양한 자료형 포함 가능
                                  • a = ["color", 1, 0.2]
                                  • 리스트의 저장 방식
                                    a.sort()
                                    print(b)
                                    
                                    ⇒ a를 정렬했는데 b도 정렬되었다. 그 이유는 b=a를 입력한 순간 b에도 a 리스트의 메모리 주소가 저장되었다. 둘 다 동일한 메모리 주소를 가르키고 있으므로 실제로는 하나만 변경했지만 둘 다 변경된 리스트의 값을 보여주게 된다b 변수 내 a의 주소가 이미 있기 때문에 a의 주소에서 변경되어 마찬가지로 둘 다 변경</aside>
                                  • 포인트는 b = a 라는 걸 잊지 말자
                                  • <aside> 💡 b를 정렬하는 경우는 a의 값이 바뀌지 않을 거라고 생각했다면 경기도 오산!
                                  • a = [5,4,3,2,1] b = [1,2,3,4,5] b=a print(b)
                                 
                              • 요약
                                1. 변수는 프로그래밍에서 특정한 값을 저장하는 공간의 이름을 뜻한다
                                2. 변수에 값을 넣으라고 선언하는 순간 메모리 어딘가에 물리적인 공간을 확보할 수 있도록 운영체제와 파이썬 인터프리터가 협력하여 메모리 저장 위치를 할당한다. 이 위치를 메모리 주소라고 한다.
                                3. 변수명 선언 규칙
                                  1. 다른 사람이 읽어도 이해할 수 있는 이름
                                  2. 파이썬은 대소문자를 구별한다 (대소문자 구별하여 쓰기)
                                  3. 단어와 단어 사이는 밑줄(_)로 이어 한 단어를 만든다
                                  4. 숫자를 사용할 수 있지만 변수명이 숫자로 시작하면 안된다
                                  5. 예약어는 사용할 수 없다
                                4. 자료형의 종류
                                  1. 정수형
                                  2. 실수형
                                  3. 문자형
                                  4. 불린형
                                5. 파이썬의 덧셈 연산자는 +, -, *, / 사용한다
                                6. 파이썬에서 제곱승을 구하는 연산자는 **이다
                                7. 파이썬에서 몫을 반환하는 연산자는 //이고 나머지 연산자는 %이다
                                8. 증가 연산자는 +=, 감소 연산자는 -=이다
                                9. 변수의 자료형은 float() 나 int() 함수를 사용하여 매우 간단하게 변환할 수 있다
                                10. 문자형으로 선언된 값도 정수형이나 실수형으로 변환할 수 있다
                                11. 자료형을 확인할 수 있는 함수는 type()이다
                              • 과제
                                1. 다음과 같은 코드 작성 시, 빈 칸에 들어갈 수 없는 코드를 고르시오
                                  1. a≤b
                                  2. a≠int(b)
                                  3. str(a)≠b
                                  4. a is not int(b)
                                  5. int(a) ≥ int(b)
                                2. a = 20 b = '10' print(________) True
                                3. 다음 중 변수를 메모리에서 삭제하기 위해 사용하는 명령어는?
                                  1. remove
                                  2. clear
                                  3. del
                                  4. pop
                                  5. delate
                                4. 입력받은 섭씨온도를 화씨온도로 변환하는 프로그램을 코딩하려고 한다. 코드 순서를 바르게 나열하시오.
                                  1. fahrenheit = ((9/5) * celsius) + 32
                                  2. celsius = input(”섭씨온도를 입력하세요:”)
                                  3. print(”섭씨온도:”, celsius, “화씨온도:”, fahrenheit)
                                  4. celsius = float(input(”섭씨온도를 입력하세요:”))
                                5. 다음 중 파이썬의 변수명으로 적절치 않은 것은?
                                  1. ABC1982
                                  2. abc1982
                                  3. 1982abc
                                  4. abc_23
                                  5. _23abc
                                6. box = “apple”의 뜻은?
                                  1. box 변수의 이름은 apple이다
                                  2. box 변수에 apple 값을 넣어라
                                  3. box 변수와 apple은 같다
                                  4. box 변수는 apple이다
                                  5. apple 변수는 box이다
                                7. 다음과 같이 코드를 작성했을 때, 실행결과로 알맞은 것은?
                                  1. 에러 발생
                                  2. 1.51.51.51.5
                                  3. 6.0
                                  4. 6
                                  5. “6”
                                8. a = "1.5" b = 4 print(a*b)
                                9. 변수에 대한 설명으로 틀린 것은?
                                  1. 프로그램에서 사용하기 위한 특정한 값을 저장하는 공간이다
                                  2. 선언되는 순간 메모리의 특정 영역에 공간이 할당된다
                                  3. 변수에 할당된 값은 하드디스크에 저장된다
                                  4. A=8은 “A는 8이다”라는 뜻은 아니다
                                  5. ‘2x+7y’는 14라고 하면, 이 식에서 x,y는 변수이다
                                10. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                                  1. 0.53
                                  2. 530
                                  3. 512
                                  4. 3
                                  5. 5
                                11. a = 53%10 print(a)
                                12. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                                  1. <class’float’>
                                  2. <class ‘int’>
                                  3. <class ‘str’>
                                  4. TypeError
                                  5. 025
                                13. a = "10" b = "40" print(type(float(a/b)))
                                14. 다음 코드의 실행 결과로 알맞은 것을 고르시오
                                  1. <class’integer’>
                                  2. <class’int’>
                                  3. <class’str’>
                                  4. <class’string’>
                                  5. <class’float’>
                                15. a = 572 print(type(a))
                                16. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 2.12.12.1
                                  1. int(a)*b
                                  2. a*b
                                  3. a*int(b)
                                  4. int(a)*int(b)
                                  5. float(a)*b
                                17. a = '3' b = '2.1' print(___________)
                                18. 변수명을 지을 때 권장하는 규칙 중 틀린 것은?
                                  1. 변수명은 알파벳, 숫자, 밑줄 등을 사용하여 표현할 수 있다
                                  2. 변수명은 의미있는 단어로 쓰는 것을 권장하며, 한글도 사용할 수 있다
                                  3. 변수명은 대소문자가 구분된다
                                  4. 문법으로 사용되는 특별한 예약어는 변수명으로 사용하지 않는다
                                  5. 변수명을 “a”, “b”등으로 사용하는 것은 권장하지 않는다
                                19. 다음과 같이 코드를 작성했을 때, 실행 결과를 쓰시오.
                                20. x = 15 x = x+5 print(x)
                                21. 다음과 같은 코드 작성 시, 빈 칸에 알맞은 코드를 고르시오결과값: 30010.5
                                  1. str(a*b) + str(c)
                                  2. str(a) + str(b) + str(c)
                                  3. a * b + str(c)
                                  4. int(a) + str(b) + str(c)
                                  5. a + b + c
                                22. a = 10 b = 30 c =10.5 print(_________)
                                23. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                                  1. 10
                                  2. 1
                                  3. 5
                                  4. 15
                                  5. 11
                                24. x = 1 x += 5 x = x+5 print(x)
                                25. 다음과 같이 코드를 작성했을 때, 실행 결과로 알맞은 것은?
                                26. x = 5 + 4 * 3 -2 /2 x