2024.05.22 TIL - 파이썬 기초 강의

Innes·2024년 5월 23일
0

TIL(Today I Learned)

목록 보기
129/147
post-thumbnail

📝 코딩테스트 준비를 위해 수강한 파이썬 기본개념 강의를 정리해보자.


변수명 짓기

  • const, let같은게 필요없음!! 🤔
  • python = 1
    (이런식으로만 해도 변수지정 가능)

data type (자료형)

기본 자료형

1. Numeric (숫자형)

  • int : 정수형
  • float : 실수형 (소수점)
  • type(변수) -> <class 'int'> 이렇게 타입을 알 수 있는 함수
    my_int = 1
    >>> type(my_int)
    >>> <class 'int'>

1-1. 자료형 변환

  • 강제로 자료형 변환 가능
    float(my_int)
    >>> 1.0
    >>> test = 'coding'
    >>> list(test) => ['c', 'o', ..., 'g']

2. String (문자열)

1) 여러줄인 문자열 변수 지정하기

my_str = """제스퍼
토미
메타
"""

my_str
-> ''제스퍼\n토미\n메타\n"

-> """ """ 이런식으로 하면 여러줄인 문자열을 한번에 변수 지정할수 있다

2) Formatting : 대입하기

  • 문자열을 좀 더 잘 표현하기 위해 사용
  • %연산자, format메서드 사용

< %d %f %s > -> C 스타일의 formatting 방법

  • %s : 문자열 대입
    - ex) my_str = "My name is %s" % 'Yong choi'
    - my_str = "My name is Yong Choi"

  • %d : 정수형 대입
    - '%d %d' % (1,2)
    - '1, 2'

  • %f : 실수형 대입
    - '%f' % 3.14

    • '3.140000'

< '{ }'.format( ) > -> 좀 더 파이썬스러운 formatting 방법

'My name is {}'.format('abc')
>>> 'My name is abc'
>>> '{} x {} = {}'.format(2, 3, 2*3)
>>> '2 x 3 = 6'

3. Boolean (T / F)


컨테이너 자료형

4. List ( [ ] - 배열 )

  • students = [1,2,3]
  • Students[0] = 4
    (index 값을 바꿔 지정하여 리스트 값을 수정할 수 있음!!)
  • Students = 4,2,3

5. Tuple

  • 배열인데 index에 따라 값 수정 안됨
    (ex. 위의 students 예시)
  • Students[0] = 4 하면 에러남

6. Dictionary (JS에서의 객체 {key : value})

  • key value 쌍
  • dictionary_test = {key1 : value1, key2 : value2}
  • dictionary_test[key1] = value1

[ 참고 ]

1. 자료형 강제 변환하기

  • my_int = 1
  • type(my_int) -> <class 'int'>
  • float(my_int) -> my_int = 1.0
  • my_str = 'coding'
  • list(my_str) -> ['c','o',...,'g']

2. 주석

  • # 으로 작성
  • Docstring : """주석""" 이런 방식도 있음

Slicing

Slicing : 특정 위치의 값 잘라오기

  • test = 'python'에서 'yth'만 뽑아오려면?
    -> test[1:4] (index 1부터 4전까지 - 앞뒤의 경계선을 선택한다고 상상해보기)
  • 맨 앞에서부터 3까지 => test[:3]
  • 2부터 맨뒤까지 => test[2:]

string.split()

  • 공백 단위로 자르기
  • 문자열을 공백 단위로 잘라줌
  • split은 함수인데, 이 함수는 string만 쓸 수 있다해서 메서드라고 부름
my_name = '김손의 코딩'
>>> my_name.split() => ['김손의', '왼손코딩']
  • 결과값은 리스트 (배열)
  • 공백 단위로 잘린 결과값이 리스트에 담김

print의 옵션

  • print(' ', end=' ') : 출력의 끝을 지정해줄 수 있음

Escape code

  • 특정 기능을 수행하는 문자의 조합
  • \n : enter
  • \t : tap

List 메서드

  • mutable : 값을 변경할 수 있음 (ex. 배열)
  • immutable : 값을 바꿀 수 있음 (ex. 문자열)

1. list.append()

  • list만 사용할 수 있는 함수이기 때문에 메서드라고 칭함
  • append : 배열의 맨 마지막에 추가됨

2. del : 배열 값 삭제

  • del animals[4] => animals 리스트의 4번째 값이 삭제됨

3. list.sort() : 정렬

  • 문자열 배열인 경우 가나다순으로 자동 정렬

4. list.count() : 특정값의 개수 세기

  • animals.count('바다소') => 2
  • animals 배열에 '바다소'가 몇개 있나 확인해보기

