일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준
- vscode cp949
- 주니어개발자멘토링
- MomentumParameters
- 주니어개발자역량강화
- 99일지
- 항해
- 10430번
- not a git repository
- 파이썬 map 함수
- 항해99
- print("""
- 파이썬 |
- EnvCommandError
- 파이썬 int()
- print sep
- Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
- Til
- 개발자사이드프로젝트
- 코딩부트캠프후기
- 99클럽
- 파이썬
- 코딩테스트
- 파이썬 sep
- fatal:not a git repository
- 파이썬 클래스
- 항해플러스
- 99클럽 #99일지 #코딩테스트 #개발자스터디 #항해 #til
- 개발자스터디
- cp949
- Today
- Total
선발대
[스파르타] 파이썬 문법 기초 (완강) 본문
1. 수업 후기
- 강의 개수: 19개
- 총 강의시간: 1시간 56분
- 수업 목표:
- 1. 파이썬 기초 문법을 익히고,
- 2. 여러가지 퀴즈로 빠르게 숙달한다.
- 3. 파이썬 심화 문법들을 다뤄본다.
- 4. 머릿 속 어딘가에 담아두고, 나중에 생각나면 써먹기!
강의는 파이썬에 대한 기초가 없는 사람도 쉽게 이해할 수 있도록 구성되어있다. 생각보다 완강하는데 시간이 별로 안 걸렸는데, 완전 기초 중의 기초 내용들이 있어서 그런 것 같다. 완강에 걸린 정확한 시간은 잘 모르겠는데, 질의응답에도 보니까 수강에 2시간 반, 복습에 2시간 반으로 할당해서 총 5시간이면 완강한다고 쓰여있었다. 심화 내용에서는 그냥 이런 것들이 있구나 하고 넘어간 부분도 있고, 정말 맛보기라서 크게 어렵지는 않았다.
map, filter, try-except 등 처음 보는 문법도 많았는데 아래에 예시문을 작성했으니, 나중에 코드 작성하다 막히는 부분이 오면 다시 이 페이지로 돌아와서 확인해야겠다. 손으로 코드를 치다 보면 자연스럽게 체득될 것 같다. 아직 크게 어려운 내용이 없어서 코딩 공부가 신선하다.
2. 수업내용 정리
1-1. 필수 프로그램 설치
01. 필수 프로그램 설치
- Chrome: https://www.google.com/intl/ko/chrome/
- PyCharm Community(Professional): https://www.jetbrains.com/pycharm/download/
- Python(윈도우): https://www.python.org/ftp/python/3.8.6/python-3.8.6-amd64.exe
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()
'스파르타코딩클럽 > 활동 내용' 카테고리의 다른 글
[스파르타] 웹프로젝트1: 카카오톡 프로필 화면 만들기 (0) | 2021.12.23 |
---|---|
[스파르타] 파이썬 프로젝트3: 턴제 RPG 게임 만들기 (심화) (0) | 2021.12.22 |
[스파르타] 파이썬 프로젝트3: class 연습문제 (기초) (0) | 2021.12.21 |
[스파르타] 파이썬 프로젝트1: 업다운 게임 (0) | 2021.12.20 |
[스파르타] 내일배움 캠프 - AI 웹개발 트랙 (1기) (0) | 2021.11.09 |