DAY41[321]

마친자·2021년 10월 15일
0

파이썬 기본문법


def()

def second():

  for i in range(1,51):
    if i%3==0 and i%5==0:
      print(i)

if __name__ == "__main__":
  second()
if __name__ == "__main__":
__name__이라는 변수의 값이 __main__이라면 아래의 코드를 실행하라.

더 알아보기

def sum(a,b)     # a,b= 파라미터 = 매개변수
print(sum(3,5))  # 3,5 = 인자 = argument

Variables, Expressions, and Statements

  • 표현식은 결과값을 산출하는 값, 변수, 연산의 조합

    • 값, 변수 그 자체로도 표현식으로 취급

    • 예시 (가정: x = 3)

      • 17
      • x
      • x+17
  • 문자열 또한 표현식으로 사용 가능

  • 표현식의 종류 중 리터럴 식 有

    • ' 리터럴 식(숫자, 문자열 등)= 값 그 자체로써 표현식'
  • 문장과 표현식의 차이점
    : 표현식은 ' 처리 후 하나의 값'만 나오고, 문장은 '처리/지시 위주 역할' (표현식은 문장에 포함되지만 위 처럼 생각하는것이 이해하기 좋음)

    • 예시 (가정: X= 'Hello world')
      • 표현식 : X 또는 'Hello world
      • 문장: X= 'Hello world' 또는 print(X)

에러

  • IndentationError : 잘못된 들여쓰기와 관련된 문법 오류의 베이스 클래스

  • KeyboardInterrupt: 사용자가 인터럽트 키(일반적으로 Control-C 또는 Delete)를 누를 때 발생

while True:
  1
  • ZeroDivisionError:나누기 또는 모듈로 연산의 두 번째 인자가 0일 때 발생
value = 2/0

그 외 에러

주석

  • 주요 클래스, 함수의 기능과 변수에 대한 명명규칙, 소스코드 작성날짜 및 수정날짜를 위주로 작성

    • 공식적인 주석(외부제출용)
      : 구어체가 아닌 형태로 핵심적인 부분만 주석을 작성
    • 내부공유용이거나 설명을 위한 소스코드인 경우
      : 재사용과 내용공유를 목적으로 하여 용어에 대한 풀이 및 이해 내용을 상세히 적음

반복문-break, continue

count = 1
while True:  #True 면 계속 실행
    print(count)
    count += 2    # count =count+2
    if count > 10:  # count = 12 => 12>10 => 참=True=Truthy
         break
------------------------
1
3
5
7
9

Falsy 값들은 실행 안됨 ex) 0.'긴 문장', False, [ ] 등

continue vs pass

for x in range(8):
    if x % 2 == 0:
        continue
    print(x)
------------------------------------
1, 3, 5, 7

continue: 다음 순번의 loop를 돌도록 강제하는 것

for x in range(8):
    if x % 2 == 0:
        pass
    print(x)
------------------------------------
0, 1, 2, 3, 4, 5, 6, 7

pass: 단순히 실행할 코드가 없다는 것

논리 연산자

  • and, or, not
print(True and True)  

print(False or False) 

print(not True) 

중첩조건

x, y = 3, 5

if x == y:
    print('x and y are equal')
else:
    if x < y:
        print('x is less than y')
    else: 
        print('x is greater than y')

파이썬 기본 자료구조


리스트:[]

  • 가장 많이 쓰이는 자료형
  • 동적으로 값 수정(값 추가, 제거가능) 및 정렬이 쉽다
  • 탐색,삽입,삭제와 같은 연산에 대한 메소드 O, 자료구조의 형태를 취함
  • 기본적으로 사용되는 값을 여러개 저장할 수 있는 기능인 배열의 기능O
  • 하나의 리스트에 문자열, 숫자 타입, 리스트 모두 넣을 수 있다
    • 게임개발, 대규모 머신러닝 알고리즘에서 사용함
  • 튜플과의 차이점: 리스트는 메소드를 활용하여 값 수정가능
  • 딕셔너리와 차이점 : 인덱스를 기반으로 값을 저장하고 수정가능

메소드

