선발대

[스파르타] 파이썬 문법 기초 (완강) 본문

스파르타코딩클럽/활동 내용

[스파르타] 파이썬 문법 기초 (완강)

신선한 스타트 2021. 12. 13. 17:33

1. 수업 후기

 

  • 강의 개수: 19개
  • 총 강의시간: 1시간 56분
  • 수업 목표:
  • 1. 파이썬 기초 문법을 익히고,
  • 2. 여러가지 퀴즈로 빠르게 숙달한다.
  • 3. 파이썬 심화 문법들을 다뤄본다.
  • 4. 머릿 속 어딘가에 담아두고, 나중에 생각나면 써먹기!

 

 강의는 파이썬에 대한 기초가 없는 사람도 쉽게 이해할 수 있도록 구성되어있다. 생각보다 완강하는데 시간이 별로 안 걸렸는데, 완전 기초 중의 기초 내용들이 있어서 그런 것 같다. 완강에 걸린 정확한 시간은 잘 모르겠는데, 질의응답에도 보니까 수강에 2시간 반, 복습에 2시간 반으로 할당해서 총 5시간이면 완강한다고 쓰여있었다. 심화 내용에서는 그냥 이런 것들이 있구나 하고 넘어간 부분도 있고, 정말 맛보기라서 크게 어렵지는 않았다. 

 

 map, filter, try-except 등 처음 보는 문법도 많았는데 아래에 예시문을 작성했으니, 나중에 코드 작성하다 막히는 부분이 오면 다시 이 페이지로 돌아와서 확인해야겠다. 손으로 코드를 치다 보면 자연스럽게 체득될 것 같다. 아직 크게 어려운 내용이 없어서 코딩 공부가 신선하다. 

 

2. 수업내용 정리

1-1. 필수 프로그램 설치

 

1-2. 파이썬 기초 문법 뽀개기
더보기

01. 수업의 목적

 

  • 보조자료로서의 활용에 그 목적이 있음.
  • 나중에 응용 프로젝트할 때 찾아볼 수 있는 정도로 숙지.
  • 빠르게 이론 습득하고 퀴즈로 숙달하기.
  • 코딩은 기본만 익히고, 찾아가면서 하는 것.

 

02. 배우는 순서

 

  • 1. 기초적인 문법을 차근차근
  • 2. 퀴즈를 풀며 익숙해지기
  • 3. 약간 심화된 문법/쓰임새들

 

1-3. 파이썬 시작하기
더보기

01. 파이썬을 설치한다는 것의 의미

 

  • 파이썬을 설치한다는 것: 일종의 번역팩을 설치하는 것. 파이썬 문법을 자연어로 변환.
  • 문법이 직관적이고 쉬워서 초보자가 배우기 좋은 언어임.
  • 무료/오픈소스로 운영되고 큰 커뮤니티가 있어 라이브러리를 이용한 코드작성이 쉬움.

 

02. 파이참에서 새 프로젝트 만들기

 

  • Base interpreter: 파이썬 버전이 3.8이 되어있는지 확인.
  • main.py 생성 체크표시 해제.

 

03. 첫 파이썬 파일 실행하기!

 

04. 파이썬 문법을 시작하기에 앞서...

 

  • 수업 듣고 몽땅 외우는 게 목표가 아님. 필요한 것들은 구글링해서 찾아보면 됨.

 

1-4. 변수 선언과 자료형
더보기

01. 변수 선언

 

  • 변수 선언: 변수이름 = 값
  • 나머지 연산: a%b
  • 컴퓨터 입장에서 보면, 값을 담은 위치를 기억하는 것임. 변수는 컴퓨터 메모리 공간을 가리키고 있다.

 

02. 숫자형 자료형

 

  • 자료형: 프로그래밍 할 때 숫자, 문자열 등 자료형태로 사용하는 모든 것을 의미.

 

03. Bool 자료형

 

  • 불(Boolean) 자료형: 참/거짓을 나타냄.
  • 비교연산자(>, ==, < 등)의 결과로 나타내기 위해 사용됨.
  • 논리연산자(not, and, or) 사용 가능.

 

1-5. 문자열 다루기
더보기

01. 문자열

 

  • 문자열: 텍스트 데이터
  • 사용방법: '문자열', "문자열"
  • 문자열 간의 더하기: 이어붙이기, 문자열과 정수 연산 불가능, len(): 문자열 길이
  • 인덱싱: 한 글자씩 부를 때 인덱스 이용하는 것
  • 슬라이싱: 문자열 일부를 잘라내는 것. split('문자열') 사용.

 

02. [실습] 문자열의 앞의 반만 출력하기

 

text = sparta
result = [:3]

print(result) # 'spa'

 

03. [실습] 전화번호의 지역번호 출력하기

 

phone = '02-123-1234'
result = phone.split('-')[0]
print(result) # '02'

 

1-6. 리스트와 딕셔너리
더보기

