본문 바로가기

Python/왕초보 성장기

파이썬 기초 (1): Python 101

 

파이썬 기본기를 다지는 글 입니다. 중간중간 내용이 빠지는 부분도 있으니 완전히 파이썬을 처음 접하는 분들 보다는 한 번 공부해 보셨던 분들이 복습용으로 보시는 게 좋을 것 같습니다.

 

Python에 대하여

  • 오픈 소스, 무료 프로그램 입니다.
  • 여러 패키지를 사용할 수 있습니다. (데이터 사이언스 용 패키지도 있음)
  • 특징
    • 인터프리터 언어입니다. 이는 복잡한 컴파일 과정 없이 코드를 바로 실행 가능하다는 의미입니다. (컴파일: 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 과정)
    • 동적 타이핑을 지원합니다. 변수에 대한 type 선언 없어도 값 할당이 가능합니다. ex. x = 3이라고 변수를 만들면, 자동으로 변수가 int라고 생각합니다.
  • IPython Shell: 여기서 파이썬 명령을 실행합니다.
  • Python Script
    • 텍스트 파일이고, .py로 끝납니다.
    • 파이썬 명령들의 목록입니다.
    • print()를 사용하여 출력 ⇒ print()는 데이터를 출력합니다. 괄호 안에 출력하고 싶은 내용을 넣으면 됩니다.
print("hello") #hello 출력 (글자를 출력하고 싶으면 ""를 사용해야 합니다.)

 

 


변수와 자료형

변수

  • 구체적이고, case-sensitive한 이름을 가지고 있습니다.
  • 변수에 데이터를 저장하고, 관리할 수 있습니다.
  • 변수의 이름을 통해 어떤 값을 불러옵니다. (RAM에 특정 위치에 값을 저장하여, 나중에 이 값을 불러옵니다.)
  • 변수의 이름을 지어줄 때엔 규칙이 있습니다.
    • 숫자로 시작하면 안 됩니다.
    • 대소문자를 구분합니다.
    • 이미 의미가 정의된 키워드 (while, and, for 등)은 변수 이름으로 사용할 수 없습니다.
    • (권장) 변수의 의미가 잘 드러날 수 있게 짓습니다. 여러 단어를 사용할 때엔 밑줄을 사용합니다.
  • 각 변수는 하나의 값을 가지고 있습니다.
ex. x = 3 #x라는 변수에 3이라는 값 저장
pi_number = 3.14 #변수의 의미가 잘 드러날 수 있게 짓습니다. 여러 단어를 사용할 때엔 밑줄을 사용합니다.
print(x) #3 출력 (변수의 값을 출력할 수 있습니다.)
y = x + 1 #y라는 변수에 x의 변수값 + 1의 값을 할당 (이렇게 변수를 불러올 수도 있습니다.)

 

Reproducibility: 변수의 값을 변경하면, 전체에서 그 값이 변경됩니다.

x = 3 #원래 값 3
print(x + 1) #4 출력
x = 8 #8로 변경
print(x + 1) #9 출력

 

 

자료형

1. float (실수)

 

2. int (정수)

 

3. str (문자열)

  1. 포맷팅 (f-문자열)
word = 'python'
print(f"{python}") #python 출력