인덱스리스트
표현vinl
  • append(v), del[in], pop(), sum(l), count(v), len(l), min(l)
  • insert(in ,v ): 리스트 중간에 인덱스와 값을 지정하여 값을 추가삽입
  • remove(v):삭제할 항목의 값을 알고 있어야 함(중복- 앞 순서에 있는 값만 삭제)
  • extend(): 리스트끼리 이어붙이기 l_1.extend(l_2)
  • index(v , in): 리스트 범위에서 특정 값의 인덱스 반환
  • sort(l):리스트의 값 자체의 순서를 정렬( arr의 순서자체가 바뀜)
  • sorted(l): 리스트 자체의 순서는 유지하고, 정렬된 순서로 출력만 함(주어진 arr은 그대로 유지되어 있음)

튜플: ()

  • 특정 값과 인덱스에 대한 값 변경은 불가능하다(immnutable)
  • count(), index() 정도

딕셔너리:{key:value}

  • 내부적으로 해시테이블로 구현

메소드

  • clear(), copy()
  • fromkeys(): key값과 value 지정
x = ('key1', 'key2', 'key3')
y = 1
new_dict = dict.fromkeys(x, y)
print(new_dict)
dict_without_values = dict.fromkeys(x)
print(dict_without_values)
-------------------------------------
{'key1': 1, 'key2': 1, 'key3': 1}
{'key1': None, 'key2': None, 'key3': None}
  • get(): key 값으로 value 도출
car = {
     "brand": "Honda",
     "model": "CR-V",
     "year": 2002
 }
x = car.get("model")
print(x)
---------------
CR-V
  • items()
car = {
     "brand": "Honda",
     "model": "CR-V",
     "year": 2002
 }
x = car.items()
x
-------------------
dict_items([('brand', 'Honda'), ('model', 'CR-V'), ('year', 2002)])
  • pop()
car = {
     "brand": "Honda",
     "model": "CR-V",
     "year": 2002
 }
x = car.pop("model")
print(x)
print(car)
------------
CR-V
{'brand': 'Honda', 'year': 2002}

-poptime

car = {
     "brand": "Honda",
     "model": "CR-V",
     "year": 2002
 }
print(car.popitem())
print(car)
---------------------------------
('year', 2002)
{'brand': 'Honda', 'model': 'CR-V'}
  • update()
car = {
     "brand": "Honda",
     "model": "CR-V",
     "year": 2002
 }
car.update({"color": "black"})
print(car)
-------------------------
{'brand': 'Honda', 'model': 'CR-V', 'year': 2002, 'color': 'black'}
  • value()
car = {
     "brand": "Honda",
     "model": "CR-V",
     "year": 2002
 }
x = car.values()
print(x)
car["color"] = "black"
print(x)
----------------------------
dict_values(['Honda', 'CR-V', 2002])
dict_values(['Honda', 'CR-V', 2002, 'black'])

참고

디버깅


: 버그 (bug) 를 없애는 행동

1.set_trace()

import pdb

pdb.set_trace()
----------------
(Pdb)   
# 코드가 여기서 멈추므로, 값을 확인 or 특정 단계 검토 등 다양한 작업 가능

기본이동

  • s(tep)-한 단계만 -> 범위: 전체적인 코드
  • n(ext)-현재 함수의 다음단계나 return문구에 도달할때 멈춤
    -> 범위: 그 함수에만
  • p = print
  • w(here) 어떤 스텍에 있는지

More

breakpoint():python 3.7이상

sum = 0
breakpoint()
print(sum)

N321


is vs ==

  • is

    • x is y: x 와 y 가 같은 오브젝트의 경우 True
    • x not is y : x 와 y 가 다른 오브젝트의 경우 True
  • ==
    : 연산자는 오브젝트의 값이 같은지 확인하는 경우 사용
    - x == y : x,y와 같은 값이면 True

list1 = [1, 2, 3]

list2 = [1, 2, 3]

list1 == list2

>>> True

list1 is list2

>>> False
list1 = [1, 2, 3]

list2 = list1

list1 == list2

>>> True

list1 is list2

>>> True

출처

isinstance

:isinstance(인스턴스, 데이터나 클래스 타입)

  • 첫 번째 매개변수 : 확인하고자 하는 데이터의 값, 객체, 인스턴스
  • 두 번째 매개변수 : 확인하고자 하는 데이터의 타입, 클래스
  • 반환 값 : 인스턴스와 타입이 같으면 True를 반환하고, 다르면 False를 반환합니다.
    예) result = isinstance(33, int)
    출처

더 알아보기

breakpoint() 이용해서 디버깅해보기

profile
마루에 미친자

0개의 댓글