basic

파이썬 기본 문법

  • 변수 선언, 식별자, 자료형, 형변환, 연산자
  1. 주석(comment)과 출력(print)

    1
    2
    3
    4
    # 주석 : 앞에 #을 붙이면 코드로 실행이 안됩니다. 
    # 코드에 대한 설명이나 코드를 실행시키고 싶지 않을 때 사용
    # 단축키 : ctrl(cmd) + /
    # 블럭설정 : shift + 방향키
    1
    2
    3
    4
    5
    6
    # 출력 : print 함수
    # 코드 중간에 변수에 들어있는 값을 확인하고 싶을 때 사용
    # 1, 2, 3을 출력하는 코드, 아래를 실행시키면 1, 3이 출력 됩니다.
    print(1)
    # print(2)
    print(3)
    1
    2
    3
    4
    5
    # print 함수의 옵션
    # docstring : 함수에 대한 설명 : 단축키(shift + tab)
    print(1, 2, sep="-", end="\t")
    print(3)
    # 자동완성 : tab
  2. 변수 선언

  • RAM 저장공간에 값을 할당하는 행위
    1
    2
    3
    4
    5
    6
    7
    # 하나씩 선언
    a = 1
    b = 2
    # 한줄로 여러개의 변수를 선언
    d, e = 3, 4
    # 5라는 값이 f와 g에 선언
    f = g = 5
  1. 식별자
  • 변수, 함수, 클래스, 모듈 등의 이름을 식별자라고 합니다.
  • 식별자 규칙
    • 소문자, 대문자, 숫자, 언더스코어(_)를 사용합니다.
    • 가장 앞에 숫자 사용 불가
    • 예약어의 사용 불가 : def, class, try, except, 등
    • 컨벤션
      - snake case : fast_campus : 변수, 함수
      - camel case : FastCampus, fastCampus : 클래스
  1. 데이터 타입
  • RAM 저장공간을 효율적으로 사용하기 위해서 저장공간의 타입을 설정
  • 동적타이핑(인터프리터 방식에서 주로 사용함)
    - 변수 선언시 저장되는 값에 따라서 자동으로 데이터 타입이 설정
  • 기본 데이터 타입 : int, float, bool, str
  • 컬렉션 데이터 타입 : list, tuple, dict
1
2
3
4
5
a = 1
# int a = 1
b = "python"
# int, str
type(a), type(b)
1
2
3
4
5
6
# 기본 데이터 타입 : int, float, bool, str
a = 1
b = 1.2
c = True # False
d = "data"
type(a), type(b), type(c), type(d)
1
2
3
4
# 데이터 타입의 함수 : 문자열
d = "data"
# upper : 대문자로 변환
d.upper()
1
2
3
f = ' THAt Car '
# lower : 소문자로 변환
f.lower()
1
2
# strip : 공백 제거
f.strip()
1
2
# replace : 모든 공백제거
f.replace(" ", "")
1
2
# replace : 특정 문자열 치환
f.replace("THAt", "THIS")
1
2
# dir : 함수 확인
dir(f)
1
2
3
4
5
6
7
8
9
10
11
12
# 오프셋 인덱스 : 마스크, 마스킹 : []
# 문자열은 순서가 있는 문자들의 집합
g = "abcdefg"
g[2] # 'c'
g[-2] # 'f'
g[2:5] # 'cde' 2는 포함, 5는 미포함
g[2:] # 'cdefg' 2번째부터 끝까지
g[:3] # 'abc' 0번째부터 2번째까지 g[0:3]과 같음
g[-2:] # 'fg' -2에서 끝까지
g[:] # 'abcdefg' 처음부터 끝까지
g[::2] # 'aceg' 2칸씩 점프하며 출력
g[::-1] # 'gfedcba' 역순으로 출력
1
2
3
4
5
6
# 97531 출력
numbers = '123456789'
# numbers[::-2]
# result = numbers[::2]
# result[::-1]
# numbers[::2][::-1]
1
2
3
4
# 컬렉션 데이터 타입 : list, tuple, dict
# list [] : 순서가 있는 수정이 가능한 데이터 타입
# tuple () : 순서가 있는 수정이 불가능한 데이터 타입
# dict {} : 순서가 없고 키: 값으로 구성되어 있는 데이터 타입
1
2
3
# list
ls = [1, 2, 3, "four", [5, 6], True, 1.2]
type(ls), ls
1
2
# offset index 사용 가능
ls[3], ls[1:3], ls[::-1]
1
2
3
4
5
# list 함수
ls = [1, 5, 2, 4]
# append : 가장 뒤에 값을 추가
ls.append(3)
ls # [1, 5, 2, 4, 3]
1
2
3
4
5
# sort : 오름차순으로 정렬
ls.sort()
ls # [1, 2, 3, 4, 5]
# 내림차순 정렬
ls[::-1] # [5, 4, 3, 2, 1]
1
2
3
4
# pop : 가장 마지막 데이터를 출력하고 출력한 데이터를 삭제
# ctrl + enter : 현재 셀을 계속 실행
num = ls.pop()
num, ls
1
2
3
4
# 리스트의 복사
ls1 = [1, 2, 3]
ls2 = ls1
ls1, ls2 # ([1, 2, 3], [1, 2, 3])
1
2
3
# 얕은 복사 :주소값 복사
ls1[2] = 5
ls1, ls2 #([1, 2, 5], [1, 2, 5])

