본문 바로가기

TIL

(120)
TIL 050823 https://velog.io/@jxxwon/Django-Q-%EA%B0%9D%EC%B2%B4 Django Q 객체 장고 Q객체 velog.io 문 강의 그대로 따라한 후 코드를 실행해봤는데 내가 팔로우한 사용자들의 글들을 모아보고 싶었지만 모든 게시글이 다 나왔다. 시 사용한 시리얼라이저가 혹시 모든 글들을 다 가져오게 작성되어있는건가 확인해봤는데 아니었다. 테스트 사용자가 아직 아무도 팔로우하지 않아서 다른 사람을 팔로우하게 해줬더니 제대로 실행된다. Q에 대해 검색해보니 맨 처음 q = Q()를 써주면 모든 글들을 담아주는 거였다. 모든 글들 중에서 q조건으로 filter하는 것!조건에 맞는게 없으면 전부 다 나온다... 음... 아직 아무도 팔로우 하지 않았으면 그냥 모든 사용자들의 글들을 구경하..
TIL 050423 리스트로 딕셔너리 만들기 players = ["mumu", "soe", "poe", "kai", "mine"] players_dictionary = {player: i for i, player in enumerate(players)} # {'mumu': 0, 'soe': 1, 'poe': 2, 'kai': 3, 'mine': 4} rank_dictionary = {i: players[i] for i in range(len(players))} # {0: 'mumu', 1: 'soe', 2: 'poe', 3: 'kai', 4: 'mine'} 리스트 요소 스왑 다른 언어에선 temp에 담아놓고 해야한다는데 파이썬에선 바로 된다. original_index = players.index("kai") players..
TIL 050323 skip = 'wbqd' skip_ascii = [ord(i) for i in skip] # [119, 98, 113, 100] / 이렇게 한 줄로 for문을 돌면서 문자열을 리스트로 만들 수 있다. ord(): 알파벳을 아스키코드 숫자로 바꿔준다. a: 97 ~ z: 122 from string import ascii_lowercase atoz = ascii_lowercase print(atoz) # abcdefghijklmnopqrstuvwxyz skip = 'wbqd' temp_ascii = [chr(i) for i in range(97, 123) if chr(i) not in skip] # 한 줄로 for문, if문, list(), chr() # ['a', 'c', 'e', 'f', 'g', 'h..
TIL 050223 순열/조합 문제에서 itertools를 쓸 때 from itertools import combinations처럼 쓸 것만 import하는게 가볍다. 오늘의 재귀 함수 def solution(n, a, b): 함수 빠져나올 조건: return 리턴값 if n solution(20, 3, 1) = 1 + solution(20-3+1, 3, 1) = 1 + solution(18, 3, 1) = 1 + (1 + solution(16, 3, 1)) = 2 + solution(16, 3, 1) = 3 + solution(14, 3, 1) . . . = 8 + soluti..
TIL 050123 print()하면 다음줄로 줄바꿈! for문으로 print() 계속하면 \n 필요 없다. 줄바꿈은 역슬래시!!! "\n".join()으로 줄바꿈 할 수도 있다. for문 중첩해서 쓸 때 잘 생각해보기! j를 고정해놓고 i들을 다 확인한 후 그 다음 j로 넘어가는건지, 그 반대인지... 일단은 moves의 j를 고정해놓고 board의 i를 for문 돌리는 거라면 for j in moves: for i in board: 이렇게 해야한다!!! 회원 탈퇴는 DB에서 회원 정보를 삭제하는게 아니다. 만약을 위해 탈퇴한 회원의 정보를 일정기간 보관 후 삭제. 그러면 탈퇴한 사용자가 곧바로 같은 id로 재가입하는걸 막을 수 있다. 장고에서 기본 제공하는 is_active를 False로 바꿔주거나 뭔가 다른 statu..
TIL 042823 회원계정 삭제 시 미디어 폴더에 프로필 사진이 있다면 같이 삭제하는 방법 https://devforyou.tistory.com/entry/Django-rest-framework%EC%97%90%EC%84%9C-%EC%9C%A0%EC%A0%80-%ED%94%84%EB%A1%9C%ED%95%84-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EB%93%B1%EB%A1%9D-%EC%9C%A0%EC%A0%80-%EC%82%AD%EC%A0%9C%EC%8B%9C-%ED%8C%8C%EC%9D%BC-%EC%82%AD%EC%A0%9C-%EC%BB%A4%EC%8A%A4%ED%85%80%EC%9C%A0%EC%A0%80-%ED%94%84%EB%A1%9C%ED%95%84-%EC%9D%B4%EB%AF%B8%EC%A7%80-..
TIL 042723 0부터 시작하는 인덱스와 첫번째부터 시작하는 n번째 값 헷갈리지 말기!!! .sort()는 리스트만 할 수 있다. sorted()는 문자열도 정렬할 수 있지만 리스트를 반환한다. 문자 반복 문자열*숫자 input으로 값 2개 받기 a, b = map(int, input().strip().split(' ')) 제곱근 import math해서 math.sqrt() 할 수도 있지만 **0.5로 하면 import할 필요 없다. .find(): 문자열에서 쓰는 함수 못 찾으면 -1 반환 여러개면 맨 앞에꺼 인덱스 반환 리스트에 값 여러개 append하기 .extend() answer = [] answer.extend([1, 24]) # [1, 24] # answer.append([1, 24]) # [[1, 24]..
TIL 042623 3진법 45를 3진법으로 나타내려면 몫이 0이 될때까지 3으로 계속 나누면서 그 나머지들을 쭈욱 쓰면 된다. 45/3=15...0 15/5=5...0 5/3=1...2 1/3=0...1 ---> 10진법 45 = 3진법 1200 divmod(): 나눗셈에서 몫과 나머지를 모두 구해준다. quotient, remainder = divmod(45, 3) # quotient=15, remainder=0 divmod(45, 3) # (15, 0) 튜플 타입으로 반환 int를 쓰면 n진수를 쉽게 10진수로 변환할 수 있다. int('숫자', n): 앞에 들어가는 숫자는 꼭 타입이 string이어야 한다. int('1200', 3) 또는 int(str(1200), 3) # 45 문제를 풀 때 사용하진 않았지만 파이..