[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
다음은 38번문제 문제와 답입니다 문제: 다음 리스트 변수에서 음수 데이터를 삭제하고, 양수만 가진 리스트 변수로 만들고, 해당 변수를 출력하세요. 답: plus_list = list() num_list = [0, -11, 31, 22, -11, 33, -44, -55] for num in num_list: i f num >= 0: plus_list.append(num) print (plus_list) 위에서보면 기본 넘리스트 중 양수 인 것을 , 플러스 리스트에 어펜드로 추가 할 수 있었어요. 그래서 함수형 리스트도 데이터를 문자가 아닌 정수도 받을 수 있구나! 싶네요. [문제는 제가 함수형 리스트는 문자만 들어갈 수 있다고 써놔서요.] 제가 잘못써놨는지 궁금하네요.
안녕하세요, 강사님 빅분기 실기 학습을 위해 작년에 강사님의 교재와 강의를 알게 되었으나, 입사 후 적응 기간과 업무가 바빠 충분히 공부하지 못했습니다. 올해 6월 시험 합격을 목표로 일찍 공부를 시작하려 했지만, 프로젝트에 투입되면서 아직까지 학습에 많은 시간을 투자하지 못한 상황입니다. 이제 곧 프로젝트에서 철수하게 되어 본격적으로 공부를 시작하려고 하는데, 현재 수강 기간이 4월 25일까지라 공부하기에 시간이 조금 부족한 느낌이 들었습니다.. 혹시 올해 1회차 시험 예정일인 6월 20일경까지 수강 기간 연장이 가능할지 문의드립니다. 아직 공부해야 할 내용이 많아 6월까지 학습을 이어가고 싶습니다. 또한 현재 수행 중인 직무와도 연관성이 높은 자격증이기 때문에, 이번 시험에 꼭 합격하여 직무 역량을 향상시키고 싶습니다. 제 이메일은 rlaalstjr826@naver.com 입니다. 검토 부탁드리고, 좋은 강의 감사합니다 강사님.
강의를 들으며 장바구니 페이지에 대해 Cypress로 테스트 코드를 작성하다가 궁금한 점이 몇가지 있어서 질문을 작성합니다 :) 장바구니 페이지에서 '장바구니의 상품을 삭제한 후 장바구니에 담겨있는 총 수량과 가격이 변경된다.'라고 테스트 시나리오를 작성했는데 이런 걸 e2e로 테스트 하는 게 맞는지 잘 모르겠습니다. 이런 부분은 unit 테스트로 넘겨야 하는 부분일까요? e2e테스트는 어떤 걸 중심으로 하면 좋을지 잘 모르겠습니다. 그냥 제가 필요하다고 생각되는 게 있으면 진행을 하면 되는 걸까요? 저도 모르게 저 대신 클릭 등을 수행하고 값을 확인하는 용도로 다루게 되는 것 같습니다. 그래도 일단 1번 질문에서 작성한 테스트 시나리오에 대한 코드를 직접 작성해봤습니다. 이 때, 장바구니 페이지에서 장바구니 아이템 데이터가 getServerSideProps를 통해 주입되고 있더라구요. 이 상황에서 API 모킹을 어떻게 해야할지 몰라서 Claude Sonnet 4.6이랑 구글링을 통해 몇가지 코드를 작성해봤습니다. 단순하게 테스트 코드가 작성되지 않고 다소 복잡하게 작성이 되는 것 같아서 뭔가 이 방향이 맞지 않는 것 같다는 생각이 들었습니다. 그래서 테스트 시나리오 자체를 제가 잘못 생각한 것 같다는 생각이 들기도 했습니다. SSR 환경에서 어떤 코드로 작성을 하는 게 맞는 방식인지 알 수가 없어서 한 번 확인해봐주시면 감사하겠습니다 :) a. nock + intercept 사용 - SSR은 서버 프로세스에서 진행되기 때문에 intercept 할 수 없다고 하여 nock을 사용했습니다. 코드는 해당 링크 를 참고 했습니다. - 그리고 router.replace를 통해 데이터를 refetch 될 때도 백엔드 api를 intercept를 할 수 없다고 해서 '/_next/data/**/*.json'를 intercept 했습니다. - 개인적으로 아래 코드는 'nock'과 'intercept'를 혼용해서 쓰다보니 장기적으로 봤을 때 유지보수성 측면에서 좋지 않은 코드라고 느꼈습니다. it.only('장바구니의 상품을 삭제한 후 총 수량과 가격이 변경된다', () => { // 1) 초기 로드용 nock (SSR - 서버사이드 fetch) cy.task('nock', { hostname: Cypress.env('API_URL'), method: 'GET', path: '/carts', statusCode: 200, body: FIVE_CART_ITEMS, }); // 2) router.replace 후 재조회용 intercept (클라이언트사이드 fetch) cy.intercept('GET', '/_next/data/**/cart.json', { body: { pageProps: { carts: FOUR_CART_ITEMS_AFTER_DELETE }, __N_SSP: true, }, }).as('refetch'); // 삭제 API mock cy.intercept('POST', '/api/cart', { statusCode: 200, body: { data: { name: '4' } }, }).as('deleteCart'); cy.visit('/cart'); // action cy.getByCy('cart-item-delete-button').first().click(); cy.wait('@deleteCart'); cy.wait('@refetch'); // 페이지 갱신 대기 // assertion cy.contains('Unbranded Rubber Chair').should('not.exist'); cy.getByCy('cart-item').should('have.length', 4); cy.getByCy('cart-item-total-amount').should('have.text', '4'); cy.getByCy('cart-item-total-price').should('have.text', '836.00'); }); b. intercept 사용 그래서 초기 로드에도 intercept를 사용했습니다. it.only('장바구니의 상품을 삭제한 후 총 수량과 가격이 변경된다', () => { // 1) 초기 로드용 (SSR - 서버사이드 fetch) cy.intercept('GET', '/_next/data/**/*.json', { body: { pageProps: { carts: FIVE_CART_ITEMS }, __N_SSP: true, }, }); // 2) router.replace 후 재조회용 intercept (클라이언트사이드 fetch) cy.intercept('GET', '/_next/data/**/*.json', { body: { pageProps: { carts: FOUR_CART_ITEMS_AFTER_DELETE }, __N_SSP: true, }, }).as('refetch'); // 삭제 API mock cy.intercept('POST', '/api/cart', { statusCode: 200, body: { data: { name: '4' } }, }).as('deleteCart'); cy.visit('/cart'); // action cy.getByCy('cart-item-delete-button').first().click(); cy.wait('@deleteCart'); cy.wait('@refetch'); // 페이지 갱신 대기 // assertion cy.contains('Unbranded Rubber Chair').should('not.exist'); cy.getByCy('cart-item').should('have.length', 4); cy.getByCy('cart-item-total-amount').should('have.text', '4'); cy.getByCy('cart-item-total-price').should('have.text', '836.00'); }); c. API 모킹을 사용하지 않기 - ssr 환경에서 delete 테스트를 위해 api 모킹을 사용하는 게 오히려 복잡하게 느껴져서 API 모킹을 사용하지 않고 코드를 작성하는 방식을 생각했습니다. - 대신에 테스트 할 때마다 수량과 가격이 변경될 거라고 생각해서 수량과 가격을 캡쳐하는 코드를 추가했습니다. it.only('장바구니의 상품을 추가한 뒤 삭제하면 해당 상품이 사라진다', () => { const cartItem = { "id": "24", "name": "Practical Frozen Pants", "price": "607.00", "imageUrl": "https://cdn.pixabay.com/user/2023/05/21/19-38-51-804_250x250.jpg" } // prepare: API로 상품 직접 추가 cy.request('POST', `${Cypress.env('API_URL')}/carts`, cartItem).then(({ body }) => { cy.visit('/cart'); // 삭제 전 수량과 가격 캡처 cy.getByCy('cart-item-total-amount').invoke('text').then((beforeAmount) => { cy.getByCy('cart-item-total-price').invoke('text').then((beforePrice) => { // action: 방금 추가한 항목 삭제 cy.contains('Practical Frozen Pants') .closest('[data-cy="cart-item"]') .find('[data-cy="cart-item-delete-button"]') .click(); // assertion cy.contains('Practical Frozen Pants').should('not.exist'); cy.getByCy('cart-item-total-amount').should('have.text', String(Number(beforeAmount) - 1)); cy.getByCy('cart-item-total-price').should('have.text', (Number(beforePrice) - cartItem.price).toFixed(2)); }); }); }); }); 일반적으로 delete에 대해 테스트할 때 어떤 식으로 하는지 궁금합니다. 삭제 성공 여부 / 해당 데이터가 보이지 않는지 체크 정도만 하고 삭제가 진행됨으로써 총 아이템 개수 수량이 변경되는 것에 대해서는 테스트 코드로 굳이 짚고 넘어가지 않나요? 실무에서 테스트 데이터는 보통 어떻게 관리하나요? 전부 api 모킹으로 테스트 해야하는 건지, 아니면 테스트용 DB를 따로 생성해서 거기서 테스트를 진행해야하는 건지 궁금합니다. 아니면 상황에 따라서 api 모킹을 해야할 때가 있고, DB를 연결해서 테스트 해야할 때가 있나요? 한번에 질문이 다소 많아서 죄송합니다 ㅠㅠ 완강하고 며칠동안 혼자서 공부해보다가 제대로 제가 하고 있는 건지 모르겠어서 여쭤봅니다 ㅠㅠ 긴 글 읽어주셔서 감사합니다!!
(AI 퀀트) 코드 한 줄 안 쓰고 주식 자동 분석 시스템 만들기 feat. Claude CLI
💡 수강생 안내 사항 (커뮤니티 가이드) 학습 관련 질문 : 구체적으로 적을수록 정확한 답변을 받을 수 있습니다. 작성 팁 : 마크다운과 단축키를 활용하면 글을 더 편리하게 작성할 수 있습니다. 사전 검색 : 질문을 남기기 전, 커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해 보세요. 커뮤니티 매너 : 서로 예의를 지키며 존중하는 분위기를 함께 만들어가요. 서비스 문의 : 인프런 서비스 관련 문의는 1:1 문의하기 를 이용해 주세요. 어떻게 해결해야할까요
안녕하세요. 인프런 강의 자료를 통해 알게되어, '패스트 캠퍼스' 파이썬을 활용한 반도체 공정 데이터 분석 수업까지 수강한 반도체 장비회사에서 재직 중인 엔지니어입니다. 현재 저는 공정 데이터 분석을 진행함에 있어 엑셀을 사용하고 있지만, 방대한 데이터 양 때문에 해당 수업 내용을 실무에 적용하면 좋겠다는 생각이 들었습니다. 그래서 제 회사 컴퓨터에도 anaconda 프로그램을 설치하여 데이터 분석에 이용하고자 하는데, 강사님도 아시다시피 반도체 산업 회사들이 보안 등의 문제로 특정 프로그램을 설치하는데 제약이 있을건데, 실제 강사님께서 재직 중이시던 회사에서 anaconda 설치 후, 데이터 분석을 실무에 적용하셨는지, 그리고 해당 프로그램 설치 후 사용 시, 문제되는 부분은 없으셨는지 알고 싶습니다. 제가 회사에서 제공하는 프로그램 제외하고 별도의 툴을 설치해본 적이 없어 조심스러워서 질문드립니다. 강사님 덕분에 양질의 교육을 들을 수 있어서 감사합니다.
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
- 친절하게 잘 알려주신 내용으로 크롤링 연습을 하고 있는데요, data= soup.select ('div.board-item-con') for item in data: research_date= item.select _one('span.meta-label')를 하게 되면 '사업구분'이라는 글자만 추출이 됩니다. 예를 들면, '채록시도' 항목에서 "충청북도"라는 데이터를 추출하고 싶은데, 이걸 어떻게 해야 할지 모르겠어요 ㅜㅜ 바쁘시겠지만 팁 좀 부탁 드립니다.
(AI 퀀트) 코드 한 줄 안 쓰고 주식 자동 분석 시스템 만들기 feat. Claude CLI
💡 수강생 안내 사항 (커뮤니티 가이드) 학습 관련 질문 : 구체적으로 적을수록 정확한 답변을 받을 수 있습니다. 작성 팁 : 마크다운과 단축키를 활용하면 글을 더 편리하게 작성할 수 있습니다. 사전 검색 : 질문을 남기기 전, 커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해 보세요. 커뮤니티 매너 : 서로 예의를 지키며 존중하는 분위기를 함께 만들어가요. 서비스 문의 : 인프런 서비스 관련 문의는 1:1 문의하기 를 이용해 주세요. 정말 못찾겠습니다.
안녕하세요. "주식 자동 매수 스케줄러 구축 2" 챕터 강의에서 아래와 같이 자동 매수 프로세스를 수동으로 트리거 API 호출했습니다. post /purchase/trigger trigger_auto_purchase() 함수 호출 API 응답 상태 코드: 200 API 응답 본문: {"rt_cd":"1","msg_cd":"40910000","msg1":"모의투자 주문이 불가한 계좌입니다."} 2026-02-18 18:04:16,130 - stock_scheduler - ERROR - 메타(META) 매수 주문 실패: 모의투자 주문이 불가한 계좌입니다. 위와 같이 응답 결과를 받았는데 영상을 보니 같은 모의 투자를 하신 것으로 보이는데 어떻게 주문 성공 처리되신건지 궁금합니다.