22.04.25 파이썬 문법 뽀개기

김하진·2022년 4월 25일

python 강의

Python 이란?

네덜란드 귀도 반 로섬 이 만드 언어.
인간적이고, 직관적인 언어 이다!

  • 객체 지향 적인 언어이다.
    -> 객체 지향이란?
    프로그램을 그저 데이터와 처리방법으로 나누는게 아니고, 프로그램을 다수의 "객체"를 만들고, 이들이 서로 상호작용을 통해 만들어지는 방식이다.
  • 객체는 무엇 인가?
    세상에 존재하는 모든것을 의미한다. 즉, 주변에 있는 사물이나 생명체 같은 모든것들을 말합니다.
    프로그래밍에서의 객체는 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹이라고 볼 수있습니다.
    ex_컴퓨터(PC) = 데이터(본체, 모니터, 키보드, 마우스, 스피커.......등등) + 기능(화면제공, 소리, 입력, 출력.......등등)

변수 선언과 자료형

  • 변수란?
a= 3 b= 2 
print(a+b)

a라는 변수에 3 이라는 값을 넣는다.
사칙 연산 가능.

제곱에 사용되는 기호 : **
나머지: %

  • Bool 자료형
    x = True # 참
    y = False # 거짓

  • 비교연산자
    > 크다 # True
    < 작다 # false
    >= 크거나 같다 #True
    <= 작거나 같다 # True
    == 같다 # False
    !- 같지 않다 # True

and 연산자 => 모두 참 이어야 참으로 변환
or 연산자 => 둘중 하나만 참이면 참이다.

문자열

문자열은 따옴표로 감싸 주어야 한다. 아니면 변수로 인식을 한다.

  • 문자열 간 더하기 가능
  • 문자열 과 정수를 더하면 에러가 나온다.

len = 문자열의 길이 구하기.

리스트와 딕셔너리

  • list
    리스트: 순서가 중요하게 값을 담는다. (0부터 센다)
    리스트의 길이도 len() 함수로 잴 수 있다.

인덱싱과 슬라이싱 가능.

a = [1, 3, 2, 4]
print(a[3])  # 4
print(a[1:3]) # [3, 2]
print(a[-1]) # 4 (맨 마지막 것)

a.append(5) - > 리스트 덧붙이기
a.sort(reverse=True)-> 리스트 정렬하기

  • dictionary
    딕셔너리는 키(key)와 벨류(value)의 쌍으로 이루어짐.
a = {"one":1, "two":2}
# 빈 딕셔너리 만들기
a = {}
a = dict()
  • 딕셔너리 요소는 순서가 없어서 인덱싱 사용 할수 없다.

업데이트 하거나, 새로운 쌍의 자료를 넣을 수 있다.

person = {"name":"Bob", "age": 21}

person["name"] = "Robert"
print(person)  # {'name': 'Robert', 'age': 21}

person["height"] = 174.8
print(person)  # {'name': 'Robert', 'age': 21, 'height': 174.8}

조건문과 반복문

  • 조건문

조건을 만족했을 때만 특정코드를 실행

money = 5000
if money > 3800:
    print("택시 타자!")
  • else 와 elif
money = 2000
if money > 3800:
    print("택시 타자!")
else:
    print("걸어가자...")
age = 27
if age < 20:
    print("청소년입니다.")
elif age < 65:
    print("성인입니다.")
else:
    print("무료로 이용하세요!")
  • 반복문
people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    name = person['name']
    age = person['age']
    if age > 22:
        print(name,age)
  • enumerate
    인덱스 번호와 컬렉션의 원소를 tuple형태로 반환합니다.
  • break
    반복문 탈출

함수

프로그래밍에서의 함수는 같은 동작을 한다.

def bus_rate(age):
		if age > 65:
		    print("무료로 이용하세요")
		elif age > 20:
		    print("성인입니다.")
		else:
		    print("청소년입니다")

bus_rate(27)
bus_rate(10)
bus_rate(72)

튜플

  • 튜플은 리스트와 비슷하지만 불변인 자료형이다.
a = (1,2,3)

print(a[0])

딕셔너리 대신 리스트와 튜플로 딕셔너리 비슷하게 만들어 사용해야 할 때 많이 사용 된다.

집합

집한은 말 그대로 집합. 중복이 제거 된다.
교집합 & 차집합 - 합집합 |

f-string

변수로 더 직관적인 문자열 만들기.

for s in scores:
    name = s['name']
    score = str(s['score'])
    print(f'{name}은 {score}점입니다')

예외 처리

try- except 문
에러가 있어도 건너뛰게 하기!

파일 불러오기

from main_func import *

삼향 연산자

만약 조건에 따라 다른 값을 변수에 저장하고 싶다면?

num = 3

result = "짝수" if num%2 == 0 else "홀수"

print(f"{num}은 {result}입니다.")

map,filter,lambda 식

  • map
people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

def check_adult(person):
    if person['age'] >20:
        return '성인입니다'
    else:
        return '청소년입니다'

result = map(check_adult, people)
print(list(result))

people 을 하나씩 돌면서 check-_adult 에 넣어라

  • lambda
    한줄 짜리 함수 만들기 훨씬 깔끔하게.
def check_adult(person):
    return ('성인' if person['age'] > 20 else '청소년')


result = map(lambda person: ('성인' if person['age'] > 20 else '청소년'), people)

print(list(result))
  • filter
    Ture 값만 가져오기!
result = filter(lambda person: person['age'] > 20, people)

print(list(result))

함수의 매개변수

  • 함수에 값을 넣어주면 순서를 맞추지 않아도 된다.
  • *args -> 변수 인자를 무제한으로 넣을 수 있다.
  • **kwargs 키워드 인수를 여러 개 받을 수 있다.

클래스

클래스는 언제 사용하느지 아는게 더 중요하다.
몬스터의 hp를 관리해야 한다면 어떻게 해야 편할까.
1. 리스트의 잘지켜서 각 몬스터 hp 관리
2. 몬스터 마자 각자의 hp를 가질 수 있게 한다.
뱀 자체적으로 관리하는게 효율 적이고 직관적 이다.
-> 이런걸 객체 지향 적이다. 라고 한다
함수를 불러다가 물체를 제어!

class Monster():
    hp = 100
    alive = True

    def damage(self, attack):
        self.hp = self.hp - attack
        if self.hp < 0:
            self.alive = False

    def status_check(self):
        if self.alive:
            print('살아있다')
        else:
            print('죽었다')

m = Monster()
m.damage(120)

m2 = Monster()
m2.damage(90)

m.status_check()
m2.status_check()
profile
진킴

2개의 댓글

comment-user-thumbnail
2022년 4월 25일

화이팅 화이팅!!!

1개의 답글