num = 3.14
print(f"{num:.1f}) #3.1 출력 (:.nf -> 소숫점 n자리까지만 출력, 반올림)

 

 

 

 

4. bool (T or F, 조건문)

  1. 비교 연산자 (==, !=, <, >, <=, >=)
  2. and
    1. True and True ⇒ True
    2. True and False ⇒ False
    3. False and True ⇒ False
    4. False and False ⇒ False
  3. or
    1. True or True ⇒ True
    2. True and False ⇒ True
    3. False and True ⇒ True
    4. False and False ⇒ False
  4. not
    1. not True ⇒ False
    2. not False ⇒ True
  5. 계산 순서: 괄호 내부 → not → and, or

 

 

 

5. list (리스트, 다양한 데이터를 순서를 가지고 저장)

  • 값들의 모임입니다.
  • 여러 타입을 같이 쓸 수 있습니다. ex. [’a’, 1, 3.0]
  • 여러 타입을 넣을 수 있습니다.
  • 리스트 안에 리스트를 넣을 수 있습니다.
  • 리스트 manipulating 하기
    • change list elements!
    • add list elements!
    • remove list elements!
    • search!
    • sort!
    • analyze!
num_list = [0, 1, 2, 3, 4, 5]
#1
num_list[1] = 7 #인덱스 1 (1)의 값을 7로 변경 => [0, 7, 2, 3, 4, 5]

#2
num_list2 = [6, 7]
print(num_list + num_list2) #[0, 7, 2, 3, 4, 5, 6, 7]
num_list.append(3)
print(num_list) #[0, 7, 2, 3, 4, 5, 3]
num_list.extend(num_list2)
print(num_list) #[0, 7, 2, 3, 4, 5, 3, 6, 7]
num_list.insert(0, 3)
print(num_list) #[3, 0, 7, 2, 3, 4, 5, 3, 6, 7]

#3
del num_list[1] 
print(num_list)#[3, 7, 2, 3, 4, 5, 3, 6 ,7]
print(num_list.pop(1)) #7
print(num_list) #[3, 2, 3, 4, 5, 3, 6, 7]

#4
print(num_list.count(3)) #3
print(list.index(3, 0, 7) #0

#5
print(num_list.sort()) #[2, 3, 3, 3, 4, 5, 6, 7]
print(num_list.sort(reverse = True)) #[7, 6, 5, 4, 3, 3, 3, 2]
print(num_list.reverse()) #[7, 6, 3, 5, 4, 3, 2, 3]

#6
max(num_list) #7
min(num_list) #2
sum(num_list) #33
len(num_list) #8

 

 

 

 

6. tuple (튜플, 리스트와 비슷하나 한 번 생성된 요소를 변경할 수 없음)

  • 서로 다른 데이터 type을 가질 수 있습니다.
  • 리스트와 같이 인덱싱을 사용할 수 있습니다.
  • tuple unpacking
dessert = ("chocolate", "1$", "cafe")
name, cost, where_to_buy = dessert
print(name) #chocolate
print(where_to_buy) #cafe
print(cost) #1$

 

 

 

 

7. dictionary (딕셔너리, 키와 값의 쌍으로 데이터 저장)

  • access value!
  • change value or add value!
  • delete value!
  • print values or keys or all!
dic = {'a' : 1, 'b' : 2, 'c' : 3}
#1
print(dic['a']) #1
print(dic.get('a')) #1

#2
dic['a'] = 2
print(dic) #{'a' : 2, 'b' : 2, 'c' : 3}
dic['d'] = 4
print(dic) #{'a' : 2, 'b' : 2, 'c' : 3, 'd' : 4}

#3
del dic['d']
print(dic) #{'a' : 2, 'b' : 2, 'c' : 3}
c = dic.pop('c')
print(c) #3

#4
print(dic.keys()) #dict_keys(['a', 'b'])
print(dic.values()) #dict_values([2, 2])
print(dic.items()) #dict_items([('a', 2), ('b', 2)])

 

 

 

 

8. set (집합, 중복 없는 요소들로 이루어지고 요소들의 순서가 없음)

  • 추가하기
  • 제거하기
st = {1, 2, 3}
#1
st.add(4)
print(st) #{1, 2, 3, 4}

#2
st.remove(4)
print(st) #{1, 2, 3}

 

 

 

 

*서로 다른 자료형에 따라 서로 다른 행동을 취해야 합니다.

pi_number = 3.14 #float
print(int(pi_number)) #3
print(str(pi_number)) #'3.14'
print(list(pi_number)) #오류(float object is not iterable)

print(int(True)) #1
print(float(False)) #0.0

num_list = [1, 2, 2, 3, 4]
print(tuple(num_list)) #(1, 2, 2, 3, 4)
print(set(num_list)) #{1, 2, 3, 4} => 중복된 값 제거

num_dict = {'a' : 1, 'b' : 2, 'c' : 3}

 


연산 해보기

연산자

  1. 덧셈: +
  2. 뺄셈: -
  3. 곱셈: *
  4. 나눗셈: / (소수점 표현 나눗셈, 항상 실수형)
  5. 정수 나눗셈: // (소수점 이하 버림, 항상 정수형)
  6. 나머지: %
  7. 지수: **

연산 순서: ** → %, *, /, // → +, -

print(3 + 3) #int형 6 출력
print(3.0 + 3.0) #float형 6.0 출력
print(3.0 + 3) #float형 6.0 출력

print(10/2) #5.0 출력
print(10//2) #5 출력
print(10/4) #2.5 출력
print(10//4) #2 출력

 

복합 대입 연산자

x += 3
x = x + 3 #이 두개 코드는 같은 의미. 연산자와 =를 결합하여 축약

 

 


indexing 하기

인덱싱: 인덱싱을 사용하면 특정 위치 (str, list 등에서)에 접근할 수 있습니다.

**중요: 인덱스는 0부터 시작합니다.

[]안에 숫자를 써서 사용합니다. 음수도 가능합니다.

num_list = [0, 1, 2, 3, 4, 5]
print(num_list[0]) #0 출력
print(num_list[3]) #3 출력
print(num_list[-1]) #5 출력
print(num_list[-4]) #2 출력

word = 'python'
print(word[1]) #y 출력
print(word[-3]) #h 출력

 

slicing 하기

슬라이싱: 슬라이싱을 사용하면 str나 list에서 특정 부분을 추출할 수 있습니다.

[]안에 시작 인덱스 : 종료 인덱스를 넣습니다. (생략하면 전체 출력, 음수 넣으면 역순 출력)

**중요: 시작 인덱스부터 종료 인덱스 -1 인덱스까지 출력합니다. (예시를 보면 쉽습니다.)

num_list = [0, 1, 2, 3, 4, 5]
print(num_list[2:4] #인덱스 2부터 인덱스 3까지 출력, [2, 3] 출력

word = 'python'
print(word[2:5] #tho 출력

 

 


함수

  • 다시 사용가능한 코드 블록입니다.
  • 특정 업무를 수행합니다.
  • 코드를 쓰는 대신에 함수를 호출하면 편리합니다.

ex.

  1. max() → 최댓값
  2. len() → 길이
  3. int() → 정수로 변환
  4. sorted() → ascending 정렬, reverse = True 사용하면 descending
  5. round(num, digit) → digit 없으면 정수로 round

 

메소드

  • 모든 것 = 객체
  • 모든 객체는 type 별로 연결된 메소드가 존재합니다.
  • 객체로 함수를 불러옵니다.

ex.

list.index(a) → a의 인덱스 도출

list.count(a) → 리스트 속 a의 갯수 도출

list.append(a) → list에 a 넣기 (맨 끝에)

str.capitalize() → 대문자화하기

str.strip() → 양쪽 공백 제거하기

str.replace(’a’, ‘b’) → a를 b로 변환

str.index(’a’) → a의 위치 도출

 

 


 

**참고 (같이 공부하면 더 좋습니다!)

- Datacamp(유료) - Introduction to Python : 실습과 같이 공부해 보세요. 영어로 공부할 수 있어서 더 좋습니다.

- 데이스쿨(유료) - 파이썬 실행하기 (상) : 마찬가지로 문제를 풀어보며 공부해 보세요. 더 자세하고 프로그래밍에 대한 설명까지 포함되어 있어서 좋습니다. 

- 혼자 공부하는 파이썬 (저자: 윤인성) : 기초적인 내용이 상세하게 설명되어 있어 좋습니다.