01. 리스트 (list)

 

  • 리스트: 순서가 있는 다른 자료형들의 모임
  • 리스트 길이: len() 함수
  • 리스트 요소 추가: list.append(99)
  • list[-1]: 마지막 요소 출력됨
  • 리스트 정렬: list.sort(reverse = True) // 내림차순으로 출력됨
  • 리스트 안의 요소 확인: 9 in list // 참, 거짓으로 출력됨
  • 순서 있으므로 인덱싱, 슬라이싱도 사용 가능.
  • 리스트 안에 리스트 넣기 가능

 

02. 딕셔너리 (dictonary)

 

  • 딕셔너리: 키와 밸류의 쌍으로 이루어진 자료의 모임
  • 순서가 없기 때문에 인덱싱 사용 불가.
  • 딕셔너리 요소 추가: dict['키'] = 밸류

 

03. 리스트와 딕셔너리의 조합

 

  • 자료 정리할 때 종종 사용함.
  • ex) 리스트 안에 딕셔너리가 여러 개 있는 형태: print(people[1]['age'])

 

04. [실습] 딕셔너리에서 원하는 정보를 찾아보기

 

 

print(people[2]['score']['science'])

 

1-7. 조건문
더보기

01. if문

 

  • if문: 조건 만족했을 때만 특정 코드를 실행하도록 하는 문법
money = 5000
if money > 3000:
	print('택시를 타자!')
elif money > 1200:
	print('버스를 타자!')
else:
	print('걸어가자..')

 

02. else와 elif

 

  • else: 조건을 만족하지 않을 때 다른 코드를 실행할 때 쓰는 문법
  • elif: 다양한 조건 판단할 때 사용.

 

1-8. 반복문
더보기

01. for문

 

for fruit in fruits:
	print(fruit)

 

02. 함께하기 - Q. 사람의 나이 출력하기

 

# 20살 이상인 사람만 출력하는 반복문

for person in people:
	if person['age'] > 20:
    	print(person['name']

 

03. for문 - enumerate, break

 

# enumerate: 인덱스도 같이 출력

for i, person in enumerate(people) 
	name = person['name']
    age = person['age']
    print(i, name, age)
    if i > 2:
    	break # 인덱스 3까지 출력됨
        # break는 자료의 양이 많을 때 끊어서 코딩할 수 있도록 함

 

1-9. 반복문 - 연습문제
더보기

01. [실습] 리스트에서 짝수만 출력하는 함수 만들기

 

for a in num_list:
    if a % 2 == 0:
        print(a)

 

02. [실습] 리스트에서 짝수의 개수를 출력하기

 

for a in num_list:
    if a % 2 == 0:
        b += 1
print(b)

 

03. [실습] 리스트 안에 있는 모든 숫자 더하기

 

result = 0
for num in num_list:
    result += num

print(result)

 

04. [실습] 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기

 

max = 0
for num in num_list:
    if max < num:
        max = num
print(max)

 

1-10. 함수
더보기

01. 함수 사용 방법

 

# 함수 정의
def hello():
	print("잘가!")

# 함수 사용법
hello()

 

02. [실습] 주민등록번호를 입력받아 성별을 출력하는 함수 만들기

 

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

my_pin = "200101-3012345"
check_gender(my_pin)

 

1-11. 파이썬 심화 문법 뽀개기
더보기

01. 심화수업에서 다룰 내용들

 

  • 약간 심화된 문법에 관해서 다룸.
  • 바로 쓸만한 것도 있고, 알아두기만 해도 괜찮은 것들이 있으니 맘 편안히 들어라.

 

1-12. 튜플, 집합
더보기

01. 튜플 (tuple)

 

  • 튜플: 리스트와 비슷하지만 불변인 자료형. 추가, 수정 불가능.
  • 순서가 존재함.
  • 딕셔너리 대신 리스트와 튜플로 비슷하게 딕셔너리를 구현할 때 많이 사용.
a = ('사과', '감', '배')
a[1] = '수박' # 리스트랑 다르게 수정 불가능.
print(a[1])

 

02. 집합 (set)

 

  • 집합: 말 그대로 집합을 구현하는 방법
  • 좋은점 : 중복이 제거됨.
  • 교집합, 합집합, 차집합 구할 수 있음.
a = [1, 1, 1, 1, 2, 3, 4]
a_set = set(a)
print(a_set) # {1, 2, 3, 4} 중복이 제거되고 집합 생성


a = ['사과', '감', '배', '수박']
b =  ['사과', '감', '포도']
a_set = set(a)
b_set = set(b)
print(a_set & b_set) # 교집합, {'사과', '감'}
print(a_set | b_set) # 합집합, {'사과', '감', '배', '포도', '수박'}

 

03. [실습] 구글링 문제 - Q. A가 들은 수업 중, B가 듣지 않은 수업을 찾아보기

 

  • 차집합은 집합끼리 - 연산, 또는 difference 함수 이용함. 
  • ex) a_set - b_set, 또는 a_set.difference(b_set)

 

1-13. f-string
더보기

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

 

scores = [...] # 리스트 안에 여러 개의 딕셔너리가 있는 형태

for s in scores:
	name = s['name']
    score = str(s['score'])
    print(name + '의 점수는 ' + score + '점입니다.')
    
    
