PYTHON 56

WIL_네 번째 주

이번주는 Algorithm과 Django에 대한 공부를 했다. Facts 매일 아침마다 1시간 씩 algorithm 문제를 3문제 정도씩 풀었다. 또한 Django 기초 강의를 두 가지나 받았는데, 두 강의 모두 Django의 기본 동작 프로세스와 CRUD를 어떻게 할 수 있는 지 배웠다. 그리고 협업을 위한 Git 사용 방법을 연습했다. Feelings Algorithm 문제를 꾸준히 풀다 보니깐 for과 data type 부분에 대해 조금은 익숙해진 느낌이다. 또한 이번에 Django를 처음 사용하게 되었는데, 많은 기본 기능들이 이미 구현이 되어있어서 그런지 편리한 framework라는 생각이 들었다. MVT model을 사용하기 때문에 기능과 역할에 따라 파일들이 구분되어 있는데, 이 부분에 익숙..

TIL_Django 기본 project

Project 생성 새로운 Django 기초 강의를 하나 더 듣기 시작했다. 전에는 pycharm IDE를 사용했지만 이번에는 VSCode를 쓴다. 폴더 생성 후, git bash에서 가상환경(별도의 python 공간)을 만들어 준다. python -m venv venv 가상환경을 켜준다. source venv/Scripts/activate * pip list: 가상환경에 설치된 파일들 list 볼 때 deactivate: 가상환경 끌 때 project 마다 venv를 각각 관리 Github 연결 git 사용을 하기 위해 git bash에 command를 입력한다. git init *ls: 현재 위치에서의 파일들 보기 ls -a: 현재 위치에서의 모든 파일들 보기 rm -rf .git: .git file..

TIL_Django로 Project 만들기

간단한 SNS를 만드는 것이 목표이다. 회원가입, 로그인, 로그아웃과 같은 사용자 관리, 글쓰기 기능, 친구 팔로워 기능 등 간단한 SNS이다. 강의를 보았지만 조금 헷갈리는 부분이 있어서 전반적인 과정을 정리 해 보았다. 프로젝트의 기능을 크게 'user'과 'tweet'으로 나눌 수 있어서 두 개의 app을 만들었다. terminal에서 다음과 같이 입력한다. django-admin startapp user django-admin startapp tweet 생성한 앱을 관리 할 수 있게 Django에게 알려줘야 한다. project folder의 'settings.py'를 아래와 같이 수정한다. INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib...

TIL_Python의 framework, Django

Framework는 개발을 도와주는 하나의 틀과 같다. 따라서 결과물을 일정한 형태로 만들 수 있다. 앞으로 쓰게 될 Django의 작동 방식을 이해하는 것이 필요할 것 같아서 정리를 해보았다. Python의 framework에는 Django, flask, pyramid 등이 있다. Django는 거대한 framework이다. 따라서 많은 utility들이 이미 만들어져 있고, DB, login, Admin, password 암호화 등 많은 부분들이 이미 제공이 된다. 또한 community와 document가 잘 되어있어 편리하다. MVT pattern은 Django가 일하는 방식이다. M(Model) database의 model(ORM) 저장되고 사용되는 data의 형태 V(View) 실질적으로 프로..

TIL_Django 시작

오늘부터 Django를 시작했다. 우선 pycharm IDE(professional)로 새 프로젝트를 생성하고 Django framework를 사용했다. 그리고 Django server를 켜기 위해 Run! 그런데 다음과 같은 에러가 났다. django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 뭔가 기본적인 setting이 잘못 된 것 ..

TIL_자료구조 stack

자료구조 중 stack을 배웠다. stack은 프링글스 과자를 생각하면 된다. 쌓여져 있는 과자의 형태. 이것이 stack이다. stack을 구현하는 코드를 작성했다. class Node: def __init__(self, item, next): self.item = item self.next = next class Stack: def __init__(self): self.top = None def is_empty(self): return self.top is None def push(self, val): self.top = Node(val, self.top) def pop(self): if not self.top: return None node = self.top self.top = self.top.n..

TIL_Array와 LinkedList(Algorithm)

Array와 Linked List에 대해 정리해 보았다. Array 접근 쉬움, 삽입 어려움, Python의 list. 특정 원소 조회: O(1) 중간에 삽입, 삭제: O(N) 공간이 다 차면 새로운 메모리 공간을 할당받아야 함 LinkedList 접근 어려움, 삽입 쉬움, 직접 구현. 특정 원소 조회: O(N) 중간에 삽입, 삭제: O(1) 공간이 다 찼어도 맨 뒤의 node만 동적을 추가하면 됨 결론 데이터에 접근하는 경우가 빈번할 때는 Array, 삽입과 삭제가 빈번하다면 LinkedList 사용. LinkedList의 구현 code class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class L..

TIL_Assignment 3(class를 이용한 회원/게시글 관리)

세 번째 과제인 회원/게시글 관리 프로그램을 만들었다. Member과 Post 두 개의 class를 만들었고, terminal에서 직접 회원 생성을 할 수 있다. 회원을 다 생성하면 각각의 회원은 comment를 남길 수 있다. class를 만드는 것은 수월하게 작성했다. constructor을 만들고 그 안에 attributes를 넣었다. 'def display()'처럼 method를 작성하고 원하는 작업을 작성했다. hashlib module을 import하여 member의 password을 암호화 시켰다. 이 부분은 제대로 했는지 잘 모르겠다. 특히, 생성된 Member instance가 세 개의 Post instance를 갖게 하는 부분에서 좀 헤맸다. 그래도 어찌저찌 코드를 작성하고 테스트를 마..

TIL_두 번째 assignment(가위바위보 Game)

Python을 사용하여 '가위바위보' 게임을 만들었다. 여기서 사용한 기능은 다음과 같다. random, while-break, try-except, 다중 if, dictionary, .upper(), input() import random result = {'win': 0, 'lose': 0, 'tie': 0} while True: try: input_choice = input('(가위/바위/보) 중 하나를 선택하세요: ') if input_choice != '가위' and input_choice != '바위' and input_choice != '보': raise ValueError option_list = ['가위', '바위', '보'] random_choice = random.choice(opti..

TIL_Python Assignment 1(Up-and-Down Game)

저번 주에 python 문법 강의를 마치고 오늘 처음으로 개인과제를 했다. 제목은 up-and-down game. python을 이용한 게임을 만드는 것이다. 컴퓨터가 생각한 숫자를 맞추는 게임이다. 컴퓨터가 생각한 숫자와 비교하여 Up 또는 Down 힌트를 받으며 숫자를 맞추는 룰이다. 이 게임을 위해 내가 사용한 python 기능은 다음과 같다. while, try-except, if-elif, random, input() 등. import random random_num = random.randint(1, 100) count = 0 highest_count = 0 while True: try: input_num = int(input("Please enter a number(1-100): ")) co..

LIST