깊은 복사

1
2
3
# 깊은 복사
ls3 = ls1.copy()
ls1, ls3 #([1, 2, 5], [1, 2, 5])
1
2
ls1[2]  = 10
ls1, ls3 # ([1, 2, 10], [1, 2, 5])

tuple ()

  • 리스트와 같지만 수정이 불가능한 데이터 타입, 괄호 생략 가능
  • 튜플은 리스트보다 같은 데이터를 가졌을 때 공간을 적게 사용
    1
    2
    3
    tp1 = 1, 2, 3
    tp2 = (4, 5, 6)
    type(tp1), type(tp2), tp1, tp2
    1
    2
    # offset index 사용 가능
    tp1[1], [tp1[::-1]]
    1
    2
    3
    4
    5
    6
    7
    8
    # 리스트와 튜플의 저장공간 차이 비교
    import sys

    ls = [1, 2, 3]
    tp = (1, 2, 3)

    print(sys.getsizeof(ls), sys.getsizeof(tp))
    # 96 80
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    **dict {}**
    - 순서가 없고 {키: 값}으로 구성되어 있는 데이터 타입
    ```python
    # 선언: 키는 정수, 문자열 데이터 타입만 사용이 가능
    # 인덱스 대신 키를 사용
    dict = {
    1: "one",
    "two": 2,
    'tree': [1, 2, 3],
    }
    type(dic), dic
    1
    2
    3
    4
    dic[1], dic["tree"]
    ```python
    dic["two"] = 123
    dic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 아래의 데이터를 list와 dict로 선언
    # 도시 : seoul, busan, daegu
    # 인구 : 9,700,000, 3,400,000, 2,400,000
    # 딕셔너리 : 변수 1개 선언
    data = {
    "seoul": 9700000,
    "busan": 3400000,
    "daegu": 2400000,
    }
    # 리스트 : 변수 2개 선언
    city = [seoul, busan, daegu]
    population = [9700000, 3400000, 2400000]
    1
    sum(population)
    1
    sum(data.values())
  1. 형변환
  • 데이터 타입을 변환하는 방법
  • int, float, bool, str, list, tuple, dict
    1
    2
    3
    a = 1
    b = "2"
    a + int(b)
    1
    str(a) + b
    1
    list(data.values())
    1
    2
    3
    4
    5
    # zip : 같은 인덱스에 있는 데이터를 묶어주는 함수
    # zip 함수 사용하여 list 타입으로 변환하기
    list(zip(city, population))
    # dict 타입으로 변환하기
    dict(zip(city, population))
    1
    2
    result = dict(list(zip(city, population)))
    result
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    data1 = list(result.keys())
    data2 = list(resutl.values())
    data1, data2
    ```
    6. 연산자 : 멤버 > 논리
    - 산술연산자 : +, -, *, /, //(몫), %(나머지), **(제곱)
    - 할당연산자 : 변수에 누적시켜서 연산 : +=, //=, **= 등
    - 비교연산자 : >(크다), <(작다), ==, !=, <=(작거나 같다), >=(크거나 같다), 결과로 True, False
    - 논리연산자 : True, False 를 연산 : or(T와 F연산 True가 출력), and(T와 T일 때 True), not(TrueFalseFalseTrue로 변경)
    - 멤버연산자 : 특정 데이터가 있는지 확인 할 때 사용 : not in, in

    ```python
    # 산술연산 : 제곱, 나눗셈, 더하기 순
    1 + 4 / 2 ** 2 # 2.0
    1
    2
    3
    4
    5
    # 할당연산
    a = 10
    a +=10
    a += 10
    a # 30
    1
    2
    # 비교연산
    a < b, a == b, a != b
    1
    2
    3
    # 논리연산 : and(교집합), or(합집합), 괄호가 있는 경우에는 왼쪽이 먼저 연산됨
    True and False, True or False, not True or False # (not True = False가 되어 False or Flase는 False가 됨)
    # False, True, False
    1
    2
    3
    ls = ['jin', 'andy', 'john']
    'andy' in ls, 'anchel' in ls, 'john' not in ls
    # True, False, False
    1
    2
    3
    4
    # 랜덤함수
    import random

    random.randint(1, 10)
    1
    2
    3
    # 입력함수
    data = input('insert string : ')
    data
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 해결의 책 만들기 : 질문을 하면 질문에 대한 답변을 해주는 책
    # 1. solution을 리스트로 작성
    # 2. 질문 입력 받음
    # 3. 솔루션의 갯수에 맞게 랜덤한 index 정수 값을 생성
    # 4. index 해당하는 솔루션 리스트의 데이터를 출력
    solution =[
    "무엇을 하던 잘 풀릴 것이다.",
    '생각지도 않게 좋은 일이 생길 것이다.',
    '무엇을 상상하던 그 이상이다.',
    ]
    input("질문을 입력하세요. : ")
    idx = random.randint(0, len(solution) - 1) # 솔루션 = 총 3개: 0, 1, 2 이므로 솔루션 숫자 -1을 해야 randint(0, 2)가 됨
    solution[idx]