본문 바로가기

TIL

[TIL 2024. 02. 20]

오늘 한 일

  • 오전 팀 회의
  • 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