❤️🔥TIL : Today I Learned❤️🔥
그날그날 내가 공부한 것을 정리하는 것
내일배움캠프 AI트랙 18Day
오늘 배운 내용.
타임어택 1일차
17:00 - 18:00 1시간동안 진행되는 타임어택이 오늘부터 진행되었다.
1시간동안 문제를 풀고 제출하는 거였는데 생각보다 신선하고 재밌었다ㅎㅎ
물론 난이도가 쉬운편이였지만 다들 생각보다 잘하시나보다 대략 20-30명이나 제시간에 다 풀어서 제출했던것 같다.
뭔가 제출하고 홀라당 끝나서 아쉬운데 뭔가 결과가 채점되거나 했으면 좀더 동기부여가 잘 되지 않았을가 싶다.
Quiz 1. 전역변수와 지역변수 구분하기
아래 코드에서 a, b 변수가 지역변수인지 / 전역변수인지 구분하고, 코드 실행 없이 결과를 예상해서 적어주세요
답변 예제
a = 10
def test1():
b = 20
def test2():
print(a)
print(b)
test1()
test2()
# 실행이 잘 될까요?
# 실행이 되지 않는다면 어떤 에러가 발생할까요?
- a 전역번수
- b 지역변수
- test2()함수 호출에서 print(b)가 실행되지 않으면서 'b' is not defined Error가 발생합니다.
a변수는 전역변수여서 test2함수에서도 변수에 접근이 가능하지만 b변수는 test1에 함수 안에서 정의된 변수이기때문에 test2함수에서는 접근할수 없는 범위에 있어서
print(b)를 실행하게되면 b를 알 수가 없다는 error가 발생할것 같습니다.
2. mutable과 immutable 구분하기
mutable에 해당하는 자료형과 immutable에 해당하는 자료형을 적어주세요
가변(mutable) list, set, dict
불변(immutable) int, float, bool, tuple, string, unicode
3. filter/map 혹은 리스트 축약식 활용해서 리스트 다뤄보기
아래 문제를 filter와 map 함수 혹은 리스트 축약식을 활용해 풀어주세요
- 1부터 10000까지의 숫자를 numbers 변수에 할당해주세요
- 1부터 10000까지 숫자 중, 짝수에 해당하는 숫자만 even_numbers 변수에 할당해주세요
- 1부터 10000까지의 숫자 중, 3의 배수이며 15의 배수가 아닌 숫자에 10을 곱하여 some_numbers 에 할당해주세요
입출력 예제
def get_even_numbers(numbers):
result = list(filter(lambda x: x % 2 == 0, numbers))
return result
def get_some_numbers(numbers):
filter_numbers = list(
filter(lambda x: (x % 3 == 0) & (x % 5 != 0), numbers))
result = list(map(lambda x: x*10, filter_numbers))
return result
def main():
numbers = [i+1 for i in range(1000)] # 1 ~ 10000
even_numbers = get_even_numbers(numbers)
some_numbers = get_some_numbers(numbers)
print(even_numbers) # [2, 4, 6, ...]
print(some_numbers) # [30, 60, 90, 120, 180, ...]
main()
4. lambda를 활용해서 정렬해보기
아래 사용자들을 수학, 과학, 영어, 사회 점수의 총 합을 기준으로 총 합이 가장 높은 사람이 첫 번째에 오도록 정렬해주세요
입출력 예제
from pprint import pprint
users = [
{"name": "Ronald", "age": 30, "math_score": 93,
"science_score": 65, "english_score": 93, "social_score": 92},
{"name": "Amelia", "age": 24, "math_score": 88,
"science_score": 52, "english_score": 78, "social_score": 91},
{"name": "Nathaniel", "age": 28, "math_score": 48,
"science_score": 40, "english_score": 49, "social_score": 91},
{"name": "Sally", "age": 29, "math_score": 100,
"science_score": 69, "english_score": 67, "social_score": 82},
{"name": "Alexander", "age": 30, "math_score": 69,
"science_score": 52, "english_score": 98, "social_score": 44},
{"name": "Madge", "age": 22, "math_score": 52,
"science_score": 63, "english_score": 54, "social_score": 47},
{"name": "Trevor", "age": 23, "math_score": 89,
"science_score": 88, "english_score": 69, "social_score": 93},
{"name": "Andre", "age": 23, "math_score": 50,
"science_score": 56, "english_score": 99, "social_score": 54},
{"name": "Rodney", "age": 16, "math_score": 66,
"science_score": 55, "english_score": 58, "social_score": 43},
{"name": "Raymond", "age": 26, "math_score": 49,
"science_score": 55, "english_score": 95, "social_score": 82},
{"name": "Scott", "age": 15, "math_score": 85,
"science_score": 92, "english_score": 56, "social_score": 85},
{"name": "Jeanette", "age": 28, "math_score": 48,
"science_score": 65, "english_score": 77, "social_score": 94},
{"name": "Sallie", "age": 25, "math_score": 42,
"science_score": 72, "english_score": 95, "social_score": 44},
{"name": "Richard", "age": 21, "math_score": 71,
"science_score": 95, "english_score": 61, "social_score": 59},
{"name": "Callie", "age": 15, "math_score": 98,
"science_score": 50, "english_score": 100, "social_score": 74},
]
# some code
users.sort(key=lambda x: x["math_score"] +
x["science_score"]+x["english_score"]+x["social_score"])
pprint(users, width=300, sort_dicts=False)
"""
[{'name': 'Ronald', 'age': 30, 'math_score': 93, 'science_score': 65, 'english_score': 93, 'social_score': 92},
{'name': 'Trevor', 'age': 23, 'math_score': 89, 'science_score': 88, 'english_score': 69, 'social_score': 93},
{'name': 'Callie', 'age': 15, 'math_score': 98, 'science_score': 50, 'english_score': 100, 'social_score': 74},
{'name': 'Sally', 'age': 29, 'math_score': 100, 'science_score': 69, 'english_score': 67, 'social_score': 82},
{'name': 'Scott', 'age': 15, 'math_score': 85, 'science_score': 92, 'english_score': 56, 'social_score': 85},
{'name': 'Amelia', 'age': 24, 'math_score': 88, 'science_score': 52, 'english_score': 78, 'social_score': 91},
{'name': 'Richard', 'age': 21, 'math_score': 71, 'science_score': 95, 'english_score': 61, 'social_score': 59},
{'name': 'Jeanette', 'age': 28, 'math_score': 48, 'science_score': 65, 'english_score': 77, 'social_score': 94},
{'name': 'Raymond', 'age': 26, 'math_score': 49, 'science_score': 55, 'english_score': 95, 'social_score': 82},
{'name': 'Alexander', 'age': 30, 'math_score': 69, 'science_score': 52, 'english_score': 98, 'social_score': 44},
{'name': 'Andre', 'age': 23, 'math_score': 50, 'science_score': 56, 'english_score': 99, 'social_score': 54},
{'name': 'Sallie', 'age': 25, 'math_score': 42, 'science_score': 72, 'english_score': 95, 'social_score': 44},
{'name': 'Nathaniel', 'age': 28, 'math_score': 48, 'science_score': 40, 'english_score': 49, 'social_score': 91},
{'name': 'Rodney', 'age': 16, 'math_score': 66, 'science_score': 55, 'english_score': 58, 'social_score': 43},
{'name': 'Madge', 'age': 22, 'math_score': 52, 'science_score': 63, 'english_score': 54, 'social_score': 47}]
"""
파이썬 Django 기초반 강의 2주차
[스파르타코딩클럽/Python] - 파이썬 Django 기초 - 2주차 (1) Django 프로젝트 구조
[스파르타코딩클럽/Python] - 파이썬 Django 기초 - 2주차 (2) 데이터베이스와 Model
Django 프로젝트 구조
project_name/ # 장고프로젝트 설정 패키지
├── db.sqlite3
├── manage.py
└── config
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
── requirements.txt # 설치할 pip 패키지 목록 파일
- venv/ : 프로젝트의 패키지들을 관리하는 가상환경
- manage.py : 장고 서버 관리를 도와주는 역할을 하는 스크립트. 다른 설치없이 웹 서버를 시작할 수 있다.
- config/ : 디렉토리 내부에 프로젝트를 위한 실제 python 패키지들이 저장된다. 프로젝트 내부 어디에서나 접근(import)할 수 있다.
- config/__init__.py : 해당 디렉토리가 패키지의 일부임을 알려주는 역할을 한다. python version 3.3 부터는 __init__.py 가 없어도 패키지로 인식이되지만, 하위 버전과 호환을 위해 생성하는 것이 안전하다.
- config/settings.py : 현재 Django 프로젝트의 환경/구성을 저장한다.(추후에 관련 정보 update)
- config/urls.py : 현재 Django 프로젝트의 URL선언을 저장한다. urlresolver가 사용하는 패턴 목록을 포함한다.
- config/wsgi.py : 현재 프로젝트를 서비스하기 위한 WSGI(Web Server Gateway Interface, 웹서버와 파이썬 웹 애플리케이션 개발환경 간의 인터페이스에 대한 규칙) config 설정파일이다.
앱(App)
App은 장고에서 사용하는 파이썬 패키지이다. App은 자신의 모델(Model), 뷰(View), 템플릿(Template), URL 등을 독자적으로 가지고 Django프로젝트에서 특정한 기능을 수행한다.
일반적으로 하나의 Django 프로젝트는 다수의 app으로 구성되어 있고, 여러개의 Django App을 모듈화하여 구성한다.
$ django-admin startapp [앱 이름]
$ python manage.py startapp [앱 이름]
앱 생성후에는 settings.py를 통해서 꼭 생성한 앱을 프로젝트에 추가해줘야한다.
config/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 생성한 app
'blog',
]
'I learned' 카테고리의 다른 글
내일배움캠프 AI - TIL 19 (0) | 2022.09.26 |
---|---|
내일배움캠프 AI - WIL 4주차 (1) | 2022.09.25 |
내일배움캠프 AI - TIL 17 (0) | 2022.09.22 |
내일배움캠프 AI - TIL 16 (0) | 2022.09.21 |
내일배움캠프 AI - TIL 15 (0) | 2022.09.20 |