5. len(list) : 총 개수 세기

  • len() : 내장 함수(메서드x) -> 파이썬에서 기본으로 제공하는 함수

Tuple

  • 소괄호 () or 없이
  • immutable

Packing : 여러값을 하나로 묶기

  • unpacking : 묶여있는 여러 값을 풀기
  • my_tuple = 1, 2, 3 (packing - 여러 값을 tuple로 묶었으니까)
    -> num1, num2, num3 = my_tuple
    -> num1은 1, num2는 2, .. 가 됨

-> num1에 2, num2에 1로 바꾸고 싶다면?
-> num1, num2 = num2, num1


for (반복문)

  • 형식
for 변수 in 컨테이너:
////실행 명령 1
////실행 명령 2
.
.
.

-> 컨테이너 안에 있는 값들을 하나씩 돌면서 실행 명령들을 실행하고, 그 다음 값으로 넘어가고
하는 반복을 수행하게 만들어서 반복문!
  • 실행 명령 앞의 공백4칸 (띄어쓰기, 탭 가능) 필수!!
  • 해당 for문에서는 사용한 공백 형식을 동일하게 지켜야함
  • 예시
for animal in animals:
	print(animal)

range()

참고 : https://ctkim.tistory.com/entry/python-range-function#google_vignette

  • 내장함수
  • range(3)
    => range(0,3)
  • type(range(3)) => <class 'range'>
    - range라는 자료형이 따로 있음 유의!
  • range(3) => [0, 1, 2]와 같음 (리스트 아님!)
  • 🤔
    - range(n) => 0 ~ n-1까지를 range 객체로 반환함
    - range(start, stop) => start부터 stop-1까지 반환
# (for문 사용 예시)

for n in range(0, 3):
	print(n)
>>>
0
1
2
>>> range(2, 10)
>>> [2, 3, ..., 9]
# (for문 사용 예시2)

for i in range(1, 10):
	print('{} x {} = {}'.format(2, i, 2*i))
>>>
2 x 1 = 2
2 x 2 = 4
...
2 x 9 = 18

2중 for문 + range()로 구구단 만들기

for j in range(2, 10):
	for i in range(1, 10) :
		print('{}x{}={}'.format(j, i, j*i)
>>>
2x1=2
2x2=4
...
9x8=72
9x9=81

Comprehension

  • for, if문 등을 사용하여 간결하게 리스트 만들기
    (list comprehension)

(예시)

[number for number in numbers if number % 2 == 1]
>>>
[1, 3, 5, 7, 9]

Operator (연산자)

할당 연산자

  • Assign : 할당 연산자 =
    (오른쪽의 값을 왼쪽에 할당하기)

  • 복합 할당 연산자

    • +=, -=, *=, /=
    • (ex)
      count = count + 1
       count += 1
       
      # (같은 역할인데 줄여씀)

Arithmetic (산술연산자)

  • 숫자 자료형 -> 숫자끼리 연산
    - +, -, *, /

  • 특수 연산자

    • **, //, %
    • ** : 제곱
    • // : 나누기 후의 몫
    • % : 나누기 후의 나머지
  • % 활용 : 홀수, 짝수 구하기

for number in numbers:
	if number % 2 == 1:
		print(number, '홀수')
    else:
    	print(number, '짝수)

>>>
1 홀수
2 짝수
...
10 짝수

문자열에서의 +, * 연산자

  • '김왼손' + 'x' + '앨리스'
    >>> '김왼손x앨리스'
    • + : 문자열들을 붙여주는 역할
  • '안녕' * 3
    >>> '안녕안녕안녕'

Comparison (비교연산자)

  • == : 같다 (왼쪽과 오른쪽이 같다)
  • != : 다르다
    (==, != 결과값은 Boolean형)
  • >, <, >=, <= : 부등호

Logical (논리연산자)

  • and, or, not
  • and : 둘 다
  • or : 둘 중 하나
  • not : 반대로! 참이면 거짓으로, 거짓이면 참으로
    (ex) not Ture => False

Membership

  • 리스트 안에 값이 있는지 없는지 확인하는 연산자
  • in, not in
    (ex) 'dog'가 animals리스트에 들어있는 경우
  • 'dog' in animals
    >>> True
  • 'dog' not in animals
    >>> False

if문

if문 : 참 거짓 판단하기

if 조건:
	실행할 명령 1
    실행할 명령 2
elif 조건:
	실행할 명령 1
    실행할 명령 2
else:
	실행할 명령 1
    실행할 명령 2
  • for문처럼 앞에 띄어쓰기 or 탭 필수!!
  • 조건이 참일때만 실행 명령 실행됨!

While문 (반복문)

  • for문 : 횟수세서 몇번돌지 할때
  • while문 : 조건에 따라 얼마나 반복할지
while 조건:
	실행할 명령 1
    실행할 명령 2
  • if문과 같이 True일때 명령들을 실행하는데, 그걸 반복하는 것 뿐!
    (ex)
count = 0

while count < 3:
	print('횟수:', count)
    count += 1

countinue, break

  • 반복문 안에서 쓸 수 있는 키워드
  • continue : 그 아래 문장 실행하지 않고, 바로 조건문으로 다시 올라감
    (skip하는 기능이랄까)
  • break : 반복문 그냥 끝내버리기
    (ex)
count = 0

while count < 10:
	count += 1
    if count < 4:
    	continue
    print('횟수:', count)
    if count == 8:
    	break

Dictionary

  • type(my_dict)
    >>> <class 'dict'>

  • my_dict[0] = 'a'
    >>> {0: 'a'}

  • my_dict['b'] = 2
    >>> {0: 'a', 'b': 2}

  • print(my_dict['b'])
    >>> 2

  • del my_dict[0]
    >>> {'b': 2}
    (key 0의 키 밸류 쌍이 삭제됨)


dictionary 메서드

dict.values() - value 추출

  • ex)
for std in my_dict.values():
	print(std)
>>> 
'a'
2

dict.keys() - key 추출

for key in my_dict.keys():
	print(key)
>>>
0
'b'

dict.items() - key, val 추출

for key, val in my_dict.items():
	print(key, val)
>>>
0 'a'
'b' 2

Function (함수)

  • 반복되는 코드에 이름 붙인것 - 필요할 때마다 불러와서 사용함
def 함수이름(인자1, ...):
	실행할 명령1
    실행할 명령2
    
    return 결과

ex)

