A Developing Developer

[스파르타코딩클럽] 파이썬 문법 뽀개기 본문

내일배움캠프 4기/파이썬 문법 기초 KDT 실무형

[스파르타코딩클럽] 파이썬 문법 뽀개기

H-JJOO 2022. 11. 21. 15:02
  • 변수

변수이름 = 값

 

  • 숫자

사칙연산 가능 + 몫과 나머지 ( +, - , *, /  , %)  + 제곱

제곱 : x 의 y 승 -> x ** y

 

문자열 '1' 을 숫자로 바꾸기위해서는 int('1'), 이런식으로 사용한다.

 

  • Boll 

Ture, False

 

<, >. <=, >=, ==, !=  

 

  • 문자열

a = 'aa'

 

숫자 1 을 문자열로 바꾸기위해서는 str(1), 이런식으로 사용한다.

 

문자열 연산 : 문자열 간의 더하기는 문자열을 이어붙인 문자열을 반환.

 

- 인덱싱 : 문자열의 일부를 따로 떼어 부르는 방법

#quiz 1 spa 까지만 출력
text = 'sparta'

result = text[0:3]

print(result)

 

- 슬라이싱 : 문자열의 일부를 잘라내는 방법

phone = '02-123-1234'

result = phone.split('-')[0]

print(result)
  • 리스트

- 순서가 있는, 다른 자료형들의 모임

a = [1, 5, 2]
b = [3, "a", 6, 1]
c = []
d = list()
e = [1, 2, 4, [2, 3, 4]]

- len() : 리스트의 길이

a = [1, 5, 2]
print(len(a)) # 3
b = [1, 3, [2, 0], 1]
print(len(b)) # 4

- append() : 덧붙이기

a = [1, 2, 3]
a.append(5)
print(a) # [1, 2, 3, 5]
a.append([1, 2])
print(a) # [1, 2, 3, 5, [1, 2]]
# 더하기 연산과 비교!
a += [2, 7]
print(a) # [1, 2, 3, 5, [1, 2], 2, 7

- sort() : 정렬하기

a = [2, 5, 3]
a.sort()
print(a) # [2, 3, 5]

# 역순
a.sort(reverse=True)
print(a) # [5, 3, 2]

- x in a : 요소가 리스트 안에 있는지 알아보기

a = [2, 1, 4, "2", 6]
print(1 in a) # True
print("1" in a) # False
print(0 not in a) # True
  • 딕셔너리 : 키(key)와 벨류(value)의 쌍으로 이루어진 자료의 모임
person = {"name":"Bob", "age": 21}
print(person["name"])

- 딕셔너리의 값을 업데이트하거나 새로운 쌍의 자료를 넣을 수 있음

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}

- 'x' in a : 딕셔너리 안에 해당 키가 존재하는지 알고 싶을 때 사용

person = {"name":"Bob", "age": 21}
print("name" in person) # True
print("email" in person) # False
print("phone" not in person) # True

- 리스트와 딕셔너리의 조합

