오늘 한 일
- 오전 팀 회의
- gpt 웹개발 복습: jquery, fetch, database
- 파이썬 기본 문법 복습: 함수~map, filter, lambda식
- 오후 특강 참석
- TIL 작성
- 파이썬 핸드북
오늘의 리뷰
gpt 웹개발 복습
1. 정리
자바스크립트
- 리스트, 값 추가: 변수.push('문자열' or 변수)
- 리스트, 값 가져오기: console.log(마찬가지), 변수에 새로 담기
- 딕셔너리, 값 추가: 변수['추가할 키'] = 추가할 벨류
- 딕셔너리, 값 가져오기: console.log(마찬가지), 변수에 새로 담기
- 리스트-딕셔너리 자료형, 값 가져오기: console.log(마찬가지), 변수에 새로 담기
파이썬
- 리스트, 값 추가: 변수.append('문자열' or 변수)
- 리스트, 값 가져오기: print(마찬가지), 변수에 새로 담기
- 딕셔너리, 값 추가: 변수['추가할 키'] = 추가할 벨류
- 딕셔너리, 값 가져오기: print(마찬가지), 변수에 새로 담기
- 리스트-딕셔너리 자료형, 값 가져오기: print(마찬가지), 변수에 새로 담기
- ex. names가 리스트이므로, names.push(new_name)으로 값을 추가함.
(참고) jquery_$('#선택자').append(), empty(), text(), attr()
2. 자바스크립트_자동완성 활용
- 함수 생성: function statement로 자동완성
- 반복문: for loop 자동완성 (조건 검사_만족이면 실행)
- 리스트(=array)의 반복문: foreach 자동완성
- 조건문: if statement 혹은 ifelse statement 자동완성
- onclick = "함수()"
3. jquery
- 문자열을 태그로 전환시(백틱 사용)+리스트 반복문(foreach: array, element)
- => `<p>${element}</p>`
- if문/ifelse문: 이전에 빈 문자열(따옴표)을 선언(let)해줘야 함.
- 왜냐하면 if/ifelse문 내에서의 변수 선언은 그 안에서만 쓰이므로, (앞서서 빈 문자열 선언이 없으면) not defined 오류가 발생함. 즉, 조건문 앞에 (1) 빈 문자열 선언하고 (2) 조건문 내의 let은 삭제해야 함.
4. fetch
- fetch 기본코드 4줄 = 브라우저창에 주소url을 입력하고 enter = 브라우저가 서버에 데이터를 요청하고, 해당 url의 데이터를 받아옴.
fetch("여기에 URL을 입력")
.then(res => res.json())
.then(data => {
console.log(data)
})
5. 파이썬
- 함수 생성: def 함수명(매개변수):
- f-string: f`{name}은 {score}점입니다.`
- f-string은 따옴표(문자열) 사용!
- app.py에서 html로 데이터 넘기기: html에서 해당 자리에 {{ data }}로 넣음. 띄어쓰기 주의
- data가 딕셔너리(=여러 개 데이터 넘기기, context)라면, 키로 접근해야 함. {{ data.name }}
- 페이지 이동 기능: html에서 href = "{{ url_for('home') }}"
- => url_for()은 경로지정. 괄호 안의 'home'은 app.py에서 정의되니 함수 'home'임.
- 부트스트랩: css cdn, javascript cdn, icon cdn
- 제이쿼리: cdn
6. database.db 세팅하기
1. sqlite3.editor를 기본으로 설정 후, 설정을 위해 만들었던 db파일은 삭제.
(db파일 사용 중에는 삭제 안 됨-> 파일 꺼주고, 마우스로 삭제)
2. 가상환경 생성, 활성화
3. 라이브러리 설치(flask-sqlalchemy)_pip install
4. app.py와 database.db 파일 생성
5. app.py에 sqlalchemy 준비코드, database 설계 코드 입력
6. 터미널 상에서 flask shell
from app import db, Song //*설계도 이름*//
db.create.all()
여기까지 하면, 설계도대로 실제 database를 만든 것임!
7. database 조작하기_flask shell 활성화 상태여야.
(대소문자 주의)
song_list = Song.query.all()
song_list[0].title
song_list[0].artist
-> orm. 굳이 sql을 활용하지 않아도, 프로그래밍언어(여기선 파이썬)으로 데이터베이스를 조작할 수 있음.
파이썬 기초 문법(튜플~map, filter, lambda식)
1. 함수
def sum(a,b):
print('더하기를 했어요!')
return a+b
result = sum(1,2)
print(result)
//*코드대로라면 일단 한번 프린트하고, return구문을 만나면 return 뒤의 값으로 싹 바뀜. 그리고 그걸 프린트함*//
(참고) 매개변수: 필수/선택적, 재료=입력받는 값.
def check_gender(pin):
num = pin.split('-')[1][:1]
if num % 2 == 0:
print('여성입니다.')
else:
print('남성입니다.')
check_gender('123456-1352646')
check_gender('123456-2498642')
check_gender('123456-1349868')
//*pin자체가 문자열이었고, num도 문자열임. 문자를 2로 나눈 나머지를 구하는 것은 불가능하므로, 이를 int를 통해 숫자로 변경해줘야 함*//
2. 튜플
- 리스트, 튜플: 순서가 있는 자료형
- 단, 리스트는 가변형(수정 가능), 후자는 불변형.
people = [{'name':'bob', 'age':25},{'name':'smith', 'age':30}]
//*리스트-딕셔너리 자료형*//
people = [('bob', 25),('smith', 30)]
//*튜플 자료형*//
3. 집합
set(리스트) : 중복 제거
a_list=[1,3,2,4,6,3,5,8,8,5,3,5,7,4]
a_set: set(a_list) : 집합을 만듦
b_set: set(b_list)
print()
교집합 a_set & b_set
합집합 a_set | b_set
차집합 a_set - b_set (앞뒤 위치에 따라 의미 달라짐)
4. f-string: f`문자{}열`
: 문자열인지, 숫자인지 주의해야 함!!
scores = [딕셔너리를 품은 리스트]
for s in scores:
name = s['name']
score = s['score']
print(f'{name}의 점수는 {score}점입니다.')
//*이를 f-string을 사용하지 않으면 번거로워짐. print(name+'의 점수는 '+str(score)+'점입니다') *//
주의할 것은 score = s['score']이 숫자라는 것! 리스트의 딕셔너리 내 키: 벨류가 'score':90 이런 식이므로, 변수 score는 숫자임. 문자열+문자열로 합쳐주려면, str()을 통해 문자열로 변환해줘야 함.
=> f-string을 쓰면 이렇게 복잡하게 생각할 필요 없음. 이것이 f-string의 진가!
5. 예외처리: try를 시도하고, 만약 에러가 발생하면 (멈추지 말고) except로 빠져라.
->들여쓰기 주의!
->남용하면, 에러를 찾기 어려움.
6. 파일 불러오기: 깔끔!
py파일이 2개. 예를 들어, main.py와 func.py
함수만 전부 func.py에 저장하고,
main.py에는
from func(=.py파일명) import *(->선택적 import도 가능함
ex. import say_hi_to(=함수명)
7. 한줄의 마법
(1) ifelse문
삼항연산자: 사실상 ifelse문을 각:와 return을 빼고, 재배치한 것.
=> result = (~~~~~~~~~)
괄호가 없어도 되지만, 우리는 초보니까 괄호 하는 것을 추천함.
(2) for문(=반복문)
2배 하고, 걔들을 리스트로 묶어라.
8. map, filter, lambda식
people = [딕셔너리를 품은 리스트]
def check_adult(person): //*person은 딕셔너리 하나씩*//
if person['age']>20:
print('성인입니다.')
else:
print('청소년입니다.')
result = map(check_adult, people) //*people을 하나씩 돌면서 check_adult에 넣어라*//
print(list(result)) //*return값을 리스트로 묶어라*//
1단계: 함수정의(ifelse문)+map
people = [딕셔너리를 품은 리스트]
def check_adult(person): //*person은 딕셔너리 하나씩*//
return ('성인입니다.' if person['age']>20 else '청소년입니다.')
result = map(check_adult, people) //*people을 하나씩 돌면서 check_adult에 넣어라*//
print(list(result)) //*return값을 리스트로 묶어라*//
2단계: 함수 정의(삼항연산자)+map
=>def함수,return
:삼항연산자는 사실상 ifelse문을 각:와 return을 빼고, 재배치한 것임.
people = [딕셔너리를 품은 리스트]
result = map(lambda x:('성인입니다.' if x['age']>20 else '청소년입니다.'), people)
//*people을 하나씩 돌면서 x에 넣고, ()의 값을 return하라. 통상적으로 x를 사용함. 괄호 쓰면 혼동 방지*//
print(list(result)) //*return값을 리스트로 묶어라*//
3단계: 굳이 함수 정의하지 않고, map과 lambda식을 사용함.
(참고) (filter,lambda)식
people =
result =
print()
(참고)매개변수: 필수/선택적.
: gpt의 도움ㅇㅇ.
'TIL' 카테고리의 다른 글
[TIL 2024. 02. 22] (0) | 2024.02.23 |
---|---|
[TIL 2024. 02. 21] (0) | 2024.02.21 |
[TIL 2024. 02. 19] (0) | 2024.02.19 |
[TIL 2024. 02. 16] (0) | 2024.02.19 |
[TIL 2024. 02. 15] (0) | 2024.02.16 |