Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Nonamed Develog

[TIL] AI 웹 개발 7기 사전 캠프 1-3 본문

WHAT I LEARN/TIL

[TIL] AI 웹 개발 7기 사전 캠프 1-3

노네임드개발자 2024. 5. 22. 17:51

[데일리미션] Python 톺아보기

 

1. Python이란?

 

Python은 가독성이 높고 문법이 쉽다”라는 문장에 증거가 될 사례를 작성해주세요.
검색량을 기준으로 프로그래밍 언어 선호도를 조사하는 TIOBE index에서 2021년 2월 기준 파이썬은 선호하는 프로그래밍 언어 3위(10.86%)를 차지했으며, 오라일리 미디어가 온라인 학습 플랫폼의 학습 과정 및 사용자 선호도를 분석해 발표한 프로그래밍 언어 순위에서는 파이썬이 Java와 C++을 제치고 가장 높은 사용률을 보였다.


가독성이 좋은 언어를 사용했을때 어떤 이점이 있나요?
다른 프로그래밍 언어보다 빠른 습득이 가능하기 때문에 프로그래밍을 전공하지 않은 비전공자 중심으로 많이 사용돼 데이터 분석과 모델링을 다루는 통계학, 딥러닝과 인공지능을 활용하는 의학까지 다양한 분야에 두루 사용되고 있다.

2. Python 프레임 워크 알아보기

 

Django

Django의 특징은 무엇인가요?

 

Django 프레임워크란?

  • Django는 무료 오픈 소스인 python 웹 프레임워크이다.
  • Adrian Holovaty와 Simon Willison이 2003년에 만들어졌다.
  • Django 주요 목표 중 하나가 복잡한 데이터베이스 기반의 웹 사이트를 개발할 수 있도록 하는 것
  • 적은 코드, 낮은 결합 및 재사용성, 연결 가능성 등 빠른 개발에 도움이 됨

Django 장점

  • MVC (모델-뷰-컨트롤러) 아키텍처를 활용한 데이터 베이스 접근 용이성
  • ORM (객체 관계형 맵핑), 관계형 데이터베이스, 웹 템플릿, URL 디스패처 등의 여러 가지 구성
  • Django의 contib 패키지를 활용하여 여러 애플리케이션을 번들로 묶어 재사용 가능하게 함
  • CSRF (사이트간 요청 위조), 사이트 간 스크립팅, SQL Injection 등의 보안 모듈 제공
  • 구글 사이트맵, GIS 애플리케이션 생성하는 도구
  • 강력한 API 제공하며 인증 및 권한 규칙 기능을 제공

Django 단점

  • Django 프레임워크의 규칙이 별도로 존재하지 않는다.
  • 소규모 프로젝트에는 적합하지 않다.
  • 단일 패키지로 간주해야 하는 모놀리식 아키텍처이다.
  • 많은 기능과 구성으로 인해 빠른 학습이 어렵다.
  • 개별 프로세스에 대한 요청은 Django 개발 프로세스를 느리게 할 수 있다.

 

Flask

Flask의 특징은 무엇인가요?

 

Flask 프레임워크란?

웹 개발에 특정 라이브러리나 도구가 필요하지 않는 마이크로 프레임워크이다.
쉽고 빠른 방법으로 더 낮은 기능을 가진 경량 애플리케이션을 개발하는 것이다.

 

Flask 장점

  • 단순하고 간단하게 일부를 쉽게 안전하게 변경할 수 있다.
  • 대규모 네트워크에 배포할 수 있는 모듈식의 응용 프로그램이나 서버를 만들 수 있다.
  • 파이썬을 잘 이해하면 쉽게 응용 프로그램을 개발할 수 있다.
  • 모놀리식 애플리케이션이 아니므로 확장성이 뛰어나다.

Flask 단점

  • 표준화되어 있지 않기때문에 Django 등의 프레임워크 전환이 어려울 수 있다.
  • 개발 확장과 배포를 위해서 라이브러리 및 확장을 많이 검색해봐야 한다.

 

밀린 알고리즘 코드카타 풀어보기

 

1. 두 수의 차

Q. 정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.

def solution(num1, num2):
    answer = num1 - num2
    return answer

 

2. 두 수의 곱

Q. 정수 num1num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.

def solution(num1, num2):
    answer = num1*num2
    return answer

 

3. 몫 구하기

Q. 정수 num1num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.

def solution(num1, num2):
    answer = num1//num2
    return answer

 

파이썬 문법 기초 2주차 강의

 

2-1 파이썬 문법 뽀개기 - 심화

 

2-2 튜플, 집합

 

튜플 예제

a = ['사과','감','배']

a[1] = '수박'

print(a)

 

이 전에 배운 리스트이다. 리스트에서 특정 부분만 변경이 가능하다.

하지만 튜플은 리스트랑 똑같이 생겼지만 '불변형'이다.

a = ('사과','감','배')

print(a)

튜플은 []가 아니라 ()이다. 리스트와 똑같이 보인다.

a = ('사과','감','배')

a[1] = '수박'

print(a)

하지만 특정 부분을 바꾸려고 하면 에러가 난다.

 

튜플은 순서가 있는 자료형이며 불변형이고 추가도 할 수 없다.

 

집합 예제

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

a_set = set(a)
print(a_set)

→{1, 2, 3, 4, 5, 7, 8}

a_set이라는 변수를 만들어서 넣어보자.

리스트를 집합에다가 넣으면 집합이 만들어진다.

집합의 특징은 중복을 제거해준다.

 

교집합, 합집합, 차집합

a = ['사과','감','배','수박','딸기']
b = ['배','사과','포도','참외','수박']

a_set = set(a)
b_set = set(b)

print(a_set & b_set)

교집합은 &

 

a = ['사과','감','배','수박','딸기']
b = ['배','사과','포도','참외','수박']

a_set = set(a)
b_set = set(b)

print(a_set | b_set)

합집합은 |

 

Quiz 차집합 AB 수업 문제

student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']

a_set = set(student_a)
b_set = set(student_b)

print(a_set - b_set)

차집합은 -

 

보통 중복 제거를 할 때 사용한다.

 

2-3 f-string

 

점수모음

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}
]

for s in scores:
    print(s)

{'name': '영수', 'score': 70}
{'name': '영희', 'score': 65}
{'name': '기찬', 'score': 75}
{'name': '희수', 'score': 23}
{'name': '서경', 'score': 99}
{'name': '미주', 'score': 100}
{'name': '병태', 'score': 32}

 

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}
]

for s in scores:
    name = s['name']
    score = s['score']
    print(name, score)

영수 70
영희 65
기찬 75
희수 23
서경 99
미주 100
병태 32

name은 s의 'name'이고, score는 s의 'score'이다

 

<name의 점수는 score점 입니다>처럼 만들어 보자

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}
]

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

영수의 점수는 70점 입니다.
영희의 점수는 65점 입니다.
기찬의 점수는 75점 입니다.
희수의 점수는 23점 입니다.
서경의 점수는 99점 입니다.
미주의 점수는 100점 입니다.
병태의 점수는 32점 입니다.

문자열(name)+문자열('의 점수는')+문자로 바꾼 숫자(str(score))+문자열('점 입니다.')

여기서 숫자를 문자로 바꾸려면 스트링 str(), 문자를 숫자로 바꾸려면 인테져 int()을 사용하면 된다.

 

f-string을 써보자

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}
]

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

f를 앞에 붙이고 문자열을 쓰면 f-string이 된다. 변수는 {}를 이용한다.