# f-string
	print(f'{name}의 점수는 {score}점입니다.')

 

1-14. 예외처리
더보기

01. try - except 문

 

  • 에러가 있어도 건너뛰게 할 수 있는 방법
  • 남용하지 말기. 에러가 어디에서 생긴지 모르게된다.
  • 서버 쪽 잘못인지 내 잘못인지 판단 가능.
people = [...] # 딕셔너리 포함된 리스트

for person in people:
	try:
    	if person['age'] > 20:
        	print(person['name'])
    except: # 자료가 부족하거나 기타의 이유로 에러가 날 때 이쪽으로 빠져나옴
    	print(person['name'], '에러입니다.')

 

1-15. 파일 불러오기
더보기

01. 여러 개 파일로 분리하려면

 

# main_func.py: 함수들만 있는 파일

fron main_func import * # main_func 파일에서 모든 함수(*)을 호출한다. 원하는 함수만 호출 가능.
ex) say_hi_to('영수')

 

1-16. 한줄의 마법
더보기

01. if문 - 삼항연산자

 

num = 3
if num % 2 == 0:
	result = '짝수'
else:
	result = '홀수' 
print(f'{num}은 {result}입니다.')


# 위의 if문을 한 줄로 쓰는 방법
result = ('짝수' if num % 2 == 0 else '홀수') # 괄호는 없어도 됨.

 

02. for문 - 한 방에 써버리기

 

a_list = [1, 2, 3, 4, 5]
b_list = []

for a in a_list:
	b_list.append(a*2)

print(b_list)


# 위의 for문을 한 줄로 입력하는 방법
b_list = [a*2 for a in a_list]

 

1-17. map, filter, lambda식
더보기

01. map - 리스트의 모든 원소를 조작하기

 

people = [...] # 딕셔너리 포함된 리스트

def check_adult(person):
	if person['age'] > 20: # 짧게 쓰면, return ('성인' if person['age'] > 20 else '청소년')
    	return '성인'
    else:
    	return '청소년'
        
result = map(check_adult, people) # people의 요소를 하나씩 돌면서 check_adult 함수에 넣어라
print(list(result)) # result를 다시 리스트로 묶기


# lambda식 이용. 굳이 함수까지 만들 필요가 없다.
result = map(lambda person: ('성인' if person['age'] > 20 else '청소년'), people)
# people의 요소를 하나씩 person에 넣고, person을 위의 조건에 맞춰서 리턴해라.

 

02. filter - 리스트의 모든 원소 중 특별한 것만 뽑기

 

people = [...]
result = filter(lambda x: x['age'] > 20, people) # map과 유사하지만 True인 것들만 뽑는다.
print(list(result) # [{...}, {...}, ...]

 

1-18. 함수 심화
더보기

01. 함수의 매개변수

 

  • 직접 쓰는 것보다 알고 있으면 내장함수 등 사용할 때 도큐먼트 읽는 데 도움이 됨.
  • 1. 함수에 인수를 넣을 때, 어떤 매개변수에 어떤 값을 넣을지 정해줄 수 있음
def cal(a, b):
	return a + 2 * b

print(cal(a=3, b=5))
print(cal(b=5, a=3))

 

  • 2. 특정 매개변수에 디폴트 값을 지정해줄 수 있음
def cal2(a, b=3):
	return a + 2 * b

print(cal2(a=6)) # 입력 안해주면 디폴트값으로 출력됨
print(cal2(4, 2))

 

  • 3. 입력값의 개수를 지정하지 않고 모두 받는 방법 (라이브러리에서 많이 사용됨)
def cal3(*args): # 인자를 무제한으로 받을 수 있음
	for name in args:
    	print(f'{name} 밥 먹어라~'}

cal3('영희', '철수', '가영', ...)

 

  • 4. 키워드 인수를 여러 개 받는 방법 (라이브러리에서 많이 사용됨)
def cal(**kwargs):
	print(kwargs) # 받은 인자들을 딕셔너리로 출력해줌
    
cal(name = 'bob', age = 30, ...) # {'name': 'bob', 'age': 30, ...}

 

1-19. 클래스
더보기

01. 우선, 클래스를 언제 사용하는지 생각해보시죠!

 

  • 물체에 물체와 관련된 속성을 넣어주고 컨트롤 할 수 있는 함수만 붙여줌. 중앙은 함수호출만 하면 됨.

 

02. 클래스의 사용방법을 눈으로 살펴보겠습니다.

 

class Monster():
    hp = 100
    alive = True

    def damage(self, attack): # 외부에서 호출 가능, attack(받은 피해)은 입력됨, self는 클래스 지칭
        self.hp = self.hp - attack
        if self.hp < 0:
            self.alive = False

    def status_check(self):
        if self.alive: # == True 와 동일한 의미
            print('살아있다')
        else:
            print('죽었다')

m1 = Monster() # 각각의 몬스트 m1, m2를 인스터스라고 함
m1.damage(120)
m1.status_check()

m2 = Monster()
m2.damage(90)
m2.status_check()
Comments