220901 Day8

유예지·2022년 9월 1일

Python

-간결한 코드, 코드 가독성이 좋다
-웹(Django), 대용량 데이터 처리, 머신러닝 등에 사용된다
-android app 개발, 컴퓨터 응용프로그램에는 활용하기 어렵다

-CLI : 콘솔로 입력하는 방식
-GUI : 그림, 이미지로 보여지는 방식, 정보의 양이 많다

  • IDE(편집 프로그램) for Python
    -IDLE : 콘솔 창으로 코딩
    -R Studio
    -PyCharm, Spyder : 파이썬만을 위한 편집기
    -Jupyter Notebook, Jupyter lab : 웹브라우저로 코딩
    -Colab(Colaboratory) : 구글서버 사용, 핸드폰으로도 코딩이 가능하다

  • Jupyter lab 실행
    ① window키 + R 실행, 'cmd' 입력
    ② pip install numpy pandas matplotlib 입력
    ③ pip list 입력
    ④ pip install jupyterlab 입력
    ⑤ jupyter lab 입력

1. 파이썬 기본문법 (in Jupyter lab)

  • 주석표시
    -한 줄 주석표시 : #한 줄
    -여러줄 주석표시 : """ 여러줄 """

  • 들여쓰기 (indent)
    -가독성을 위한 들여쓰기
    -if, for, class, def 의 끝에는 무조건 ':'을 넣어야 한다
    -같은 블록 내에서는 들여쓰기 크기가 같아야 한다
    -조금이라도 들여쓰기의 크기가 다르면 코드가 실행되지 않는다

(1) import 하기

-R 언어에서의 'library()'와 같은 기능

*예)
루트를 의미하는 함수 sqrt()를 jupyter에서 실행하면 에러가 뜬다.
-> 아직 파이썬에서 정의가 되지 않은 상태이기 때문에
이때 "import ___ " 를 실행해준다.

>>> import math
>>> math.sqrt(4)  #앞에 패키지의 이름을 붙여준다(일종의 출처 표시)
2.0

>>> import math as m
>>> m.sqrt(4)  #보다 더 간략하게 입력할 수 있다
2.0

>>> from math import sqrt
>>> sqrt(9)  #sqrt()만 쓸 수 있게 할 수도 있다
3.0

>>> sqrt(15)
3.872983346207417
#소숫점 자릿수를 내가 원하는만큼 정하고 싶지만 math 패키지로는 불가능하다

#sqrt()를 정의할 수 있는 다른 패키지를 실행한다
>>> import numpy as np
>>> np.sqrt(9)
3.0

* pi(파이)를 실행하려면 어떻게 해야할까

>>> np.pi
3.141592653589793

>>> math.pi
3.141592653589793

#그냥 pi로 입력하면 실행되지 않는다. np.pi로 입력해야 실행된다

* plt : 데이터를 그래프로 나타낸다

>>> import matplotlib.pyplot as plt
>>> np.linspace(1, 10, 10)  #1부터 10 사이에 등간격으로 10개의 숫자를 넣어라
array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])

>>> np.linspace(1, 10, 3)
array([ 1. ,  5.5, 10. ])

*예1) 0부터 2파이(360도)까지 100개의 숫자를 sin 그래프로

>>> x = np.linspace(0, 2*np.pi, 100)
    y = np.sin(x)
    
>>> plt.plot(x,y)

*예2) 0부터 2파이(360도)까지 100개의 숫자를 cos 그래프로

>>> x = np.linspace(0, 2*np.pi, 100)
    plt.plot(x, np.cos(x))

*예3) sin, cos 그래프 함께 나타내기

>>> x = np.linspace(0, 2*np.pi, 100)
    plt.plot(x, np.sin(x))
    plt.plot(x, np.cos(x))  #함께 나타내야하니까 하나의 셀 안에 함께 입력한다

(2) 데이터 타입과 변환

  • 데이터 타입 : 숫자, 문자, 참 or 거짓
    -데이터 타입을 나누는 이유는 메모리와도 관련이 있다
    -파이썬의 메모리 : 80MB로 작은 편

① 숫자형

-정수(integer) : int
-실수(float) : float (= 소수)

>>> a = 3
    a
3

>>> type(a)
int

>>> b = 3.0
    b
3.0

>>> type(b)
float

#int()에 실수를 넣으면 어떻게 출력될까
>>> int(3.1)
    int(3.9)
3  #모두 3으로 출력된다
  • 숫자형의 연산
#거듭제곱 : **
>>> 2**10
1024

#나누기 : //, %
>>> 11//3
3  #//는 '몫'만 출력

>>> 11%3
2  #%는 '나머지'만 출력

#int형과 float형을 더한 데이터의 타입은?
>>> c = 1 + 3.0
    c
4.0   #float 형으로 출력된다 (실수가 정수보다 더 큰 개념, 정수는 실수 안에 속한다)
  • 반올림, 내림, 버림
#반올림 : round()
>>> round(1.734)
2
>>> round(1.734, ndigits = 2)  #ndigits : 소숫점 이하의 자릿수
1.73

#내림 : math.floor()
>>> import.math
    math.floor(1.234)
1

#올림 : math.ceil()
>>> math.ceil(1.234)
2

