카테고리 없음

[파이썬 문법기초] 내일배움캠프 AI트랙

lovvepearl 2021. 12. 13. 23:08

 

가장 기본적인 파이썬 문법의 개념을 짚고 넘어가자!

문법은 변수, 자료형, 함수, 조건문, 반복문으로 크게 다섯가지로 나뉘고

더 나아가 심화개념들도 알아보고자 한다🔥

 

01. 변수란?

값을 담는 상자.

컴퓨터의 입장에서는 메모리에 담긴 변수를 가리키는 것.

 

02. 리스트와 딕셔너리

리스트는 순서(index)가 있는 배열.

a = [1, 2, [2, 3], 0]
# a라는 리스트에서 원하는 값 print할때
# 아래와 같이 index번호로 값을 불러옴

print(a[2])      # 출력값 [2, 3]
print(a[2][0])   # 출력값  2

 

딕셔너리는 key:value 형태의 자료 모음. 순서가 없기 때문에 index 사용할수 없음!

person = {"name":"Bob", "age": 21}
# 딕셔너리에서 key값으로 value값을 얻을 수 있음
print(person["name"])
# 출력값 Bob

 

03. 함수

반복적으로 사용하는 코드에 이름을 붙여놓은 것.

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

money = bus_fee(28)  # 출력값 "성인입니다."
print(money)         # 출력값 1200

# print 구문으로 출력
# return 구문으로 결과값을 돌려줄수도 있음

 

 

04. 조건문(if, elif, else)

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

# 20 < age < 65이기 때문에
# 출력값 "성인입니다."

 

05. 반복문(for)

fruits = ['사과', '배', '감', '귤']
# fruits 배열을 한바퀴 돌려서 과일을 나열하기
for fruit in fruits:
    print(fruit)
# 출력값
# 사과
# 배
# 감
# 귤
# 순서대로 출력됨

 

 

좀 더 심화된 파이썬 개념들을 알아보자!

06. 튜플(불변의 자료형)

배열은 추가, 삭제를 할 수 있는 가변의 자료형.

튜플은 불변의 자료형.

 

a_list = ['지환', '진주', '라담']
a_tuple = ('지환', '진주', '라담')

# 배열을 묶는 괄호가 다름
# 순서가 있기 때문에 index 사용가능

 

07. 집합

 

배열의 중복을 제거할 수 있음

a = [1,2,3,4,5,3,4,2,1]

# set의 변수로 a를 집어넣어 중복이 제거된 결과물을
# a_set으로 표기
a_set = set(a)

print(a_set)  # 출력값 [1,2,3,4,5]

 

08. f-string

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},   
]

# 반복문을 통해 얻은 자료를 활용하고 싶을때
# {}을 사용하여 원하는 자리에 문자열로 삽입가능
for s in scores:
    name = s['name']        # name의 value 값을 불러오기
    score = str(s['score']) # score의 value 값(숫자)을 문자로 변환하여 불러오기
    
    print(name+'는 '+score+'점 입니다') # f-string 사용하지 않는 방법
    print(f'{name}은 {score}점입니다')  # f-string 사용하는 방법

 

09. 예외처리(try-except)

오류를 예외처리하여 프로그램을 문제없이 실행하도록 함.

실제 코딩할때는 어디에서 오류가 났는지 찾기 어렵기 때문에 잘 사용하지 않음🤦‍♀️

 

for person in people:
    try:
        if person['age'] > 20:       # age 값을 가지고 있는 경우 try구문 실행
            print (person['name'])
    except:          
        name = person['name']        # age 값이 없는 경우 except 구문 실행
        print(f'{name} - 에러입니다')

 

 

10. map, filter, lambda 식

map = 리스트의 원소를 조작하여 새로운 배열 생성

Filter = 리스트의 원소 중 특별한 값만 추출

Lambda = map이나 filter 기능을 개별함수 없이 실행할수 있도록 함. 주로 변수 x를 사용

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'carry', 'age': 38},
]

def check_adult(person):
    # if person['age'] > 20:         # age 가 20 초과면 '성인' 같거나 이하면 '청소년'
        # return '성인'
    # else:
        # return '청소년'
        
    # return '성인' if person['age'] > 20 else '청소년'  # 한줄로 코드를 요약할수도 있음


result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people) # lambda 식 사용

# result = map(check_adult, people)  # map으로 people 리스트를 돌면서 check_adult 함수의
print(list(result))                  # return 값으로 새로운 리스트 생성
                                     # 출력값 ['청소년', '성인', '청소년', '성인']
                                     
result = filter(lambda x: x['age'] > 20, people) # filter로 조건에 true되는 원소만 추출
print(list(result)) # 출력값 {'name': 'carry', 'age': 38}, {'name': 'carry', 'age': 38}

 

11. 함수의 인자

입력값의 갯수를 무제한으로 받고 싶을 때 변수 *args 사용

키워드 인수를 여러개 받고 싶을 때 변수 **kwargs 사용

 

12. 클래스는 언제 사용할까?

클래스 안의 문법을 사용하는 여러 인스턴스가 있을때🥳