# quiz 3 smith 의 과학점수 출력
people = [
    {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
    {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
    {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
    {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]

result = people[2]['score']['science']

print(result)

- enumerate : 번호 매기기

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 i, person in enumerate(people):
    name = person['name']
    age = person['age']
    print(i, name, age)
    if i > 3 :
        break
  • 조건문 : 조건을 만족했을 때만 특정 코드를 실행하도록  하는 문법

- if 문

money = 5000
if money > 3800:
print("택시 타자!")

- else 와 elif

age = 27
if age < 20:
    print("청소년입니다.")
elif age < 65:
    print("성인입니다.")
else:
    print("무료로 이용하세요!")
  • 반복문
# quiz 4 짝수 몇개
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

cnt = 0

for num in num_list:
    if num % 2 == 0:
        cnt += 1

print(cnt)
  • 함수 : 반복적으로 사용하는 코드들에 이름을 붙여놓은 것

- 주민등록번호로 성별 구하기

# quiz 7 주민등록번호로 성별 구하기

def check_gender(pin):
    gender_pin = pin.split('-')[1][0]
    if int(gender_pin) % 2 == 0:
        print('여성')
    else:
        print('남성')

my_pin = '200101-2012345'
check_gender(my_pin)
  • 튜플 : 리스트랑 똑같이 생겼는데 불변형이다. 리스트는 [] 튜플은 ()
# list 는 변화가 가능하다.
a_list = [1,2,3,4]

# tulple 은 변화가 불가능하다.
a_tuple = (1,2,3,4)
  • 집합 : 리스트에서 중복을 제거해준다.
# quiz 8 차집합, A 가 듣는 수업 중 B 가 듣지 않는 수업 찾기
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']

set_a = set(student_a)
set_b = set(student_b)

# 교집합 A 와 B 가 같이 듣는 수업
set_a & set_b

# 합집합 A 와 B 가 듣는 수업
set_a | set_b

# 차집합 A 는 듣지만 B는 듣지 않는 수업
set_a - set_b
  • f-string : 변수로 더 직관적인 문자열 만들기
# f-string

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}
]

for s in scores:
    name = s['name']
    score = str(s['score'])
   
    print(f'{name}의 점수는 {score}점 입니다.')
  • 예외처리 (뭔가 잘못 될 가능성이 있다 싶은 코드에 적용, 너무 남용하면 안된다.)
try:
        구문
except:
        에러났을때 나오는 구문
people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby'},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    try:
        if person['age'] > 20:
            print (person['name'])
    except:
        print(person['name'], '에러입니다.')
  • 파일 불러오기
from 불러올 파일명 import *
  • 한줄의 마법

- if 문

('짝수' if num % 2 == 0 else '홀수')
# num 의 나머지가 0 이면 짝수 아니면 홀수

- for 문

[a * 2 for a in a_list]
# a_list 값을 2 곱하면서 반복해라
  • map : 리스트의 모든 원소를 조작하기
  • filter : map과 유사, True 인 것들만 뽑기
  • lambda식 : 한줄짜리 함수를 굳이 함수로 만들지않고 깔끔하게 정리하는데 도움을 주는 표현식?
# map : 리스트의 모든 원소를 조작하기, lambda 식 : 한줄짜리 함수를 굳이 함수로 만들지않고 깔끔하게 정리하는데 도움을 주는 표현식?, fitler : map과 유사, True 인 것들만 뽑기

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}
]

result = filter(lambda  x: x['age'] > 20, people)

# people 을 돌면서 check_adult 에 넣어라,
print(list(result)) #  그리고 그 결과값을 다시 list 로 묵은거
  • 함수 심화 
# 1. 함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있음. 순서 상관 없음

def cal(a, b):
    return a + 2 * b
    
print(cal(3, 5)) # 13
print(cal(5, 3)) # 11
print(cal(a = 3, b = 5)) # 13
print(cal(b = 5, a = 3)) # 13

# 2. 특정 매개변수에 디폴트 값을 지정해줄 수 있음

def cal2(a, b = 3):
    return a + 2 * b

print(cal2(4)) # 10
print(cal2(4, 2)) # 8
print(cal2(a = 6)) # 12
print(cal2(a = 1, b = 7)) # 15


# 3. 입력값의 개수를 지정하지 않고 모두 받는 방법! *args

def call_names(*args):

    for name in args:
    	print(f'{name}야 밥먹어라~')
    
call_names('철수', '영수', '희재')

# 철수야 밥먹어라~
# 영수야 밥먹어라~
# 희재야 밥먹어라~

# 4. 키워드 인수를 여러 개 받는 방법! **kwars

def get_kwargs(**kwargs):

    print(kwargs)

get_kwargs(name = 'bob')
get_kwargs(name = 'john', age = '27')

# {'name': 'bob'}
# {'name': 'john', 'age': '27'}
  • 클래스
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('죽었따')


m1 = Monster() # m1 을 인스턴스라고 한다.
m1.damage(150)
m1.status_check() # 죽었따

m2 = Monster()
m2.damage(90)
m2.status_check() # 살았따

============================================================================================

출처 : [스파르타코딩클럽] 파이썬 문법 뽀개기

============================================================================================