#print()를 사용하여 여러줄을 한꺼번에 출력할 수도 있다
>>> print(math.floor(1.234))
    print(math.ceil(1.234))
1
2

#버림 : math.trunc()
>>> math.trunc(1.234)
1

② 문자형

-str(), string
-문자를 입력할 때는 '' 또는 ""을 반드시 함께 입력한다
-출력값에 ''가 붙어서 나오면 -> 그 값은 문자형임을 알 수 있다

>>> "Hello"
'Hello'

>>> a = 'Hello'
    a
'Hello'

>>> print(a)
Hello

#그는 나에게 "사랑해요" 라고 말했다
>>> print('그는 나에게 "사랑해요" 라고 말했다')
그는 나에게 "사랑해요" 라고 말했다

>>> type(a)
str
  • 문자열의 연산
#a + b
>>> a = "Life is short."
    b = "We need Python."
>>> a + b
'Life is short.We need Python'   #더한다기 보다는, 두 문장을 '이어붙이는 것'

#a - b, a * b, a / b 는 모두 error가 뜬다

#a * 숫자 : 해당 문자를 숫자만큼 반복해서 출력
>>> a * 3
'Life is short.Life is short.Life is short.'

>>> print("-" * 20)
    print("커피가 나왔습니다")
    print("-" * 20)
--------------------
커피가 나왔습니다
--------------------    
  • 문자열의 method (함수)
    -파이썬에는 '객체지향' 사고방식이 적용된다 -> 예: car.go(), man.walk() ..
    -객체지향 : 객체(object)가 주인이다, 모든 것을 '객체'로 본다
#upper() : 문자 전체를 대문자로
>>> a = "Hello"
'Hello'
>>> a.upper()
'HELLO'

#lower() : 문자 전체를 소문자로
>>> a.lower()
'hello'

#capitalize() : 문장의 첫글자만 대문자로
>>> a.capitalize()
'Hello'

#title() : 문장 내 각 단어의 첫글자를 대문자로
>>> b = "good morning"
    b.title()
'Good Morning'
#count()
>>> b.count('n')
    b.count('o')
    b.count('oo')   #argument : 인수, 인자 / parameter : 매개변수
1

#len() : 문자열의 길이(length)
>>> len(b)
12

#strip() : 문자열 처리; 빈칸 제거
>>> c = "   good morning   "
    c.strip()
'good morning'
>>> print(c)
   good morning   
>>> c.rstrip()   #오른쪽 빈칸만 제거
    c.lstrip()   #왼쪽 빈칸만 제거
    
#split() : 괄호 안에 있는 것을 기준으로 문자열 분리
>>> c = "   good morning   "
    c.split()
['good', 'morning']

>>> d = "   good, morning, hello   "
    d.split(',')
['   good', ' morning', ' hello   ']

#join() : 문자 이어붙이기
>>> m = ["철수", "영희", "길동"]
    m
>>>"".join(m)
   "-".join(m)
   " - ".join(m)
'철수 - 영희 - 길동'

③ 참 or 거짓

-bool(); boolean

>>> str(1)
'1'   #숫자 1이 문자로 출력됨

>>> int('1')
1   #문자 1이 숫자로 출력됨

#모든 숫자는 문자형으로 출력할 수 있으나, 모든 문자를 숫자형으로 출력할 수는 없다
>>> 1 < 2
TRUE

>>> if 1 < 2 :
       print("Yes")   #조건이 참이면 'Yes' 출력
    else:
       print("No")   #조건이 거짓이면 'No' 출력
Yes

>>> if 0 :
       print("Yes")
    else:
       print("No")   #숫자 0을 제외한 모든 숫자는 TRUE로 인식된다
No

>>> 1 < 2
    bool(1 < 2)
    bool(0)
False

>>> if "" :
       print("Yes")
    else :
       print("No")
No       
#""(어떤 문자도 입력하지 않은 상태)를 제외한 모든 문자열도 TRUE로 인식된다
#array() : 배열을 만들어주는 함수; np.array()
>>> np.array([1, 2, 3, 4, 5])
    a = np.array([1, 2, 3, 4, 5])
    a
array([1, 2, 3, 4, 5])
>>> print(a)
[1, 2, 3, 4, 5]   #print() 로는 array인지 아닌지 정확히 알 수 없다

>>> a > 3
array([False, False, False,  True,  True])

>>> a[a > 3]   #원하는 데이터 값만 출력하고 싶을 때
array([4, 5])
  • input()
    -괄호 안의 문자열을 출력하고, 추가로 입력을 받는다
    -★입력받은 데이터는 "문자열 형태(str)"로만 출력한다
>>> input()
3
'3'

>>> input("숫자를 입력해 주세요")
숫자를 입력해 주세요  3
'3'

>>> a = input("입력1: ")
    b = input("입력2: ")
    a + b
입력1:  철수
입력2:  영희
'철수영희'

>>> a = input("입력1: ")
    b = input("입력2: ")
    int(a) + int(b)   #문자를 숫자로 바꾼다
입력1: 11
입력2: 22
33

#숫자만 입력할 것이라면, 아예 처음부터 int로 바꿔주자
>>> a = int(input("숫자 입력: "))
    b = int(input("두번째 입력: "))
    a + b
숫자 입력:  10
두번째 입력:  23
33

0개의 댓글