def add(num1, num2):
	return num1 + num2
>>>
>>> add(1, 2)
>>> 3
  • 결과값 여러개 받기
def 함수이름(인자1, ...):
	실행할 명령1
    실행할 명령2
    ...
    return 결과1, 결과2, ...

ex)

def add(num1, num2):
	return num1 + num2, num1 * num2
>>>
>>> add(1, 2)
>>> (3, 2)

# -> 2개의 값으로 나오는게 아니라, ⭐하나의 tuple로 반환됨

Module

  • 비슷한 함수들을 모아놓은 파일
  • 직접 만들수도, 파이썬이 제공하기도, 다른사람꺼 가져다 쓰기도 함 (import)

random

  • random.choice()
    • 배열 내에서 랜덤한 값 추출하기
import random
>>> students = ['망고', '희진', '호박', '레고', '고등어']
>>> print(random.choice(students))
호박
# (랜덤한 값이 출력됨)
  • random.sample()
    • 여러개의 값을 중복없이 한꺼번에 뽑을 수 있음
>>> print(random.sample(students, 2))
['고등어', '레고']

>>> print(random.sample(range(1, 46), 3))
[10, 35, 37]
  • random.randint()
    • 해당 범위 내의 정수를 랜덤하게 추출
>>>print(random.randint(8, 10))
8

Object (객체)

  • 함수와 데이터를 한꺼번에 묶어놓은 것
    (파이썬에서는 대부분이 객체 임)

    🤔❓ JS에서는 object가 객체, 즉 {key, value} 쌍을 객체라고 하는데, 파이썬에서는 dictionary가 해당 내용이고, object 객체는 배열도 포함되는 희한한 객체이네...? 뭐지 용어가 다른 것 같다


PEP8

  • Style Guide for Python Code
  • 귀도반 로섬이 '파이썬으로 코드짤땐 이렇게 하세요' 라고 하는 코딩 제안서, 코드 컨벤션
  • 일관된 코드를 작성하는 제안서

느낀점

JS, React, Next를 거쳐 파이썬을 공부하고 있는데... 비슷하면서도 조금씩 문법이 달라서 엄청 헷갈린다. ㅠㅠ 예를 들면 변수를 지정하는데 JS에서는 const, let을 붙여야만 했는데 파이썬에서는 그냥 바로 변수이름을 써버리면 된다. 자료형 type보기, 자료형 변경하기 등 JS랑 흡사해보이면서도 조금씩 다르니까 헷갈리기도 하고.. 약간 호주에 있을때 영어도 한국어도 헷갈려서 0개국어가 되어가던 그때 그 느낌이랄까ㅠ ㅋㅋㅋ
Next로 최종프로젝트까지 했었는데 갑자기 걸음마부터 다시 배우고있는 기분...? ㅋㅋㅋ
이게 문법이 묘하게 다르니까 이거에 너무 집중하면 JS문법 잊어버릴까봐 불안한 마음이 계속 든다 ㅠㅠ ㅎㅎ

profile
꾸준히 성장하는 우상향 개발자

0개의 댓글