본문 바로가기

전체 글137

실전에 유용한 표준 라이브러리 내장 함수 sum() min(), max() eval() = 계산한 결과를 출력해준다 sorted() 정렬 sorted() with key => key 값을 기준으로 정렬한다 보통 람다로 넣어준다. 순열과 조합 순열: 서로 다른 n개에서 서로다른 r개를 선택하여 일렬로 나열하는 것 {'a','b','c'}에서 2개를 선택해 나열하는 경우 : abc, acb, bac, bca, cab, cba => [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')] abc에서 3개를 골라 순서를 고려하여 나열하라 조합 : 서로 다른 n개에서 순서에 상관 없이 서로 다른 r개를 선택하는 것 {.. 2021. 12. 30.
입출력 함수, 람다 표현식 1. 기본적인 입출력 input () 함수는 한 줄의 문자열을 입력 받는 함수이다 map() 함수는 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용한다. ex) 공백을 기준으로 구분된 데이터를 입력 받을 때 list(map(int, input().split())) => 먼저 input으로 값을 받고 split()로 공백을 기준으로 나누고 int 형식의 리스트를 만든다. ex) 언패킹하여 입력할 수도 있다. a,b,c=map(int,input().split())) 입력한 값이 각각 a,b,c로 들어간다 2. 빠르게 입력받기 사용자로부터 입력을 보다 빠르게 입력받아야 하는 경우도 있다. sys 라이브러리에 정의되어 있는 sys.stdin.readline() 메서드를 이용한다. 하지만 입력한 후에 엔.. 2021. 12. 29.
언더바 사용, 리스트 관련 메소드 반복을 수행하되, 반복을 위한 변수의 값을 무시하고자 할 때 언더바를 자주 사용한다 for _ in range(4): print("hello") =>> hello hello hello hello 이렇게 단순히 반복을 하고자 할 때에는 _를 사용한다. 2021. 12. 27.
파이썬 리스트 컴프리 핸션 * 리스트를 초기화 하는 방법 중 하나이다 대괄호안에 조건문이나 반복문을 사용하여 리스트를 초기화하는 방법이다 반복문 안에 있는 i 가 range(0~9)까지 증가할 때마다 해당 i값을 원소의 값으로 설정을 한다 그래서 for i 가 0,1,2,3,4,5,6,7,8,9 까지 증가하고 그걸 넣어주어 리스트를 초기화 시켜준다. * 조건을 추가하기 위에처럼 뒤에 조건을 추가할 수도 있다 원소값을 의미하는 i에 여러가지 연산을 넣을 수도 있다 ※ 이러한 리스트 컴프리 헨션은 2차원 리스트를 초기화할 때 효과적으로 사용할 수 있다!! N x M 크기의 2차원 리스트를 한 번에 초기화를 해야 할 때 유용하다 list = [[0] * m for _ in range(n)] => n번 반복할 때마다 길이가 m인 리스트를.. 2021. 12. 26.
삭제와 수정 비동기 처리 에러 처리 삭제와 수정 전에 올렸던 영화를 삭제기능에서 어느 것을 선택하든 맨 앞에 것이 선택되어 지워지는 상황이 발생했다. 그러나 코드가 db를 돌면서 그때마다 영화를 추가하는 방식이라 클릭했을 때 해당 영화의 제목값을 받아오는 어려움이 생겨 결국 삭제하려는 영화를 직접 입력하는 방식으로 바꾸었다. 비동기 처리 만약 이미 넣은 영화를 다시 넣으려고 한 경우 이미 본 것이라고 알려주기 위해 async 와 await를 이용해 비동기적으로 처리하게 만들었다. 먼저 app.route를 지금 기록하려는 영화가 DB에 있는 지 없는 지를 확인하는 함수로 잡았다. 만약 DB에 있다면 MSG 문구를 리턴해주고 아니면 await로 post 함수를 실행하게 해주었다. 에러 처리 간단하게 네이버 url말고 다른 url을 입력한다면 .. 2021. 12. 17.
중간 과정 구현 동영상 크롤링 실패.. index에 현재 네이버 영화상영작과 네이버 베스트셀러에 올라와있는 책들을 보이게 하고 해당 이미지를 클릭할 시에 해당 페이지로 이동할 수 있게 만들었다. 하지만 이미지만 크롤링하여 배치하는 것에 실패하여 어쩔 수 없이 영화기록하는 것과 비슷하게 새로운 DB를 만들어 넣어놓았다 ㅜㅠ 2021. 12. 9.
6. 유성피하기 게임(미사일 쏘기) 1. 기존의 유성 만드는 코드와 움직이는 코드를 복붙해서 쉽게 만들 수 있다. : 먼저 199번 처럼 미사일을 만들어준다. 최대 33개로 설정을 해준다. 2. 미사일 방향을 위로 올라가게 해주고 로켓과 위치가 같을 때 생성하게 해준다. => 78번 부터 98번까지 3. 유성과 만나면 사라지게 해준다. => CrushStar() 4. 재시작하면 새로 세팅해준다. ## 여기서 가장 중요시 볼 거는 CrushStar()함수이다. 136번을 해주지 않으면 미사일이 사라질때마다 점수가 올라간다. 따라서 continue를 해주어 재생성하게 해주고 미사일이 유성을 맞췄을 때만 점수가 올라갈 수 있게 해준다. 출처 : coding now 2021. 12. 8.
5. 유성 피하기 게임 (게임오버뜨기, 재시작하기) 1. 게임이 끝나면 Game over와 Restart 를 할 수 있게 띄워준다. :def setText에서 그림과 같이 작성해주는데 깜빡깜빡 뜰 수 있도록 blinking()함수를 만들어준다. 각각 time_delay_4sec=0와 toggle=False는 변수로 초기화를 해준다. 107번은 toggle을 true로 바꿔주는 코드다 blinking()이 true가 될 때마다 폰트를 실행해주어 깜빡깜빡하게 나는 것처럼 보인다. 2. R 누르면 재시작 뜨게 하기 restart()함수를 만들어주고 eventProcess()에서 r을 눌렀을 때 실행시킬수 있게 해준다. restart할 때 점수와 유성의 위치를 다시 처음처럼 세팅해준다. 2021. 12. 7.
4. 유성 피하기 게임(충돌 알고리즘 만들기) 1. 유성과 로켓이 부딪혔을 때 게임이 끝날 수 있도록 해준다. 충돌알고리즘은 78번줄 부터이다. 유성과 로켓의 각 위치 top, left, bottom, right의 위치를 비교해서 나타낸다. 1-1 : 유성을 피할 수록 점수는 올라가고, 충돌하면 멈출 수 있게 score와 isGameover 변수를 선언해준다. 2. 부딪히지 않으면 반복하는 100ms 동안 점수가 1씩 올라가게 해준다. 그것을 폰트를 받아와 스크린에 띄우는 것이 def setText(): 함수이다. 3. 충돌되면 멈추기 isGameover를 False로 주고 False일때 실행이 되게 만들고 True가 되면 모두 멈추게 만들어 준다. 2021. 12. 7.
3. 유성 피하기 게임( 유성 움직이기) 1. 가장 먼저 유성을 여러개 생성할 수 있도록 기존에 pygame.image.load('asteroid.png') 로 유성을 생성하던 코드를 리스트 형태로 반복적으로 만들 수 있게 바꿔준다. (86번) : star = [pygame.image.load('asteroid.png') for i in range(40)] = 40번을 반복하면서 만들어준다. :recStar=[None for i in range(len(star))] 는 각 만든 유성의 위치를 리스트로 만들어준다. 그 다음 유성의 개수만큼 반복하면서 만들어주는데, 0,0의 위치에 즉 맨 상단에 만들어주고, 먼저 y의 값으로 -1을 주어 뿌리지 않게 해준다. 2. 유성의 x 위치를 랜덤으로 만들기(52번) : makeStar()함수를 만들어주고 랜.. 2021. 12. 7.
2. 유성 피하기 게임 (키보드 입력받기) 0. import Rect :캐릭터의 x,y,가로,세로를 이용하기 위해선 Rect를 import 해와야 한다. 1. 키보드 방향키를 눌렀을 때의 값을 받기 위해 eventProcess()함수를 만들어준다. : for event in pygame.event.get(): 이 event.get()메소드는 키보드를 눌렀을 때의 값을 리스트 형태로 담아온다 그것을 event로 반복하면서 실행한다. : event.type은 키보드가 눌렀을 때와 떼어졌을 때를 구분하기 위한 타입이다. K_DOWN은 키보드를 눌렀을 때 K_UP은 키보드를 뗐을 때다. event.key는 이제 키보드가 눌렸을 때의 기능을 수행하기 위한 것이다. K_ESCAPE는 ESC이고 나머지는 각각 방향을 나타낸다. : 변수 초기화에서 만든 mov.. 2021. 12. 6.
1. 유성 피하기 게임 만들기(스크린 세팅과 player 만들기) 1.pip install pygame 으로 pygame 을 다운 받고 import 해준다. 2. 17줄부터 19까지는 스크린을 생성하는 것 : pygame.init()는 pygame의 라이브러리를 사용하기 위해 쓰는 것 : pygame.display.set_mode()로 스크린의 사이즈를 정해준다. 단 중요한 것은 () 튜플 형태로 넣어줘야 한다. : pygame.display.set_caption()은 제목을 달아주는 것 => pygame.display.flip()으로 실행시켜준다. => 단 이 flip()으로 실행시키면 시작됐다가 바로 꺼진다. 그래서 반복문을 통해 유지할 수 있도록 만들어줘야 한다. 3. player 생성 : 필요한 이미지를 정해서 player.image.load('이미지')로 pl.. 2021. 12. 6.