The Best Free Course on Python – Learn Python Programming

– 얘들 아, 무슨 일이야? 어떻게되고 있습니까? cleverprogrammercom의 Qazi입니다

이 비디오에서 우리는 절대적으로 무료 인 파이썬 최고의 코스, 그래서 더 이상 고민하지 말고 바로 들어가 봅시다 (테크노 음악) 좋아, 그래서 나는 항상 이것에 대해 이야기하는 것처럼 느껴진다 그러나 아마도이 채널에 처음 온 것일 수도 있습니다 일치하는 경우이 채널의 메모 컴퓨터 프로그래밍을 배우는 것, Python이라는 프로그래밍 언어를 배우는 것입니다 웹 개발 방법 배우기

또한이 비디오의 끝에서 나는 너에게 뭔가를 가지고있다 날 믿어, 너 그리워하고 싶지 않아 그러니 계속 붙어있어, 알았지? 자, 파이썬과 컴퓨터 프로그래밍에 관한 한, 많은 과목들이있어, 알았지? 나는 Udacity, Coursera, 그 (것)들의 제비는 어쩌구 저쩌구 하지만 내가 너에게 말하고 싶은 것은 내가 생각하기에 파이썬을위한 최선이라고 불리는 것은, cleverprogrammercom으로 이동하십시오

괜찮아? 나는 당신을 위해이 과정을 만들었습니다 프로젝트를 작성하여 파이썬을 배우는 것입니다 내가 너를 위해서하고 싶은 이유는, 나는 네가 많은 시간을 갖지 못하게한다 그래서 나는 너를 위해 뭔가를 만들고 싶었다 가능한 가장 빠른 방법으로 파이썬을 배울 수 있습니다

그리고 프로젝트를 빌드 할 때, 하지만 하루가 끝나면 보여줄 게있어 너를 동기 부여 해준다 당신은 그 길을 따라 그 피드백을 가지고 있습니다 괜찮아? 가는대로 그래서,이 과정에서, 그것은 절대적으로 자유 롭습니다

cleerprogramnercom에 가면, 내 자유 코스에 등록 할 수 있습니다 괜찮아? 이 과정의 처음 5 분 동안, 당신은 첫 번째 프로젝트를 만들 것입니다 괜찮아? 얼마나 미친거야? 권리? 많은 코스가 아닙니다 그리고 내 수업은 미친 기술적 접근법이 아닐세

숫자로 작업하거나, 우리는 사물을 시각적으로 작업하고 있습니다 괜찮아? 너의 눈이 그것을 볼 수 있다는 것을 의미한다 즉각적인 피드백을 얻을 수 있습니다 말 그대로 자신을 개선하고 더 나아집니다 괜찮아? 왜냐하면 네가 그렇게하지 않으면, 당신의 기술을 향상시키는 것은 매우 어렵습니다

괜찮아? 다시 말하지만,이 과정에서는 쌍방향 연습을하게됩니다 너는 퀴즈를 얻는다, 너는 프로젝트를 얻는다 그래서 당신은 결국 그것을 보여줄 것이 있습니다 따라서이 과정에 확실히 등록하십시오 자, 너에게 특별한 발표가있어

내가 너에게 말하려고했던 이 비디오의 끝 부분 – 인스 타 그램에 날 팔 워우 해줘 -이게 뭔가있어 – 존 컬러스 – 그리워하고 싶지 않아 알았어> 나는이 사람을 사랑하고 그를 따라 간다

당신이 놓치고 싶지 않은 발표 Python 용 웹 개발 과정과 관련이 있습니다 괜찮아? 이것은 우리가 Clever Programmer에서 제공하는 주력 코스입니다 우리는 수백 명의 학생들이 그것을 가지고 있으며, 성공하고 놀라운 결과를 얻었습니다 괜찮아? 우리는 몇 명의 학생들을두고 있습니다 나는 그것을 여기에 올려 놓을 것입니다

그러나 학생 중 한 명은 Dennis Murphy입니다 그는 이제 자신의 플랫폼을 구축했습니다 파이썬으로 고객을 확보하고 있습니다 괜찮아? 프로그램 작성 그래서, 이것은 내가 당신과 함께 나누고 싶은 무언가입니다

여기서 파이썬을 배우고 웹 개발을 할 수 있습니다 그리고 만약 당신이이 과정에 관심이 있다면, 2017 년 11 월에 나올거야 그런 다음 계속해서 다시 시작할 것입니다 괜찮아? 2017 년 이후에이 동영상을보고있는 경우 이 코스는 Python으로 애플리케이션을 만들고 첫 번째 클라이언트를 구현하십시오 따라서 내가하고 싶은 것은 앱을 만드는 데 도움이됩니다

최대한 빨리 귀하의 첫 번째 고객을 확보하십시오 90 일 이내에 가능한 한 빨리 괜찮아? 많은 다른 과목들이 당신을 가르치지 않기 때문에 고객을 얻는 방법, 돈을 벌기 시작하는 방법, 포트폴리오를 만드는 방법, 프로젝트를 만드는 방법, 협상 방법, 최대 5 명까지받는 방법 높은 5 개의 숫자 또는 6 개의 숫자 괜찮아? 이 과정은 주머니에 돈을 넣는 것에 관한 것입니다 주머니에서 돈을 꺼내는 것이 아닙니다 그리고 그게 다야

너에게 기술적 인 말도 안할거야 네가 일할 거라고, 지겨운 일, 어떤 교수가 당신에게 이것을 가르치고 있습니다, 나는 너에게 이것을 가르쳐 주겠다 어떤 높은 도덕적 근거에서가 아니라, 하지만 우린 친구 야 괜찮아? 그리고 이걸로 고객을 얻을 수있게 도와주고 싶습니다 가능한 한 빨리 그게 내가 잘하는 이유야

그게 내가 너와 나누고 싶어하는거야 그래서 나는 가능한 빨리 돈을 벌기를 바랍니다 이것은 Python을위한 웹 개발 과정입니다 실제로 파이썬으로 수익을 창출하고자하는 사람들을위한 것입니다 자, 내가 전에 언급 한 것을 알고있다

파이썬은 매우 대중적인 언어입니다 그리고 Instagram과 같은 회사는 Python으로 구축되었습니다 Google, YouTube, Reddit, Dropbox Quora, Spotify, hipmunk, 그 모든 회사는 파이썬으로 만들어져 있습니다 그래서, 당신이 이것을 배우지 않을 이유가 없습니다

파이썬은 매우 쉽고, 추세입니다 그리고 당신은 이것을하는 돈을 가장 많이 벌 수 있습니다 괜찮아? 따라서,이 새로운 과정에 등록 할 필요가 없습니다 링크는 cleverprogrammerto / first-client-with-python입니다

여기에 링크가 있습니다, 우리는 바로 여기에 넣을 것입니다 당신은 그것을 클릭 할 수 있습니다, 또는 비디오 설명으로 이동할 수 있습니다 이 과정을위한 VIP 대기자 명단에 올라가, 알았지? 지금 당장해라 VIP 대기자 명부에 무료로 입장 할 수 있습니다 그리고 보너스로, 나는 당신에게 나의 자유로운 자원을 보내 줄 것이다

소프트웨어 개발자가 될 수있었습니다 3 개월 이내에 돈을 벌기 시작합니다 그리고 나는 그 보너스를 무료 선물로 선물로 보내 드리겠습니다 지금 VIP 대기자 명단에 등록하면됩니다 괜찮아? 잘하면이 비디오가 도움이된다는 것을 알았습니다

바라기를이 영상은 당신에게 당신이 필요로 한 가치를주었습니다 네가 여기 왔다고 그리고 다시, 내가 지금 너에게주는 모든 자원 무료입니다 괜찮아? 다시 한번 감사 드리며, 언제나처럼, 나는 당신의 얼굴을 좋아한다 다음 비디오에서 뵙죠

(테크노 음악)

Python Tutorials for Beginners – Learn Python Online

이 코스에서는 모든 것을 배우게됩니다 파이썬을 시작해야합니다

초심자를위한 코스를 설계했음을 알고 있어야합니다 따라서 프로그래밍 경험이 있다면 다른 파이썬 과정을 개발자에게 확인하십시오 이 비디오의 오른쪽 상단 모서리에있는 링크를 볼 수 있습니다 그래서 파이썬은 세계에서 가장 빠르게 성장하고 있습니다 인기있는 프로그래밍 언어는 소프트웨어 개발자들 사이뿐만 아니라 수학자 데이터 분석가 과학자들 회계사 네트워크 엔지니어와 심지어 아이들 사실, 처음 배우기에 이상적인 프로그래밍 언어입니다

하지만 파이썬을 매우 특별하게 만드는 이유는 파이썬에서 여섯 가지 이유 때문입니다 다른 언어보다 적은 코드 행으로 짧은 시간에 복잡한 문제를 해결할 수 있습니다 그래서 Google과 같은 거대 기업이 Spotify Dropbox 및 Facebook은이 아름답고 강력한 언어를 사용합니다 여기에 예제가있다 텍스트의 처음 세 문자를 추출하려고한다고 가정 해 봅시다 안녕 세상 이것은 우리가 c-sharp로 작성해야 할 코드입니다

JavaScript에서이 작업을 수행하는 방법입니다 그리고 우리가 파이썬에서 어떻게 할 것인가? 언어가 얼마나 깨끗하고 단순한 지 확인하십시오 Python은 다목적 언어이므로 데이터 분석 AI 및 기계 학습과 같은 다양한 작업에 Python을 사용할 수 있습니다 자동화 스크립트 작성 웹 모바일 및 데스크톱 애플리케이션 구축 뿐만 아니라 소프트웨어 테스트 또는 심지어 해킹 그래서 만약 당신이 이러한 분야에서 높은 지불 오래 지속되는 직업을 원한다면 특히 인공 지능과 기계 학습 Python은 이러한 기회를 손쉽게 활용할 수있는 언어입니다 사실 indeedcom에 따르면 미국 Python 개발자의 평균 급여는 3 월에 1 만 1 천 5 백만 달러를 넘었습니다

2018 년 파이썬을 가장 바람직한 언어로 만드는 네 가지 이유가 있습니다 파이썬은 고수준 언어이므로 걱정할 필요가 없습니다 C ++에서하는 것처럼 메모리 관리와 같은 복잡한 작업 크로스 플랫폼입니다 즉, Windows에서 Python 앱을 빌드하고 실행할 수 있습니다 Mac과 Linux에는 거대한 커뮤니티가 있습니다

그래서 언제든지 붙잡혀 야합니다 도움을 줄 수있는 사람이 있으며 도서관 프레임 워크 및 도구의 대규모 생태계를 갖추고 있습니다 네가하고 싶은게 뭐든간에 파이썬이 20 년 넘게 사용되어 왔기 때문에 다른 누군가가 이전에 해왔을 가능성이 있습니다 Python에는 두 가지 버전이 있습니다

Python 2 어떤 버전의 파이썬이 2020 년과 파이썬 3까지 지원 될 것인가? 이 과정에서 미래를위한 파이썬은 파이썬 3을 배울 것입니다 안녕하세요, 제 이름은 Muhammed Ani입니다 본 강의에서는 강사가 될 것입니다 나는 18 년의 경험을 가진 소프트웨어 엔지니어이다 그리고 나는 백만 명이 넘는 사람들에게 코드 작성 방법이나 맨 위로 올라가는 방법을 가르쳐 왔습니다

전문 소프트웨어 엔지니어 저와 제 수업에 대해 더 많은 것을 배우려면 대량 교습으로 코드를 작성하십시오 좋아, 시작하자 이제 우리는 파이썬을 다운로드하고 설치할 준비가되었습니다 내가 먼저하고 싶은 것은 브라우저를 열고 Python org로 넘어가는 것입니다 이 페이지는 다운로드 할 수 있습니다

현재 파이썬 최신 버전을 볼 수 있습니다 최신 버전은 37 앞으로이 비디오를 시청할 가능성이 있습니다 사용 가능한 최신 버전이 있습니다 걱정하지 마세요

이 과정의 모든 자료는 이후 버전의 Python에도 계속 적용될 것입니다 파이썬 다운로드 Windows에서 실행 중이면이 체크 박스를 여기에 표시합니다 add 이 경로를 지정하는 Python은 매우 중요합니다 가져 가셔야합니다 그렇지 않으면 코스를 따라갈 수 없을 것입니다

이제 설치하고 설치하십시오 이제이 검색 창 유형에서 Windows를 사용하고 있다면 Python을 제대로 설치했는지 확인해 봅시다 명령 프롬프트의 약자 인 CMD Dr In 명령 프롬프트 유형 Python 우리는 Python 버전을 성공적으로 설치 한 것을 볼 수 있습니다 이제 3

7을 눌러서 Ctrl-z를 눌러 입력하십시오 Mac을 사용하는 경우 명령 및 공백을 누르면 스포트라이트 검색이 열립니다 그래서 여기서 터미널을 입력하십시오 Windows에서 터미널과 Mac은 명령 프롬프트와 비슷합니다 Mac과 Linux는 기본적으로 이전 버전의 Python과 함께 제공됩니다

그건 버전 2입니다 따라서 파이썬을 입력하면 파이썬 2를 볼 수 있습니다 우리가 원하는 것을 시작합시다 그래서 컨트롤 D를 눌러 종료하고 파이썬 3을 실행하고 이것은 우리가 파이썬 37을 성공적으로 설치했는지 확인합니다

이 환경은 파이썬 인터프리터라고 부릅니다 기본적으로 파이썬 코드를 실행하는 프로그램입니다 파이썬 코드를 파일에 입력하고 인터프리터 또는이 대화 형 셸에서 코드를 직접 입력 할 수 있습니다 그래서 여기에 2 + 2와 같은 식을 쓸 수 있습니다 표현식 프로그래밍은 값을 생성하는 코드 조각입니다

그래서 여기에 두 개의 더하기 두 개를 더할 때 값을 얻습니다이 값을 표현식으로 사용하는 이유는 그래서 우리는 4를 입력하십시오 다른 종류의 표현을 시도해 보겠습니다 두 개가 하나보다 큰지 봅시다 우리는 진리를 얻습니다

이것은 불리언 값의 예입니다 이 부울 값에 대해 다음 섹션에서 배우게됩니다 이제 2를 입력하면 5보다 커집니다 들어가면 거짓이됩니다 프로그래밍에서 우리는 예와 유사하고 진실하고 거짓이 있습니다

영어는 없습니다 이제 2를 타이핑하면 더 크지 만 여기에 두 번째 값을 추가하지 마십시오 Enter를 누르기 만하면됩니다 에서 구문 오류가 발생했습니다 프로그래밍 구문은 문법을 의미합니다

그래서 우리가 말하는 언어로 문법 개념을 가지고있는 것처럼 말입니다 문법적으로 맞지 않는 문장을 쓰면 프로그래밍과 똑같은 개념을 갖게됩니까? 일부 사람들은 그 문장을 이해하지 못할 수도 있습니다 따라서이 예에서는 불완전한 표현식을 사용합니다 올바른 문법이나 구문을 가지고 있지 않습니다 이것이 파이썬 인터프리터가 오류를 반환하여 불평하는 이유입니다

따라서이 대화 형 쉘은 약간의 파이썬 코드를 빠르게 실험 할 수있는 훌륭한 방법입니다 그러나 이것이 우리가 현실 세계의 응용 프로그램을 만드는 방법이 아닙니다 코드 편집기가 필요합니다 다음 강연에서 보여 드리겠습니다 파이썬 코드를 타이핑 할 때 두 가지 옵션이 있습니다

코드 편집기 또는 IDE를 사용할 수 있습니다 어느 것이 통합 된 것일까 요? 개발 환경 IDE는 기본적으로 자동 완성과 같은 멋진 기능을 갖춘 코드 편집기입니다 즉, 코드를 입력 할 때이 기능을 사용하면 코드를 완성 할 수 있으므로 모든 문자를 직접 입력 할 필요가 없습니다 생산성을 높이는 기능입니다 또한 디버깅과 같은 추가 기능을 제공하여 프로그램 테스트에서 버그를 찾아 수정하는 것을 의미합니다

코드 편집기와 ID 모두에 대해 너무 많은 옵션이 있습니다 가장 인기있는 코드 편집기는 코드 아톰과 숭고한 것입니다 아이디어의 관점에서 선호하는 코드 편집기를 다시 사용할 수 있습니다 밖에는 너무 많은 옵션이 있습니다 가장 인기있는 것은이 코스의 원형 차트입니다

코드 나 비주얼 스튜디오 코드를 사용할 것입니다 나중에 내가 좋아하는 코드 편집기이기 때문입니다 플러그인 또는 확장 코드를 강력한 ID로 변환 할 수있는 방법을 알려 드리겠습니다 그래서 Visual Studio comm을 코딩하고 vs 코드의 최신 버전을 다운로드하기 전에 더 이상 머리를 숙이지 않기 전에 이제 그것은 파일 메뉴에서 맨 위에 열려있는 코드 대 open 그리고 책상 어딘가에 새로운 폴더를 만듭니다 이 폴더를 호출 해 봅시다

안녕하세요 그런 다음 열어 라 Beautiful 이제 상단의이 아이콘을 클릭하면이 패널에서 Explorer 패널이 열립니다 프로젝트의 모든 파일과 폴더를 볼 수 있습니다 이제 새 파일을 추가하고 그 APP를 PI라고 부르세요

그래서 모든 파이썬 파일에는 PI가 있어야합니다 확장 보도 자료 자, 이걸 닫자 이 강의에서 약간의 파이썬 코드를 입력하십시오 파이썬에서 print라는 내장 함수 중 하나를 사용할 것입니다 우리는 다양한 종류의 작업을 수행하기위한 많은 내장 함수를 가지고 있습니다

예를 들어,이 원격 제어 장치에서 TV를 원격 제어하는 ​​비유를 생각해보십시오 켜기 켜기 끄기, 채널 변경 볼륨 변경 등의 기능이 있습니다 이것들은 내장 기능과 TV입니다 우리는 Python과 다른 많은 프로그래밍 언어에서 같은 개념을 가지고 있습니다 그래서 파이썬에서 제공되는 이들 내장 함수 중 하나는 print이고 이 함수를 사용하면 열어야하는 함수를 사용할 때마다 화면에 무언가를 인쇄 할 수 있습니다

~ 안에있는 괄호 함수를 호출하는 print 함수를 호출한다고하는 프로그래밍은 함수를 실행한다는 것을 의미합니다 이제 텍스트로 작업 할 때마다 화면에 hello world 메시지를 표시해 보겠습니다 텍스트를 사이에 넣어야합니다 큰 따옴표 나 작은 따옴표를 인용합니다 이제 저는 큰 따옴표로 안녕하세요 세계를 추가하고 그런 다음 행복한 페르시아 고양이를 여기에 놓으십시오

Beautiful는 Mac에서는 command와 s로 변경 사항을 저장하고 Windows에서는 Ctrl + S로 저장합니다 이제이 코드를 실행하기 위해 Windows에서 명령 프롬프트로 돌아가거나 Mac에서 터미널로 돌아 가야합니다 그러나 좋은 소식은 코드 대 프로그램을 전환 할 필요가 없다는 것입니다 우리는 통합 터미널이 있습니다 그래서 ctrl + backtick을 누르십시오

그것은 키보드의 숫자 1 이전의 키입니다 그것은 탈출 버튼 바로 아래에 있습니다 그래서 이것은 우리의 통합 터미널입니다 Mac 또는 Linux 유형의 Python 3을 사용하는 경우 Python을 사용하고 그 옆에 파일 이름을 지정하십시오 그것은 PI와 터미널에서 아름다운 메시지가 왔습니다

이제 이것을 다음 단계로 가져와 재미있게 만들어 보겠습니다 ctrl과 backtick을 눌러이 터미널 창을 닫고 두 번째 코드 줄 추가 한 번 더 인쇄하기 이번에는 그 사이에 별표가있는 따옴표를 추가해 보겠습니다 자,이 별을 열 번 반복하고 싶은지 봅시다 그래서 여기에 우리는 이것을 곱할 수 있습니다 변경 사항 저장 10 개 터미널을 열고 프로그램을 실행하고 이 별이 10 번 반복 된 것을 볼 수 있습니다

그래서 우리 프로그램의 지시 사항은 다음 강의에서 순서대로 위에서 아래로 실행됩니다 이 코드를 강력한 IDE로 변환하여 Python 응용 프로그램을 작성하는 방법을 보여 드리겠습니다 이 강연에서 확장 기능을 사용하여 코드를 강력한 IDE로 변환하는 방법을 알려 드리겠습니다 이 확장 또는 플러그인을 사용하는 Python은 기본적으로 linting과 같은 많은 기능을 제공합니다 잠재적 인 오류에 대한 코드 분석

또한 오류 찾기 및 수정과 관련된 디버깅을 얻습니다 우리는 나중에이 과정을 보게 될 것입니다 기본적으로 자동 완성 기능을 통해 코드를 더 빨리 작성할 수 있습니다 따라서 모든 문자를 입력 할 필요가 없습니다 코드 서식을 사용하면 코드를 깨끗하고 읽기 쉽도록 만드는 것입니다

기사의 형식을 지정하는 것과 같습니다 신문을 깨끗하게 읽을 수있는 책 코드에 대한 테스트를 작성하는 단위 테스트가 있습니다 우리는이 테스트를 자동화 된 방식으로 실행하여 코드가 올바르게 작동하는지 확인하고 마지막으로 우리는 코드 스 니펫을 얻습니다 우리가 신속하게 생성 할 수있는 재사용 가능한 코드 블록으로 손으로 직접 입력 할 필요가 없습니다 이제 우리가 과정을 밟을 때 이들 중 하나를 암기하는 것에 대해 걱정할 필요가 없습니다

이러한 기능에 대해 배우게됩니다 이제 여기 왼쪽의 코드와 비교하십시오 이 아이콘을 클릭하십시오 그러면 확장 탭이 열립니다 그래서 이것들은 우리가 코드를 추가로 가져올 수있는 확장 기능입니다

탭 아래의 기능성은 여기 파이썬 확장이 보이지 않는다면 파이썬 확장을 볼 수 있습니다 여기에 확장 프로그램이 설치되어 있습니다 그런 다음 예 코드를 다시로드해야합니다 이제 오른쪽 하단에이 메시지가 표시됩니다 Linter 필라멘트는 재고가 없습니다

그래서 linting 전에 코드에서 잠재적 인 오류를 찾는 것에 대해 말씀 드렸듯이 Linter는 우리의 코드를 분석하고 Python에서 이러한 잠재적 인 문제를 발견하는 프로그램 또는 도구입니다 요격기가 여러 개 있습니다 필라멘트는이 파이썬 확장이 기본적으로 사용하는 가장 보편적 인 것 중 하나입니다 그래서 우리는 먼저 이것을 수행하기 위해 파일론을 설치해야합니다 우리는 파이썬 환경을 바꿀 필요가있다 그래서 당신이 여기 왼쪽 하단 구석을 보면, 당신은 vs 코드에서 사용되는 현재의 파이썬을 볼 수 있습니다 그건 내 기계 기회에 파이썬 2 포인트 6 점 9입니다

여기 다른 버전이 보입니까? 여기를 클릭하십시오 이 목록에서 선택하십시오 파이썬 3 포인트 7 따라서 파이썬 환경을 파이썬 3 포인트 7로 바꾼 다음이 버튼을 클릭하여 필라 트를 설치할 수 있습니다 Ok 필라멘트는 다음 강연에서 아름답게 설치됩니다 linting이 어떻게 작동하는지 보여 드리겠습니다 이 강의에서는 linting과 action을 보여 드리겠습니다 먼저 괄호가없는이 인쇄 공간과 같은 잘못된 코드를 작성하고 그럼 안녕하세요

앞에서 필자는 인쇄물이 기본 제공 함수이고 함수를 사용하거나 호출하려고 할 때마다 보다 정확하려면 항상 괄호를 사용해야합니다 이것은 실제로 유효한 Python 2 코드이지만 여기서는 Python 3을 사용하기 때문에 이것은 파이썬 3 관점에서 잘못된 코드입니다 이제 변경 사항을 저장하면이 빨간색 밑줄을 볼 수 있습니다 마우스를 가져 가자 이 밑줄을 통해이 툴팁을 볼 수 있습니다

그것은 Pyland에서 왔어 그리고 print에 대한 괄호가없는 오류 메시지는 괄호로 인쇄 했습니까? 따라서 코드 작성시 linting의 이점이 있습니다 코드에서 잠재적 인 문제점을 볼 수 있습니다 이러한 오류를 보려면 프로그램을 실행하기 위해 기다릴 필요가 없습니다 그래서 지금 우리가 넣으면 여기서 괄호를 사용하고 빨간색 밑줄이 사라진 것을 볼 수있는 변경 사항을 저장합니다

다른 오류를 살펴 봅시다 두 개의 더하기를 입력하고 변경 사항을 저장하십시오 앞에서 우리는이 코드를 Python 인터프리터에서 인터랙티브 한 쉘로 실행합니다 구문 또는 문법 오류가 있습니다 그래서 한 번 더 여기에 마우스를 올려 놓으면 파일 문이 잘못된 구문 또는 잘못된 문법임을 알려줍니다

그것은 불완전한 문장과 같습니다 그래서 이것은 행동에서 linting입니다 이제 상단에 몇 가지 유용한 바로 가기를 보여 드리겠습니다 보기 메뉴를보십시오 여기서 우리는이 문제 메뉴를 가지고있다 맥에서 지름길을 살펴보면 쉬프트 명령이고 M은 아마도 쉬프트 컨트롤 M이다 따라서 코드 대 작업을 수행하는 동안 이러한 단축키를 암기 해보십시오

코드를 빨리 작성하는 데 도움이되기 때문입니다 이제 살펴 보겠습니다 이 문제 패널 따라서이 문제 패널은 코드의 모든 문제를 한 곳에서 나열합니다 따라서 여러 개의 파일이있는 응용 프로그램을 사용하는 경우이 파일 중 일부는 현재 열려 있지 않을 수 있으므로이 방법이 유용합니다 그래서이 linter Pyland는 모든 파일을 분석 할 것이고 만약 문제가 발견되면 문제 패널에 여기에 나열 될 것입니다

이제 화면의 오른쪽에 넣을 수 있습니다 그럼 여기에 넣자 따라서 코드를 작성하면 이러한 문제가 여기에 표시됩니다 지금 이 문제를 해결합시다

그래서 여기에 3 개를 추가하여 변경 사항을 저장하면 문제가 사라지는 것을 볼 수 있습니다 이 강좌를 마치기 전에 마지막으로 한 가지 상단에 다시 한번보기 메뉴로가 봅시다 첫 번째 항목은 명령 팔레트입니다 이것은 코드 대 매우 중요한 기능입니다 다시 한번, Shift 명령 인 단축키와 Mac의 P 또는 Windows의 Shift P를보십시오 이 명령 팔레트를 사용하면 다양한 명령을 실행할 수 있습니다 여기에 lint를 입력하면 모두 볼 수 있습니다

이러한 모든 명령을 볼 수 있듯이 linting과 관련된 명령은 Python으로 시작됩니다 명령은 이전에 설치 한 Python 확장과 함께 제공됩니다 그래서 이것들은 우리 대 대 코드에서 사용할 수있는 추가 기능입니다 첫 번째 명령은 select linter입니다 이 목록에서 파일럿을위한 다양한 linters를 볼 수 있습니다

자습서를 읽거나 다른 사람들과 이야기 할 때 당신은 엷은 조각이 나의 파이 pep 8을 먹은 것과 같은 linter에 관해들을 것이다 다른 개발자들은 서로 다른 linters를 선호합니다 개인적으로 필사적으로 선호합니다 이것이 가장 인기있는 코드이며, 기본 linter 세트와 모험심이라면 Python 확장 코드입니다 당신은 스스로 다른 linters를 사용하여 시도해 볼 수 있습니다

일부 오류 메시지는보다 의미 있고 친숙하며 다른 메시지는 모호합니다 이것이 바로 다음 강의에서 linting에 관한 것입니다 코드 서식 지정에 대해 이야기하겠습니다 파이썬 커뮤니티에는 파이썬이라는 문서가 많이 있습니다 파이썬 펩즈를 검색하는 경우 구글에서 강화 된 제안 또는 펩 (peps) 이 모든 뚜껑 목록을 볼 수 있습니다

아래의 pythonorg slash dev slash paps 여기에 빨리 살펴 보겠습니다 각 PAP에는 숫자와 제목이 있습니다 파이썬 개발자들 사이에서 매우 인기가있는 것은 pep 8입니다 파이썬 코드의 스타일 가이드이다

스타일 가이드는 기본적으로 이러한 규칙을 따르는 경우 코드 형식을 지정하고 스타일을 지정하는 일련의 규칙을 정의하는 문서입니다 작성한 코드는 다른 사람들의 코드와 일치하게됩니다 이제 시간이 있다면이 PAP 8 문서를 읽고 읽을 수 있지만 그렇지 않다면, 이 강좌 전반에 걸쳐이 강의에서 8 단원의 핵심 내용을 설명 할 것이므로 걱정하지 마십시오 8 장에 따라 코드의 형식을 자동으로 지정하는 데 도움이되는 도구를 보여 드리겠습니다 코드 대 다시 파이썬 코드를 작성해 봅시다 엑스 하나는 여기에요

변수를 선언하고 변수에 익숙하지 않은 변수로 설정합니다 다음 섹션에서 걱정하지 마십시오 너는 그들에 대해 배울거야 따라서 pep 8에 따르면이 코드는 추악한 것으로 간주됩니다 관습에 따라이 등호 또는 할당 연산자 주위에 공백을 추가해야하기 때문에 이제 파이썬으로 시작하기 때문에 아마도이 규칙을 알지 못할 것입니다

코드를 자동으로 포맷하는 데 도움이되는 도구를 보여 드리겠습니다 이것을 원래 상태로 되 돌리자 이제 명령 팔레트로 돌아 가야겠습니까? 보기 바로 아래에 있고 바로 가기는 이동 명령과 P입니다 여기서 형식을 검색하면이 명령을 처음 실행할 때이 명령 형식 문서를 볼 수 있습니다 이 메시지를 여기에서 보게 될 것입니다 포 타터 자동 유지 8은 설치되지 않습니다

그래서 파이썬 코드를 포맷하기위한 도구들이 많이 있습니다 가장 인기있는 것은 자동 보관 8이며,이 도구는이 Python 확장 우리는 코드를 형식화하는 용도로 설치했습니다 이제 설치하겠습니다 좋은 이제 한 번 더 명령 팔레트를 열고 형식 문서를 실행 해 봅시다 도구가 자동으로 코드를 자동으로 형식화합니다

다른 예를 살펴 보겠습니다 나는 또 다른 변수 Y를 선언하고 변수를 두 개로 설정하고 긴 이름을 가진 변수를 단위 밑줄 친 가격 3으로 설정했습니다 이제 몇몇 개발자들은 이처럼 변수 선언을 형식화하는 습관을 가지고 있습니다 그래서 그들은이 모든 것을 넣었습니다

pepp 8에 따르면 같은 열에 같은 표시가 나타납니다 다시 한 번 코드의 형식을 지정해 보겠습니다 그게 더 아름답습니다 자, 너 한테 속임수를 보여 줄게 이 명령 팔레트를 열고 매번 포맷 문서를 검색하는 것은 시간이 조금 걸리는 작업입니다

따라서 변경 사항을 저장하자마자 파일을 자동으로 포맷하는 방법을 알려 드리고자합니다 맨 위에 코드 메뉴로 가자 선호도 및 설정 검색 상자에서 저장시 형식을 검색합니다 그래서 우리는이 옵션 편집기 형식을 저장하지 않았습니다

이제 앱으로 돌아가서 나는이 라인의 포맷을 바꾸어서 정말 추악하게 만들거야 이제 변경 사항을 저장하자마자 내 코드가 아름답게 다시 포맷 된 것을 볼 수 있습니다 따라서이 Python 프로그램을 실행하려면 터미널 창을 열고 Windows에서 Python을 실행하거나 Mac에서 Python 3을 실행하고 pi에서 app을 실행해야합니다 이것은 약간 지루합니다 그럼 바로 가기를 보여 드리죠

다시 한 번 확장 프로그램 패널로 이동하여 코드 러너를 찾습니다 여러 코드 주자가 있습니다 내가 말하는 것은 노란색 아이콘이있는 것입니다 따라서 이것을 설치 한 다음 예 코드를 다시로드하십시오 이제 터미널을 열고 파이 다음에 수동으로 파이썬을 입력하는 대신 ctrl, alt 및 in을 누르기 만하면됩니다

당신은 아름다운 것을 여기에서 볼 수 있습니다 변경 한 경우이 단축키를 사용하기 전에 변경 사항을 저장해야합니다 그렇지 않으면 지금 이전 결과를 보게 될 것입니다 여기에 아주 작은 문제가 있습니다 이 파이썬 프로그램을 실행하기 위해 실행되는 명령임을 알 수 있습니다

그래서 기본적으로이 명령은 Python-U를 사용하고 있습니다 Windows의 경우이 파일의 이름이 여기에 있습니다 괜찮아 그러나 Mac을 사용하는 경우 Python이 Python을 참조한다는 것을 알고 있습니다 여기서는이를 Python 3으로 변경하려고합니다

이것은 매우 쉽다 코드 메뉴 아래에 다시 한번, 환경 설정으로 가자 설정 및 그 다음 여기에 이 점 아래 열린 설정으로 이동합니다 JSON 이제 여기에 검색 막대 유형 코드 – 러너 점 집행자지도 그래서 이들은 기본 설정입니다 이 코드 러너 확장 프로그램에서 사용하는 자바 스크립트 자바와 같은 많은 언어로 코드를 실행하는이 확장 기능을 볼 수 있습니다

이제 아래로 스크롤하면 여기서 파이썬을 볼 수 있으며 그 앞에는 실행에 사용 된 명령을 볼 수 있습니다 우리가 이것을 바꿀 필요가있는 파이썬 코드 그러나 기본 설정은 변경할 수 없습니다 우리는 사용자 설정을 변경해야합니다 그래서 오른쪽에 마지막 설정 후 쉼표를 입력하고 따옴표로 묶인 코드 – runner dot 실행자가 매핑 한 다음 Enter 키를 누릅니다 이렇게하면 왼쪽의 모든 설정이 자동으로 오른쪽으로 복사됩니다 이제 우리는 쉽게 할 수 있습니다

이 중 하나를 변경하십시오 여기 파이썬이 있습니다 명령을 파이썬 3으로 바꾸자 Mac을 사용하고 있다면,이 작업을 수행해야합니다 죄송합니다

이 과정에서 Windows와 Mac에 대해 몇 번 언급했으면 꽤 많이 들었습니다 우리는 앞으로 Windows와 Mac을 구별하지 않을 것입니다 변경 사항을 저장하면 완료됩니다 그래서 너희들에게 몇 가지 질문이있어 이 비디오에 정말로 관심을 갖고 있는지 아닌지보고 싶습니다

각 질문에 대한 첫 번째 질문은 여기에 있습니다 비디오 일시 중지를 원해 계속 시청할 준비가되면 몇 초 동안 대답을 생각해보십시오 그래서 여기에 첫 번째 질문이 있습니다 표현이란 무엇입니까? 표현식은 값을 생성하는 코드 조각입니다

다음은 표현식의 예입니다 이 표현의 가치는 무엇이라고 생각하십니까? 여기 우리는이 문자열을 가지고 있습니다 이 값에 3을 곱하고 있습니다 결과는 다음과 같은 세 개의 별표로 구성됩니다 다른 질문이 있습니다

구문 오류 란 무엇입니까? 구문 오류는 잘못된 구문 또는 코드의 잘못된 문법으로 인한 종류의 오류입니다 마침내 마지막 질문 린터는 무엇을합니까? Linter는 코드 오류 또는 잠재적 오류를 주로 보이는 전술 오류 범주에서 검사하는 도구입니다 따라서 우리 코드에서 큰 의학 문제가있는 경우 링커가 프로그램을 실행하기 전에 알려줄 것입니다 좋아, 지금은 그거야 더 많은 퀴즈와 프로그래밍 연습이 마음에 들면이 비디오 아래의 링크를보고이 비디오를 즐겼다면 너가 나에게 엄지 손가락을 줘서 나를지지 해주길 바래 이 동영상이 마음에 들면 다음 섹션에서 다른 사람들과 공유하십시오

우리는 파이썬의 기본을 살펴볼 것입니다 당신 안녕하세요, 마쉬는 파이썬 튜토리얼을 보았습니다 이 튜토리얼이 내 첫 두 시간임을 알려 드리고 싶습니다 완벽한 파이썬 과정을 통해 데이터 분석 및 시각화와 같은 실제 시나리오에서 파이썬을 사용하는 방법을 배우게됩니다 파일 및 폴더 작업 관련 반복적 인 지루한 작업 자동화 스프레드 시트 PDF 데이터 압축 이메일 전송 웹 크롤링 API를 사용하는 것은 Yelp와 (과) 같이 비즈니스에 대한 정보를 얻는 것과 훨씬 더 가깝습니다

이 코스는 30 일간 진행됩니다 아무 질문도 돈 뒤 보증 및 완료 증명서를 요구하지 않았다 관심이 있으시면이 비디오 아래 링크를 클릭하여 코스에 액세스하십시오 프로그래밍의 핵심 개념 중 하나 인 변수에 대한 논의를 통해이 섹션을 시작해 보겠습니다 변수를 사용하여 컴퓨터의 메모리에 데이터를 저장합니다

몇 가지 예가 있습니다 나는 lines count 밑에 students라는 변수를 정의하고 우리가이 프로그램을 실행할 때 천 파이썬 인터프리터는 일부 메모리를 할당하고이 수천을 메모리 공간에 저장합니다 그런 다음이 변수를 갖습니다 그 기억 위치를 참조하십시오 따라서이 변수는 해당 메모리 위치의 레이블과 같습니다

이 변수 또는이 레이블을 프로그램의 어느 위치에서나 사용하여 해당 메모리 위치에 액세스 할 수 있으며 데이터가 거기에 저장됩니다 그래서 지금 우리가 인쇄한다면 학생들은 우리가 얻을 수있는 프로그램을 세고 실행합니다 1000의 숫자 그래서 이것은 변수의 기본입니다 이제 어떤 종류의 데이터가 컴퓨터 메모리에있는 저장소가 될 수 있습니까? 우리는이 섹션에서 여러 종류의 데이터를 가지고 있습니다 파이썬에서 기본 제공되는 기본 유형을 살펴볼 것입니다 기본 유형은 숫자 일 수 있습니다 부울 및 문자열 여기서 우리는 정수를 프로그래밍에서 참조 할 수있는 정수를 보여 드리겠습니다

우리는 또한 소수점이있는 숫자를 가질 수 있습니다 한 번 보자 그래서 우리는 이것을 4 점 9 구로 설정했습니다 이것은 우리가 흙손 또는 부동 소수점 숫자로,이 용어는 미래에 Python에 특정 적이 지 않습니다 프로그래밍 언어 이 용어들을 다시 듣게 될거야

이제 부울의 예를 살펴 보겠습니다 ~이다 게시 됨 true 또는 false로 설정 다음은 프로그래밍에서 부울 값의 예입니다 따라서 부울 값은 true 또는 false 일 수 있으며 영어의 경우 yes 및 no와 정확하게 같습니다 나중에 코스

이 불리언 값을 사용하여 프로그램에서 의사 결정을 내릴 것입니다 예를 들어 사용자가 관리 사용자 인 경우 추가 권한을 부여하려고합니다 그래서 이들은 파이썬이 대소 문자를 구별하는 언어라는 사실을 고려한 부울 값입니다 즉, 소문자와 대문자의 의미가 다릅니다 따라서 부울 값은 항상 대문자로 시작해야합니다

false 또는 false를 입력하면 여기에서 보는 것과 같습니다 파이썬에서는 불리언 값이 허용되지 않습니다 여기서 볼 수있는 것은 유효한 부울 값이므로 false 또는 true이고 마지막으로 문자열의 예를 살펴 보겠습니다 코스 이름 아래서 이것을 Python과 같은 문자열로 설정했습니다 내가 전에 말했던 것처럼 문자열을 프로그래밍하는 것은 텍스트와 같습니다

프로그램에서 텍스트 작업을 할 때마다 텍스트를 따옴표로 묶어야합니다 그래서 이것들은 변수의 기초입니다 그래서 이들은 마지막 강의의 변수입니다 자, 질문이있어 이 프로그램에 지속적으로 사용 된 네 가지가 있습니다

비디오를 일시 중지하고 몇 초 동안 생각한 다음 계속 시청할 수 있다면 그들을 발견 할 수 있습니까? 여기 네 가지가 있습니다 첫 번째 것은 모든 변수 이름이 설명적이고 의미가 있다는 것입니다 따라서 학생 수는 한 코스의 학생 수 또는 코스 이름을 나타냅니다 이 변수가 코스의 이름을 보유하고 있음을 분명히 설명합니다 초보자 프로그래머들 사이에서 많이 볼 수있는 문제 중 하나는 변수에 신비한 이름을 사용한다는 것입니다

이 같은 다른 사람이이 코드를 읽을 때 CN이 코스 명을 보장합니다 그들은 CN이 무엇을 나타내는 지 전혀 모르거나 그 코드를 볼 때 c1과 같은 변수 이름을 사용합니다 나는 c2가 어디에 있고 c1과 c2의 차이가 무엇인지 궁금합니다 그래서이 변수 이름들은 매우 신비 롭습니다 그것은 나쁜 습관입니다

변수 이름이 항상 설명적이고 의미가 있는지 확인하십시오 이렇게하면 코드를 유지 관리하기가 더 쉽습니다 이제는 XYZ 같은 짧은 변수 이름을 사용할 수있는 경우가 있습니다 좌표이므로 지금은 예외입니다 두 번째로이 코드에서 일관되게 사용한 것은 소문자로 된 변수에 이름을 붙였습니다

그래서 여기에 우리는 코스 이름 모두 대문자 또는 대문자로 모든 문자는 소문자입니다 권리 이걸 지우겠습니다 제가 여기서 일관되게 사용한 세 번째 점은 여러 단어를 구분하기위한 밑줄 그리고 변수 이름을 더 읽기 쉽게하기 위해이 작업을 수행했습니다 파이썬에서는 공간을 가질 수 없기 때문입니다 변수 이름이므로 코스 이름을 가질 수 없으며이 두 단어를 함께 사용하면 읽을 시간이 조금 부족합니다

그래서 우리가 밑줄을 사용하는 이유는 여기에서 일관되게 사용한 네 번째 점은 공간을 둡니다 이 등호 주변 다시 한 번 그 문제 중 하나입니다 나는 초심자들 사이에서 많은 것을 본다 그들은 다음과 같은 코드를 작성합니다 이것은 약간 추한 것입니다

이것은 더러운 코드를 더럽다고 부르는 것입니다 냄새 나는 냄새 나는 깨끗하고 아름다운 코드를 작성해야합니다 그래서 다른 사람들은 신문 기사처럼 이야기를 읽을 수 있습니다 형식을 올바르게 지정해야하며 파이썬에서 pep 8을 사용하는 이유입니다 이제 좋은 점은 변경 사항을 저장할 때이 규칙을 잊어 버린 경우입니다

자동 지불 방식으로 8 킥을 자동 지불하지 않았습니다 하지만 그건 그렇고 당신은 항상 툴링에 너무 의존하지 않고 깨끗한 코드를 작성하는 습관을 가져야합니다 따라서 다음은 변수 이름 지정에 대한 모범 사례입니다 문자열을 자세히 살펴볼 것입니다 그래서 여기에서는 텍스트로 작업 할 때마다 전에 말했던 것처럼이 과정 변수를 파이썬 프로그래밍으로 설정했습니다

텍스트를 따옴표로 묶어야합니다 큰 따옴표 나 작은 따옴표를 사용할 수 있습니다 그것은 개인적인 취향이지만, 우리는 종종 큰 따옴표를 사용합니다 또한 삼중 따옴표를 사용하며 긴 문자열을 형식화하기 위해이 문자열을 사용합니다 예를 들어 변수 메시지를 말하면 그것이 바로 메시지입니다 우리는 이메일 본문에 포함시키고 자합니다

삼중 따옴표를 사용하여 다음과 같이 형식을 지정할 수 있습니다 안녕 존 이것은 marsh comm blah blah blah로 코드에서 습득 한 습지입니다 그래서 우리가 삼중 따옴표를 사용할 때입니다 이제 우리는이 강의에서 이것을 필요로하지 않습니다 삭제하십시오

문자열로 할 수있는 몇 가지 유용한 것들을 보여 드리겠습니다 우선, 우리는 파이썬에서 문자열의 길이를 얻기위한 내장 함수를 가지고 있습니다 함수는 무엇을 기본적으로 재사용 가능한 코드 조각입니까? 은유로 작업을 수행하여 TV의 원격 제어를 생각하십시오 이 리모콘에는 다른 기능을위한 버튼이 있습니다 예를 들어 켜기를 켜거나 끄면 채널이 변경됩니다

이것들은 Python으로 TV에 내장 된 함수들과 다른 많은 프로그래밍 언어입니다 우리는 똑같은 개념을 가지고 있습니다 그래서 우리는 플랫폼에서 언어에 내장 된 함수를 가지고 있습니다 이러한 기능을 재사용하여 다양한 작업을 수행 할 수 있습니다 그래서 우리는 내장 Len 함수를 사용하여 문자열의 길이를 구할 수 있습니다이 길이는 해당 문자열의 문자 수를 의미합니다

지금 당신이 사용해야하는 함수를 사용하고자 할 때마다 괄호 이제 우리는이 함수를 호출한다고 말합니다이 함수는 기본적으로이 함수를 사용한다는 것을 의미합니다 몇몇 함수들은 인수로 참조하는 추가 데이터 이 인수는이 함수에 대한 입력입니다 따라서이 Len 함수는 입력 또는 인수를 취합니다 여기에 코스 변수를 전달하고이 문자열의 문자 수를 반환합니다

그래서 그것을 인쇄 해 봅시다 우리가 18 개의 문자를 가지고 있기 때문에 우리가 얻는 프로그램이 18 개나되는지보십시오 다른 예제를 보자 이 문자열에서 특정 문자에 액세스하려는 경우 대괄호 표기법을 사용합니다 그래서 여기에 우리는 코스를 추가합니다 첫 번째 문자를 얻으려면 대괄호를 사용합니다

인덱스는 0입니다 파이썬에서는 다른 언어들과 마찬가지로 문자열은 첫 번째 cat 또는 첫 번째 요소의 인덱스가 0임을 의미하는 0 인덱스입니다 이제 우리가 이것을 인쇄 할 때 P를 얻을 것이다 좋아 이제는 음수 인덱스를 사용할 수도 있습니다

마이너스 하나처럼 그게 무슨 뜻 이죠? 0 일 경우 여기서 첫 번째 문자를 나타냅니다 네가 부정적으로 생각하는 것이이 문자열의 끝으로 우리를 되돌아 가게한다는 것을 어떻게 생각합니까? 그래서이 문자열의 끝에서 첫 번째 문자를 반환합니다이 프로그램을 실행 해 봅시다 G가 나타날 것입니다

너 거기 간다 비슷한 구문을 사용하여 문자열을 조각 낼 수 있습니다 보여줄 수 있도록이 줄을 복제하고 부정적인 것을 제거하겠습니다 이 문자열에서 처음 세 문자를 추출하려고한다고 가정 해 봅시다 그래서 여기에 두 개의 인덱스가 필요합니다

시작 색인 콜론 끝 인덱스 그러면 처음 세 문자를 포함하는 새 문자열이 반환됩니다 PY와 T가 될이 코스 변수 따라서이 문자의 색인은 0 1과 2입니다 즉, 끝 인덱스의 문자는 포함되지 않습니다 승인 프로그램을 실행하고 올바른 결과를 얻도록하십시오 거기에 py T 가세요

이제 최종 색인을 포함하지 않으면 어떻게됩니까? 우리가 어떻게 얻을 것 같니? 상식이야 인덱스 0부터 시작하여이 문자열의 끝까지갑니다 이렇게하면 원래 문자열과 완전히 같은 새 문자열이 반환됩니다 한 번 보자 그래서 우리는 파이썬 프로그래밍을 얻는다 이제 시작 인덱스를 포함하지 않고 끝 인덱스를 포함하면 어떻게 될까요? 어떻게 생각해? 우리가 갈거야? 다시 한번, 그것은 상식입니다

그래서 기본적으로 파이썬은 0을 여기에 놓을 것이므로이 문자열의 시작 부분부터 시작할 것입니다 그래서이 프로그램을 실행할 때 한번 더 pyt를 얻어야합니다 됐어 과 마지막으로 우리가 시작 부분을 포함하지 않으면 마지막 예제 마지막 인덱스는 원래 문자열의 복사본을 반환합니다 이것 좀 보죠

그래서 우리는 파이썬 프로그래밍을 얻는다 이제 이들 중 어느 것도 기억할 필요가 없습니다 Len 함수를 사용하여 문자열의 길이를 얻는 것을 기억하십시오 괄호 표기법을 사용하여 특정 요소 나 특정 문자에 액세스 할 수 있으며 이 표기법을 사용하여 문자열을 조각 낸다 여기에이 문자열이 있습니다

파이썬 프로그래밍 이제이 문자열의 중간에 큰 따옴표를 넣고 싶다고합시다 여기에 문제가있다 파이썬 인터프리터 이 두 번째 문자열을 문자열의 끝으로 간주합니다 나머지 코드는 무의미하고 유효하지 않습니다 이 문제를 어떻게 해결합니까? 글쎄, 한 가지 방법은 두 가지 방법이있다

작은 따옴표 문자열에 대해이 문자열의 중간에 이중 코드를 사용할 수 있습니다 그러나 우리 코드에서 일관성이 있는지 어떤 이유로 든 우리가 큰 따옴표를 사용하기로 결정했다면 이 문자열의 중간에 다른 이중 코드를 어떻게 추가 할 수 있습니까? 글쎄, 우리는 접두사를 붙일 수 있습니다 백 슬래시로 파이썬 문자열의 백 슬래시는 특수 문자입니다 우리는 이스케이프 문자라고 불리는 전문 용어가 있습니다 우리는 캐릭터를 이스케이프 처리하기 위해 사용합니다

내가 의미하는 바를 보여 드리죠 그럼이 과정을 인쇄하고이 프로그램을 실행 해 봅시다 여기에 무슨 일이 벌어지고 있는가? 우리는이 이중 코드를 벗어나기 위해 그것을 사용하기 때문에 기본적으로 백 슬래시가 없다 여기에 표시됨 따라서 백 슬래시는 이스케이프 문자이고 백 슬래시 큰 따옴표는 이스케이프 시퀀스입니다 파이썬 문자열

우리가 알아야 할 몇 가지 다른 이스케이프 시퀀스가 ​​있습니다 내가 보여줄 께 그래서 파이썬에서 우리는 주석을 나타 내기 위해 높은 기호를 사용합니다 주석은 우리 프로그램에 추가하는 추가 메모와 같습니다 파이썬 인터프리터는 실행하지 않습니다

괜찮아 그래서 여기에 백 슬래시 큰 따옴표가있는 이스케이프 시퀀스가 ​​있습니다 우리도 가지고있다 백 슬래시 작은 따옴표 그래서 우리는 이것을 사용하여 여기에 하나의 코드를 추가 할 수 있습니다 프로그램을 실행 해 봅시다 여기 그것이 아름답다

이중 백 슬래시도 있습니다 문자열에 백 슬래시를 포함하려면 다른 백 슬래시를 접두사로 사용해야합니다 우리가 이것을 실행할 때 우리는 파이썬 하나의 백 슬래시 프로그래밍과 마침내 우리는 개행을 줄이는 백 슬래시 n 이제 백 슬래시를 여기에 추가하면 여기에 우리가 얻는 것을 볼 수 있습니다 우리는 파이썬 이후에 새로운 라인을 얻습니다 그래서 프로그래밍은 두번째 라인에서 끝납니다

그래서 이들은 파이썬에서 이스케이프 시퀀스입니다 여기에 두 개의 변수가 있으며 마지막으로 콘솔에 내 전체 이름을 인쇄한다고 가정 해 보겠습니다 그래서 다른 변수를 정의 할 수 있습니다 완전한 먼저 설정하십시오 그런 다음 공간과 연결하십시오

한 번 더 연결할 때 마지막 지금 우리가 풀 인쇄 할 때 우리는 콘솔에서 나의 정식 명칭을 아름답게 얻는다 이제이 방법은 연결을 사용하여 문자열을 작성하는 것이 좋습니다 그러나 형식화 된 문자열을 사용할 수있는보다 새롭고 향상된 접근법이 있습니다 그래서 여기서 우리는 충분히 설정할 수 있습니다 이 문자열에 소문자 또는 대문자가 될 수있는 F 접두어 이 형식의 문자열에는이 두 문자열과 같은 상수 값이 없습니다

실제로 런타임에 평가 될 표현식입니다 그래서 여기에 우리의 이름을 추가하고 싶습니다 중괄호를 사용하여 첫 번째 변수의 값을 인쇄합니다 그 후, 우리는 당신의 공간에 있었고, 중괄호를 한 번 더 추가하여 인쇄했습니다 마지막으로 런타임에이 표현식이 평가 될 것입니다

중괄호 사이에있는 것들은 런타임에 대체 될 것입니다 이제이 프로그램을 한 번 더 실행 해 봅시다 정확한 결과를 얻으려면 중괄호 사이에 유효한 표현식을 넣을 수 있다는 사실을 명심하십시오 그래서 이전에 내장 Len 함수에 대해 배웠습니다 우리는이 문자열의 길이를 얻기 위해 Len에게 전화 할 수 있습니다

이 프로그램을 한 번 더 실행 해 봅시다 그래서 우리는 4 우리는 또한 last를 다음과 같은 식으로 대체 할 수 있습니다 2 + 2 이 프로그램을 실행하여 4 & 4를 얻으십시오 따라서 형식이 지정된 문자열을 사용할 때 중괄호 사이에 유효한 표현식을 넣을 수 있습니다 에서 이 강의에서는 문자열을 다루는 데 사용할 수있는 몇 가지 유용한 함수를 살펴볼 것입니다

그래서 이전에이 내장 된 Len 함수에 대해 배웠습니다 이 기능은 범용입니다 따라서 나중에 문자열에만 국한되지 않습니다 이 함수를 다른 종류의 객체와 함께 사용하는 방법을 보여 드리겠습니다 그러나 파이썬에서는 문자열과 관련된 몇 가지 기능이 있습니다

우리가 과정을 타이핑하면 그렇게 여기 보여 드리죠 점 이것들은 모두 함수 다 정확한 용어로 문자열에서 사용할 수 있습니다 우리는 이러한 함수를 메소드 이것은 객체 지향 프로그래밍의 용어로, 나중에 이제 제가 여러분에게 빼앗기를 원하는 것은 파이썬의 모든 것이 객체이고 객체에는 점 표기법을 사용하여 액세스 할 수있는 메소드라는 함수가 있습니다 그래서 여기에 코스가 있습니다

점 표기법을 사용하여 함수에 액세스하거나보다 정확하게 메소드에 액세스합니다 이 방법 중 몇 가지를 살펴 보겠습니다 문자열을 대문자로 변환하려면 upper가 필요합니다 이것을 인쇄하고 프로그램을 실행 해 봅시다 여기서 우리가 아름다운 것을 얻었습니다

여기서 말하는 금속은 새로운 문자열을 반환합니다 따라서 원래 문자열은 영향을받지 않습니다 나는 너에게 이렇게 인쇄 과정을 보여줄거야 한 번 더 프로그램을 실행하십시오 이봐,이게 원래 문자열이야, 그치? 그래서 물론 어퍼 새 문자열을 코스와 같은 변수에 저장할 수있는 새 값을 반환합니다

밑줄 친 자본 이렇게 이제이 데모를 간단하고 일관되게 유지하십시오 이걸 되돌리고 print 문을 사용할거야 문자열을 소문자로 변환하는 더 낮은 방법도 있습니다 우리도 가지고있다 모든 단어의 첫 글자를 대문자로 사용하는 제목 그래서 우리의 문자열이 이런 경우 우리가 title 메소드를 호출 할 때 여기에서 보았 듯이 파이썬 프로그래밍을 얻는다

또 다른 유용한 방법은 스트립 (strip)이며 스트링의 시작이나 끝에있는 공백을 다듬는 데 사용합니다 이것은 사용자로부터 입력을받을 때 특히 유용합니다 상상해 봅시다 사용자는 문자열 시작 부분에 몇 개의 공백을 입력했습니다 스트립 코스라고하면 이러한 공백은 제거됩니다 보세요 그래서 처음 세 예제에서, 우리는 그 흰 공백을 가지고 있지만, 마지막에 그것은 제거됩니다 그래서 스트립은 문자열의 시작과 끝 모두에서 공백을 제거했습니다

우리는 또한 왼쪽 스트립과 오른쪽 스트립에 대한 짧은 스트립에 대한 짧은 L 스트립을 가지고 그래서 그것은 문자열의 끝에서 공백을 제거합니다 if 문자의 색인 또는 문자열의 문자 시퀀스를 가져 오시겠습니까? find 메소드와 mosura를 사용해야합니다 그래서 찾아내는 과정 여기에 인수로서 우리는 다른 문자열을 전달합니다 문자 또는 일련의 문자 Pro의 색인을 찾아 보겠습니다 프로그램을 실행하십시오

그래서 Pro의 지수는 9입니다 따라서 0부터 9까지 시작하면 Pro의 인덱스입니다 승인 파이썬이 대소 문자를 구별하는 언어이기 전에 내가 말했던 것처럼 제가 여기서 자본 P를 통과한다면, 분명히 우리는 우리의 문자열에 이러한 정확한 문자가 없습니다 그럼 우리가 얻는 것을 보자 이 문자열이 원래 문자열에서 발견되지 않았 음을 의미하는 1을 얻습니다

또 다른 유용한 방법이 대체됩니다 그래서 우리는 교체 이를 통해 문자 또는 일련의 문자를 다른 것으로 대체 할 수 있습니다 그래서 우리는 소문자로 된 완두콩을 모두 일본 이것으로 우리는 얻는다 자이 썬, 제레미 그게 무슨 뜻이든간에 마침내 당신이 문자열에 문자 또는 문자열이 존재하면 in 연산자를 사용할 수 있습니다 너에게 그렇게 보여 주겠다

이 프로처럼 표현을 다시 써라 합창 이것은 표현식이 값을 생성하는 코드 조각이되기 전에 말했던 표현식입니다 따라서이 표현식은 Pro가 있는지 확인합니다 물론이 표현과 find 메소드를 호출하면 find 메소드가 문자열에있는 이들 문자의 인덱스를 반환한다 그러나이 표현식은 부울을 반환하므로 true 또는 false입니다

내가 너에게 프로그램을 보여 주겠다 우리는 부울을 참 마지막으로, not 연산자가 있고 우리는 문자열이 그렇지 않은지 확인하기 위해 이것을 사용합니다 문자 또는 일련의 문자 포함 그래서 신속하게 바꾸자 ~ 안에 있지 않다 코스 이 표현식이 평가 될 때, 당신은 어떻게 생각합니까? 우리가 갈거야? 글쎄,이 문자열에는 스위프트가 없다

그래서 우리는 사실로 돌아 가지 않을 것입니다 한 번 보자 너 거기 간다 그래서 이것들은 유용한 문자열 방법입니다 다음에 숫자를 봅니다

파이썬에서는 세 가지 타입의 숫자가 있습니다 정수와 뜨다 우리도 가지고있다 수학에서 복소수가 너무나 복잡한 양은 더하기 bi 형식입니다 당신이이 개념에 익숙하지 않다면 내가 지금 상상의 숫자인데 걱정하지 마십시오 Python을 사용하여 웹 응용 프로그램을 작성하려는 경우 수학 및 전기 공학에서 많이 사용되는 항목입니다 복소수를 사용하지는 않겠지 만 복소수를 나타내는 구문을 빨리 보여 드리겠습니다

대신에 J를 사용합니다 따라서 여기에 예제 1과 2가 있습니다 J 이제 X는 복소수입니다 그런데 전에 내가 말했듯이,이 프로그램을 실행할 때 우리 프로그램의 주석 또는 추가 메모 일뿐입니다 이 해쉬 기호 다음에 오는 것은 무시됩니다

이것들은이 모든 유형의 숫자에 대해 파이썬에서 가지고있는 세 가지 유형의 숫자입니다 우리는 표준 산법을 가지고있다 우리가 수학에서 가지고있는 작전들, 내가 보여줄 수 있도록 부가 뺄셈 곱셈 분할 하지만 실제로 두 가지 유형의 부서가 있습니다 먼저이 프로그램을 실행 해 보겠습니다 그래서이 나누기 연산자로 정수를 원한다면 부동 소수점 숫자를 얻습니다

이중 슬래시를 사용합니다 내가 보여줄 께 그래서 더블 슬래시 프로그램을 실행 우리는 3을 얻는다, ok 우리도 가지고있다 모듈러스 (modulus)는 나눗셈의 나머지 부분이고 마지막으로 지수는 오른쪽의 힘으로 남았습니까? 그래서 10의 3의 힘은 1000이 될 것입니다 이들은 이제 모든 연산자에 대한 표준 산술 연산자입니다

우리는 증강 된 특수 연산자를 가지고 있습니다 대입 연산자, 내가 보여 주도록하겠습니다 상상해 봅시다 우리는 X를 10으로 설정했습니다 우리는 X를 X만큼 증가시키고 자합니다

우리가 x와 x를 더한 표현식을 세 개 만들 수 있다고 해봅시다 약간 더 짧은 확장 할당 연산자 그래서 우리는 x plus를 씁니다 동등한 3 개의이 두 문장은 완전히 동일합니다 이제 여기에 내가 사용하고있다

예를 들면 추가 이 연산자들 중 하나를 여기에서 사용할 수 있습니다 다음으로는 숫자 작업에 유용한 몇 가지 기능을 보여 드리겠습니다 이 강의에서는 숫자로 작업 할 수있는 몇 가지 유용한 함수를 살펴볼 것이므로이 내장 함수가 있습니다 숫자를 반올림하는 경우

따라서 29를 여기에 전달하고 결과를 인쇄하면 우리는 3을 얻을 것이다 우리는 또 다른 유용한 built-in 함수를 가지고있다 숫자의 절대 값을 반환하는 ABS 그래서 만약 당신이 여기에 2

9를 통과한다면 우리는 양 29 엄밀히 말하자면 우리는 숫자를 다루는 몇 가지 내장 함수가 있습니다 복잡한 수학 모듈을 모듈로 사용해야하는 수학적 계산은 파이썬 코드가있는 별도의 파일과 같습니다 그래서 파이썬에서는 수학 함수가 많이 있거나 숫자로 작업하는 수학 모듈을 사용합니다 하지만이 모듈을 가져와 사용해야합니다

맨 위에 가져 오기를 입력하십시오 수학 이제이 프로그램의 수학은 객체이므로 점 표기법을 사용하여 우리가 가진 예제처럼이 객체에서 사용 가능한 모든 메소드 또는 모든 함수를보다 정확하게 볼 수 있습니다 번호의 봉인을 얻으려면 수학 도트 인감 그래서 여기에 22를 통과하면 이 프로그램을 실행해라

우리는 3을 얻는다 이제이 수학 모듈에는 많은 기능이 있습니다 충돌 목록을 찾는 방법을 알려 드리겠습니다 여기 파이썬 3에 대한 Google 검색에서 버전 번호를 추가해야합니다 수학 ~에 모듈 이 페이지 수학 모듈의 모든 기능을 볼 수 있습니다

그래서이 강좌에서 우리는 수학 도트 씰을 보았습니다 우리는 또한 수학이 있지만 복사 팹 등을 운동으로 사용합니다 이 모듈에서 두 가지 기능을 함께 사용하는 것이 좋습니다 자 이제 파이썬에서 유용한 또 다른 내장 함수를 살펴 보겠습니다 입력 함수를 사용하여 사용자로부터 입력을받습니다

문자열을 전달하는 인수로 이것은 터미널에 표시되는 레이블이 될 것입니다 X를 더해 봅시다 : 이제이 함수는 문자열을 반환합니다 그래서 우리는 그것을 이 변수 자, Y가 X와 1이되어야한다고 상상해 봅시다 변경 사항을 지금 저장하십시오

코드 러너를 사용하여이 프로그램을 실행하지 마십시오 코드 러너는 기본적으로 프로그램을 출력 창에서 실행하기 때문에 확장 프로그램 읽기 전용이므로 값을 입력 할 수 없습니다 ctrl + backspace를 사용하여 터미널을여십시오 다시 한번, Mac 또는 Linux를 사용하는 경우 Windows 유형 Python을 사용하고있는 경우 Python 3을 입력 한 다음 해당 PI를 적용하십시오 여기에 우리의 라벨이 있습니다

재미와 같은 가치를 입력합시다 오류 유형 오류가 발생했습니다 여기서 무슨 일이 일어나고있는거야? 잘 사용자로부터 입력을 받으면이 입력은 항상 문자열로 온다 따라서이 표현식은 다음과 같습니다 문자열 1 더하기 1은 숫자 1이 문자열 1과 다른 점은 두 가지 유형이기 때문에 이제 파이썬이이 표현식을 볼 때 두 개의 객체가 될 수 있기 때문에 무엇을해야할지 모릅니다

동일한 유형이있는 경우 연결됩니다 그래서 우리는이 문자열을 파이썬에서 숫자로 변환해야합니다 우리는 int 타입 변환을위한 몇 가지 내장 함수를 가지고 있습니다 숫자를 정수로 변환하기위한 우리는 떠있다 우리는 황소와 약동이나 끈? 지금이 경우에 만약 당신이 나를 믿지 않는다면 X는 이미 문자열이기 때문에 계란을 문자열로 변환 할 필요가 없습니다

내가 보여줄 수 있도록 몇 줄을 주석으로 처리하겠다 이제 인쇄하겠습니다 X의 유형 그래서 유형은 또 다른 내장 함수입니다 객체를 인수로 전달하고 객체의 유형을 반환합니다

또한, 나는 나쁜 소년이기 때문에이 줄을 주석 처리 할 것입니다 터미널에서 변경 사항을 다시 저장하지 않으려 고합니다 다시 한 번이 프로그램을 실행 해 봅시다 1 개를 입력하십시오 이것은 type 함수가 반환하는 것입니다

수업에 대해 걱정하지 마십시오 우리는 나중에 수업에 대해 이야기 할 것입니다 그래서 X의 타입은이다 역사 또는 문자열 그럼이 줄을 지우겠습니다 이 문제를 해결하려면

우리는 X를 정수로 변환해야하고 그런 다음 형식이 지정된 문자열을 사용하여 x와 y를 모두 인쇄 할 수 있습니다 우리는 지금 여기서 F를 닫았습니다 X와 같은 레이블을 추가 한 다음 필드를 추가합니다 그래서 여기에 우리는 X 변수의 값을 출력하고 싶습니다 그 후에 더 많은 텍스트를 추가하고 마지막으로, y의 값을 출력하고 싶습니다

다시 한 번이 프로그램을 실행 해 봅시다 그래서 여기 터미널에서 1을 입력하고 X는 1이고 Y는 2입니다 결과는 아름답습니다 이제 이러한 내장 함수는 모두 자명합니다 유일한 까다로운 것은 파이썬에서 우리가 진리와 위증의 개념을 가지고 있기 때문에 황소입니다

값은 정확히 부울이 아닌 값입니다 참 또는 거짓 그러나 이들은 참 또는 거짓 인 부울로 해석 될 수 있습니다 그래서 여기 파이썬에서 거짓 값 if 빈 문자열은 거짓 e로 간주되어 부울 false로 해석됩니다 숫자 0도 거짓 e 우리는 값의 부재를 나타내는 nan이라는 객체를 가지고 있습니다 우리는 나중에이 과정을 보게 될 것입니다 그래서 우리가 불리언 문맥에서이 값들을 사용할 때마다 false가 될 것이다

다른 것은 사실 일 것입니다 몇 가지 예를 보여 드리겠습니다 파이썬의이 대화 형 셸에서 불의 황소에 번호 0 거짓말 그래서 우리는 거짓말을한다 당신이 음수를 통과하면 우리가 얻을 수있는 풀은 어떨까요? 우리가 5보다 1보다 큰 숫자를 전달하면 우리는 여전히 사실이되므로 거짓 만 얻습니다 0을 부울로 변환하려고 할 때 이제는 문자열

나는 빈 문자열이 거짓이라는 것을 당신에게 말했습니다 그래서 여기 우리는 거짓이 될 것입니다 다른 것은 사실입니다 그래서 나는 거짓이있는 문자열을 가지고있다 빈 문자열이 아니기 때문에 진실해질 것입니다

몇 개의 문자가있는 문자열입니다 그것이 사실로 평가되는 이유입니다 좋아요, 다시 한 번 다른 퀴즈를위한 시간입니다이 튜토리얼에 실제로 관심이 있는지 살펴 보겠습니다 첫 번째 질문입니다

Python의 기본 유형은 무엇입니까? 우리는 문자열 숫자와 부울을가집니다 숫자는 정수 수 또는 복소수 일 수 있습니다 두 번째 질문이 있습니다 Apple에이 변수 과일 세트가 있습니다 어떻게 생각해? 우리는 하나의 열매를 인쇄 할 때 말단에서 볼 것입니다

글자 대괄호를 사용하면 개별 문자에 액세스 할 수 있습니다 첫 번째 문자의 색인은 0입니다 이 표현식은 두 번째 문자 P를 반환합니다 콜론과 부정적인 것을 여기에 추가하면 어떨까요? 구문을 사용하면 문자열을 조각 낼 수 있습니다 다시 저장된 인덱스는 하나이고 우리의 끝 인덱스는 문자열의 끝에서 첫 번째 문자를 참조하는 음수 인덱스입니다 이제 문자열을 자르면 끝 인덱스 또는 음수의 문자가 포함되지 않습니다

따라서이 표현식을 사용하면 두 번째 문자에서 시작하는 모든 문자를 가져옵니다 이 표현의 결과가 e가 될 때까지는 P입니다 Ppl 다른 질문이 있습니다 이 표현의 결과는 무엇입니까? 글쎄, 이것은 우리가 모듈러스 연산자라고 부르는 것이며,이 경우에는 하나 인 나눗셈의 나머지를 돌려줍니다 마침내 마지막 질문

어떻게 생각해? FOSS의 양털을 언제 인쇄할까요? 이전에 파이썬에서 잘못된 값에 대해 말했기 때문에 빈 문자열과 숫자가 아닌 객체 false가 아닌 값이 true로 간주되면이 값은 모두 false입니다 여길 봐 우리는 다섯 자의 문자열을 가지고 있습니다 그 캐릭터가 무엇인지는 중요하지 않습니다 이것은 빈 문자열이 아닙니다 그래서 추락하지 않습니다

진정한 사실을 확인하십시오 봐요, 우리가 황소 함수를 사용하여 그것을 변환 할 때 우리는 참 (boolean) 값을 얻게 될 것이고 다음 절의이 절의 끝으로 넘어갈 것입니다 컴퓨터 프로그래밍의 기초를 배우게됩니다 이 섹션을 즐겁게 지켜 보시고 비교 연산자를 탐색하여이 섹션을 시작하겠습니다 비교 연산자를 사용하여 값을 비교합니다

몇 가지 예가 있습니다 따라서 10이 3보다 크면 사실이됩니다 그래서 여기에 부울 표현식이 있습니다 이 표현식이 평가 될 때 우리는 불리언 값을 가질 것이기 때문입니다 그것은 진실이거나 거짓이다

다음은 또 다른 예제 10입니다 3이 3보다 크거나 같으면 다시 한 번 true가됩니다 우리는 또한 10보다 작아서 20보다 작거나 같음 Equality 연산자가 있습니다 따라서 10은 10과 같습니다 이 표현은 어떨까요? 어떻게 생각해? 우리는이 값들이 다른 유형을 가지며 컴퓨터의 메모리에 다르게 저장되기 때문에 거짓으로 처리 할 것입니다

마지막으로 너트 평등 연산자가 있습니다 이제 우리는이 표현식을 사용하여이 비교 연산자를 문자열과 함께 사용할 수 있습니다 가방 좀 줄 수 있는지 보여줄 수 있도록 보여 드리죠 우리가이 두 단어를 정렬 할 때 가방이 나오면 애플이 진실 해집니다 이제이 가방 하나는 어떨까요? 자본 가방과 같다

그 이유는 여기에 거짓이 있습니다 여기서 볼 수있는 모든 문자는 프로그래밍에서 숫자로 표현됩니다 Ord라는 내장 함수가 있음을 보여 드리겠습니다 이걸 암기하는 것에 대해 걱정하지 마세요 아마 미래에 이것을 사용하지 않을 것이기 때문입니다

하지만 문자 P의 숫자 표현을 보여 드리겠습니다 그래서 그것은 대조적으로 98입니다 자본 B는이 두 문자열이 동일하지 않은 이유 인 66으로 표시됩니다 그래서 다음은 파이썬에서 비교 연산자입니다 조건문을 살펴 보겠습니다

거의 모든 프로그램에서 의사 결정을해야 할 때가 있으며 if 문을 사용할 때가 있습니다 여기에 예제가있다 온도라는 변수가 있다고 가정 해 봅시다 우리는 그것을 35로 설정했다 이제 온도가 30보다 큰 경우 사용자에게 메시지를 표시하려고합니다 그래서 우리는 if 문을 if 다음에 기본적으로 부울 식인 조건을 추가하면 부울 값을 생성하는 식입니다

온도가 30 이상이면 여기에서 이 표현식이 참으로 평가되면 다음 명령문이 실행됩니다 이제 if 문을 사용할 때 많은 초보자가 놓칠 수있는 중요한 부분이 있음을 보여 드리겠습니다 항상 콜론을 사용하여 진술을 종료하십시오 자, 보자 ENTER 키를 누르면 어떻게됩니까? 우리의 커서는 들여 쓰기되어 있습니다

그래서 여기에 두 개의 공백이 있습니다 이것은 매우 중요합니다 들여 쓰기 파이썬 인터프리터는 어떤 명령문을 실행해야하는지 알 것이다 이 조건이 참이라면 다음과 같은 메시지를 인쇄하고 싶습니다 우리는 따뜻하고 다른 메시지도 인쇄 할 수 있습니다

물을 마셔서 그들이 속박되어있는 한 우리가 원하는만큼의 진술을 할 수 있습니다 this if 블록 이제 우리가 여기서 끝낼 때 이 블록의 끝을 나타 내기 위해 들여 쓰기를 제거해야합니다 여기서는 print 문을 추가 할 수 있습니다 완료 메시지

이 명령문은이 조건이 true인지 여부에 관계없이 항상 실행됩니다 이제 변경 사항을 저장하면 여기서 볼 수있는 들여 쓰기는 두 배로 늘려 보입니다 너 거기 간다 따라서 변경 사항을 저장하면 자동으로 8 개의 코드가 다시 포맷되고 4 개의 공백이 들여 쓰기됩니다 그래서 1, 2, 3, 4, 4 개의 공백을 사용합니다 pepp 8이 권장하는 것이기 때문입니다

자 이제이 프로그램을 실행합시다 그래서 온도가 30보다 높기 때문에 처음 두 메시지와 우리는 새벽 메시지를 본다 그래서 온도를 바꾸어 15 시까 지 프로그램을 한 번 더 실행하면 이 새벽 메시지를 보아라 조건이 맞는지 아닌지에 따라 실행됩니다 이 들여 쓰기에 큰 관심을 기울이십시오

이것이 문제 중 하나입니다 초보자 코드에서 볼 수 있습니다 조건이 참이면이 두 print 문이 모두 실행되기를 원한다고 가정 해 봅시다 실수로 네 번째 행의 들여 쓰기가 제거되어서 프로그램이 예상대로 작동하지 않습니다 그러니 이걸주의해라 이제 여러 조건을 원한다면 어떻게해야할까요? 우리는 코끼리를 사용합니다

L이 LS이면 짧습니다 여기서 우리는 또 다른 조건을 다른 조건을 추가 할 수 있습니다 따라서 온도가 다시 20도 이상입니다 여기에 기본값으로 입력하십시오 코드는 두 개의 공백을 사용합니다

변경 사항을 저장하자마자 걱정하지 마십시오 이 두 개의 공백은 네 개의 공백으로 변환됩니다 그럼 다른 메시지를 출력 해 봅시다 멋지다 이 모든 선들이 들여 쓰기 된 것처럼 변경 사항을 저장하십시오

일관되게 원하는만큼 Elif 문을 사용할 수 있으며 선택적으로 else 문을 사용할 수도 있습니다 따라서 이전 조건 중 하나라도 맞지 않으면 else 블록에있는 내용이 다시 실행됩니다 콜론을 추가합니다 주석 인쇄 여기에 메시지를 추가 할 수 있습니다 이 경우의 온도 변화는 15 따라서이 두 가지 조건 중 어느 것도 사실이 아니며 호출 된 것을 볼 수 있습니다

프로그램을 실행 해 봅시다 너 거기 간다 이 강좌에서는 더 깨끗한 코드를 작성하는 기술을 보여 드리겠습니다 따라서 우리가 대학 신청서를 작성 중이며 신청하는 사람이 있는지 확인하고 싶다고 가정 해 봅시다 이 대학 프로그램은 자격이되는지 아닌지 그래서 우리는 age라는 변수를 22로 정의함으로써 시작합니다

이제 H가 18 콜론보다 크거나 같으면 인쇄 자격이되는 들여 쓰기 제거 콜론 인쇄 자격이 없음 프로그램을 실행 해 봅시다 작동하는지 확인하십시오 지금이 코드 조각에는 아무 문제가 없지만 똑같은 결과를 얻는 더 깨끗한 방법을 보여주고 싶습니다 여기에 진술서를 쓰는 대신 message와 같은 변수를 정의하여이 문자열로 설정할 수 있습니다

이것이 첫 걸음입니다 그래서 메시지가이 문자열과 같으면 인쇄 할 것입니다 이 메시지 기본적으로 변수에 값을 할당하는이 구조체를 사용하여 if-else 문을 사용할 때 당신은 이것을 더 간단한 방법으로 다시 쓸 수 있습니다 이것이 작동하는 방식입니다 이 몇 줄을 통해 우리가 원하는 것은이 메시지 변수에 값을 할당하는 것입니다

맞아, 그래서 우리는 메시지로 시작한다 우리는 그것을 자격으로 설정했다 나이가 18 이상인 경우에는 자격이되지 않도록 설정합니다 이 진술은 평범한 영어와 거의 같습니다 7 호선에서 우리가 가진 것은 이 4 줄의 코드와 정확히 동일합니다

지우다 변경 사항을 저장하면 나이를 12로 변경하면이 사람을 볼 수있는 프로그램이 실행됩니다 우리가 자격이없는 프로그램을 실행하십시오 여기에 우리가 가지고있는 것은 삼항 연산자라고 불립니다 에서 파이썬에는 3 개의 논리 연산자가 있으며 더 복잡한 조건을 모델링하기 위해이 연산자를 사용합니다 이 연산자들은 또는 아닙니다 이 연산자를 사용하는 실제 사례를 보자

그래서 우리가 대출을 처리하는 응용 프로그램을 만들고 있다고 상상해보십시오 그래서 두 개의 변수가 필요합니다 높은 우리가 이것을 사실로 설정할 수있는 수입 좋은 밑줄 크레딧 우리는 그것을 사실로 설정했습니다 이제 조건은 다음과 같습니다 신청자의 소득이 높고 신용 점수가 높으면 구현하고 싶습니다

그런 다음 그들은 대출받을 수 있습니다 그래서 만약 고소득 좋은 크레딧, 콜론을 추가하고 인쇄합니다 자격이되는 이제 여기에 유의하십시오 이 변수의 값을 true와 비교하지 않았습니다이 값은 문제 중 하나입니다

나는 많은 초심자 부호에서 본다 이것은 중복적이고 전문가가 아닙니다 고소득은 부울이기 때문에 참이거나 거짓입니다 우리는 진실과 진실을 비교할 필요가 없습니다 그래서이 조건이 참이고 이 두 번째 조건은 사실입니다

그런 다음 인쇄합니다 터미널에 적합하다 변경 사항을 저장하고 프로그램을 실행하면이 사람이 자격이 있음이 분명합니다 그러나 이러한 조건 중 하나가 거짓이면 터미널에서 자격이 표시되지 않습니다 이제 여기에 성명서를 작성하고 인쇄하십시오

자격이 없음 프로그램을 실행시키다 자격이 없다고 본다 따라서 and 연산자가 and 연산자와 함께 작동하는 방법입니다 두 조건이 모두 참인 경우 결과는 다음과 같습니다 적어도 하나의 조건이 참일 경우 or 연산자와 대조를 이룹니다

결과는 사실 일 것이다 그래서 내가 바뀌면, 우리가보아야한다 터미널에서 사용할 수있게되면 다시 한 번 실행 해 봅니다 너 거기 간다 그래서 and 연산자와 or 연산자입니다

이제 너트 연산자의 예를 살펴 보겠습니다 그래서 다른 변수를 정의 할 것입니다 학생은 그것을 사실로 설정했다 일시적으로 나는이 표정을 제거하고 단순화 할 것입니다 우리는 나중에 이것을 다시 볼 것입니다

그러니 그 사람이 학생이 아닌 경우 자격이되는지 말하자 너트 연산자는 기본적으로 부울 값을 반전합니다 그래서이 경우 학생은 사실입니다 not 연산자를 적용하면 결과는 false가됩니다 그래서이 경우 우리의 조건은 거짓 일 것입니다

그래서이 print 서술문은 실행되지 않습니다 내가 너에게 그렇게 보여줄 수있게 해줘 학생이 거짓 인 경우 자격이없는 프로그램을 실행하십시오 우리가 너트 오퍼레이터를 적용 할 때 사실이 될 것이고 우리의 조건은 사실이 될 것이고 우리는 그것을 적격으로 볼 것입니다 한 번 더 실행 해 봅시다 너 거기 간다

이 연산자를 사용하여 더 복잡한 조건을 모델링 할 수 있습니다 다음은 소득이 높은 사람이나 좋은 신용과 그것들을 사용해서는 안됩니다 이 조건을 구현하는 방법을 알려 드리겠습니다 그래서 고소득층 또는 우리는 이러한 조건 중 적어도 하나가 사실이기를 원합니다 그래서 우리는 이것들을 괄호

우리는 이것들을 다른 조건과 분리하고 싶다 어떤 학생이 아니냐는 결과가 사실이어야합니다 즉,이 조건들 중 적어도 하나가 참이어야 함을 의미합니다 그 다음에 우리는 학생이 아니라 마침내 붙 잡혔다 따라서이 연산자를 사용하여 모든 종류의 실제 시나리오를 모델링 할 수 있습니다 그래서 여기에 마지막 소득세를 가진 사람이 대출을받을 수있는 마지막 강의의 예가 있습니다 좋은 신용과 그들은 학생이 아닙니다

이제이 부울 연산자에 대해 알아야 할 것은 단락 회로라는 것입니다 그게 무슨 뜻이야? 파이썬 인터프리터 때 첫 번째 인수에서 시작하는이 표현식을 평가하고 싶습니다 이것이 사실이라면 두 번째 인수도 참인지를 평가하는 작업을 계속합니다 따라서이 표현의 끝까지 평가를 계속합니다 그러나 이러한 인수 중 하나가 거짓이면 즉시 평가가 중단됩니다 나가 의미하는 것을 보여주게하십시오 따라서 파이썬 인터프리터가이 표현을 볼 때 고소득을 false로 변경하면 여기부터 시작됩니다

고소득은 거짓이라는 것을 알고 있습니다 그래서 그 뒤에 오는 것이 중요하지 않습니다 이 전체 식의 결과는 항상 false가됩니다 왜냐하면 적어도 인수 중 하나 또는 피연산자 중 하나가 거짓입니다 이것은 우리가 부르는 우리가 전자 제품에서 가지고있는 단락 개념처럼 단락

따라서 이러한 인수 중 하나가 실행되는 즉시 평가가 중단됩니다 거짓으로 평가하다 우리는 or 연산자와 같은 개념을 가지고 있습니다 그래서 내가이 연산자와 연산자를 무슨 일이 일어나는지 보자 or 연산자를 사용하면 인수 중 적어도 하나가 true이어야 함을 알 수 있습니다 그래서 평가는 Python 인터프리터가 true로 평가되는 인수를 찾자 마자 중단됩니다

고소득이 거짓이라고 보는이 표현을 평가합니다 따라서 다음 인수가 true가되기를 바라는 평가를 계속합니다 좋은 신용 사실입니다 따라서 평가가 중단되고이 전체 표현의 결과가 true가됩니다 그래서 파이썬에서 논리 연산자는 단락 이 강의에서는 비교 연산자를 연결하는 방법을 보여 드리겠습니다

이것은 깨끗한 코드 작성을위한 매우 강력한 기술입니다 여기에 예제가있다 우리는 연령 사이에 있어야한다는 규칙을 구현한다고 가정 해 보겠습니다 18 및 65 여기에 우리가 그것을 구현할 수있는 방법이 있습니다 그래서 age와 같은 변수를 22로 설정합니다

이제 나이가 18보다 크거나 같으면 나이는 65 세 미만입니다 지금 적격입니다, 여기 당신을위한 질문입니다 우리는이 규칙을 어떻게 대량으로 작성합니까? 우리는 이것을 이렇게 쓸 수 있습니다 우리가 더 정확하게 여기에 등호가 있으므로 나이가 이것은 수학에서이 규칙을 지금 쓰는 방법입니다 나는 너에게 좋은 소식이있어

파이썬에서 똑같은 표현을 쓸 수 있습니다 그래서 여기에 if 문을 넣으려고합니다 4 번과 3 번 줄은 정확히 동일합니다 하지만 네 번째 줄에서 알 수 있듯이 선 4는 더 깨끗하고 읽기 쉽습니다 3 호선을 없애자

이것은 우리가 체인 비교 연산자라고 부르는 것입니다 좋아, 여기 너를위한 작은 퀴즈가있다 비디오를 일시 중지하고 10 초에서 20 초 동안이 퀴즈에 대해 생각해 보시기 바랍니다 어떻게 생각해? 이 프로그램을 실행할 때 터미널에서 보겠습니다 준비가되면 비디오 그림을 잠시 멈추십시오

계속 다시 시청 해주세요 좋아이 프로그램을 실행할 때 어떤 일이 일어나는지 보자 먼저이 if 문을 얻습니다 우리는 두 개의 다른 객체를 비교하고 있습니다

그리고이 객체들은 다른 유형을 가지고 있습니다 이 문자열과 비교하여 숫자가 있습니다 그래서 10 번과 10 번 문자열은 같지 않습니다 터미널에 인쇄되지 않습니다 그래서 컨트롤이 여기 Elif 파트로 이동합니다

두 개의 부울 표현식이 있습니다 여기에 첫 번째가 있습니다 여기는 두 번째이고 논리 끝을 사용하여 결합됩니다 따라서 두 표현식이 모두 true로 평가되면 그러면이 전체 표현은 사실 일 것이며 우리는 터미널 너머로 보일 것입니다 이 두 표현식이 모두 true로 평가되는지 봅시다

여기에 첫 번째 부분이 있습니다 가방은 애플보다 큽니다 사실입니다 우리가이 단어 가방을 분류 할 때 애플 가방이 고양이보다 크지 않기 때문에이 표현식이 거짓으로 평가되는 두 번째 부분을보십시오 그래서 우리가 참과 거짓 사이에 논리적 인 결론을 적용했을 때 결과는 false가됩니다

이것이이 진술이 실행되지 않는 이유입니다 그래서 컨트롤이 else 파트로 이동하고 이 프로그램을 실행하면 문자 C가 터미널에 인쇄됩니다 여러 번 작업을 반복 할 수있는 경우가 있습니다 예를 들어 메시지를 전달할 수없는 경우 사용자에게 메시지를 전송한다고 가정 해 보겠습니다 아마도 우리는 단순화를 위해 지금 세 번 재 시도하려고합니다 상상해 봅시다

이 print 서술문은 실제 프로그램에서 5 ~ 10 줄의 코드를 작성해야하는 사용자에게 메시지 보내기 이제 세 번 다시 시도하려는 경우 모든 코드를 반복하지 않으려 고합니다 그건 못 생겼어 루프를 사용할 때입니다 루프를 사용하여 되풀이 그래서 그것이 작동하는 방법입니다

우리는 4 명으로 시작합니다 Number는 range라는 기본 제공 함수가 있습니다 이제 우리는이 작업을 몇 번 반복하고 싶습니까? 세 번 말하자 그래서 우리는 범위를 호출하고 3을 인수로 전달합니다 이제 if 문과 비슷하지만 콜론을 사용하여이 행을 종료해야합니다

들여 쓰기를 입력하십시오 그래서이 블록에서 우리는 세 번 반복되어야하는 모든 문장을 쓸 수 있습니다 시도와 같은 메시지를 인쇄 해 봅시다 변경 사항 저장 프로그램을 실행하여 세 번 아름다운 인쇄를 시도하십시오 지금

이 번호는 무엇입니까? 한 번 보자 정수형의 변수입니다 이제 print 함수의 두 번째 인수로 전달해 보겠습니다 프로그램을 실행하십시오 이것은 우리가 제로를 얻는 것입니다 그래서 여기에 for 루프가 있습니다

for 루프는 각 반복에서 세 번 실행됩니다 번호는 처음에는 다른 값을 갖습니다 두 번째 반복에서 0이됩니다 그것은 마지막 반복에서 하나가 될 것입니다 이제 우리는 우리가 할 수있는 재미있는 것을 할 수있는 두 가지가 될 것입니다

이 하나에 프로그램을 실행하면 이제는 인쇄물이 좀 더 의미 있고 사용하기 쉬운 메시지가됩니다 번호 하나를 시도하는 것 2 번을 시도하는 것 우리는 다음 단계로 넘어갈 수 있으므로 다른 논의를 할 수 있습니다 여기에 표현식을 하나 더 추가하고 그래서 우리는 지금 1 2 3을 얻을 것입니다 이 표현식을 괄호 안에 넣고 싶습니다 그럼 이것을 선택합시다

그것을 괄호 안에 넣은 다음 그것을 점으로 곱하십시오 여기에 숫자가 곱해진 문자열이 있습니다 결과는 해당 횟수만큼 반복되는 문자열입니다 프로그램 둘러보기 봐, 멋지다 그렇지? 이 강의를 끝내기 전에 한 가지 더 보여 드리겠습니다 이 범위 함수는이 숫자까지 0부터 시작하여 숫자를 생성한다는 것을 알았습니다

그러나 여기에는이 번호가 포함되지 않습니다 우리는 1에서 start라고하는 또 다른 인수를 전달할 수 있습니다 4시 전에 끝내라 이 변경으로 인해 매번 1에 번호를 추가 할 필요가 없습니다 첫 번째 반복에서이 숫자 변수는 1로 설정되기 때문에 따라서 코드를 단순화하고 깨끗한 공기로 만들 수 있습니다

한 번 더 실행 해 봅시다 우리는 똑같은 결과를 얻는다 세 번째 주장을 단계로 전달할 수도 있습니다 그래서 두 번째 인수를 10으로 변경하려고합니다 두 단계를 결과로 보입니다

이것들은 우리가 1 3 5를 얻는 숫자입니다 매우 유용하므로 실제 응용 프로그램에서이 함수를 많이 사용하게 될 것입니다 마지막 강좌의 예에서 계속 첫 번째 시도 후에 메시지를 성공적으로 보낼 수있는 시나리오를 상상해 봅시다 이 루프에서 뛰어 내리고 싶습니까? 우리는 메시지를 세 번 보내는이 작업을 반복하고 싶지 않습니다 이 데모에서이를 구현하는 방법을 보여 드리겠습니다

우리가 성공적으로 메시지를 보낼 수있는 시나리오를 시뮬레이션 할 것입니다 그래서 우리는 변수를 정의합니다 성공하고 그것을 사실로 설정하십시오 이 print 문 다음에 여기에 if 문을 갖습니다 성공한 경우 : 아마 우리는 인쇄 할 수 있습니다

성공한 이제 우리는이 루프에서 뛰어 내리고 싶습니다 break 문을 사용합니다 이 프로그램을 실행하고 어떤 일이 발생하는지 살펴 봅시다 그래서 거기에 첫 시도 후, 우리는 성공하고 더 이상 시도가 없습니다 다시 한번 말하지만, 초보자들 사이에서 흔히 볼 수있는 문제 중 하나이기 때문에 여기에 들여 쓰기에 큰 관심을 기울여 주시기 바랍니다

여기 for 루프가 있습니다 이 두 줄은 네 칸 공백으로 들여 쓰며 반복 할 때마다 for 루프에 속합니다 이 두 줄은 실행됩니다 이제이 조건이 참이면 4 행을 얻습니다 다음 두 줄은이 if 문 아래에 들여 쓰기되어 있기 때문에이 두 줄이 실행됩니다

자,이 프로그램을 다음 단계로 가져 가자 세 번 시도해도 여전히 이메일을 보낼 수 없으면 어떻게해야합니까? 아마도 우리는 사용자에게 다른 메시지를 표시하려고합니다 우리는 3 번 시도했지만 작동하지 않았습니다 그래서 내가 바꿀거야 거짓으로 성공한 이제 여기에 else 문을 추가 할 수 있습니다

이것은 우리가 else 문을 호출하는 것입니다 이 else 문에 넣은 내용은이 루프가 조기 종료없이 완료되는 경우에만 실행됩니다 그래서 우리가이 루프에서 벗어나지 않으면 else 문이 실행될 것입니다 그래서 우리는 다음과 같은 메시지를 출력 할 수 있습니다 세 번 시도하고 실패했다 그래서 프로그램을 실행하십시오

우리가 세 번 시도한 것을 본다이 메시지가 3 번 시도되고 실패했다 성공으로 바뀌면 대조 이 break 문을 사용하여이 루프를 종료하기 때문에 else 블록에있는 내용은 실행되지 않습니다 프로그램을 실행 해보십시오 한 번의 시도가 성공적으로 완료되었습니다

프로그래밍에서 우리는 하나의 루프를 넣을 수 있도록이 개념을 중첩 루프라고 부릅니다 다른 루프 내부에서 우리는 흥미로운 결과를 얻을 수 있습니다 내가 너에게 보여주기 위해 범위 내 X에 대해이 루프부터 시작하겠다 5 : 이제이 루프 안에 Y 범위에 또 다른 루프를 추가 할 것입니다 삼 : 및 그런 다음 두 번째 루프에서 print 문을 추가합니다

여기서 우리는 사용할 수 있습니다 형식화 된 문자열을 사용하여 좌표 표시 서식이 지정된 문자열을 기억하므로 F 뒤에 따옴표가옵니다 이제 여기에 표시하려는 좌표에 괄호를 추가합니다 X 다음에 쉼표와 Y가옵니다 이 프로그램을 실행하고 거기에서 일어나는 일을 봅시다

너 정말 멋지다, 그렇지? 그래서 우리는 0 + 0을 얻는다 0 1 0 & 2 그러면 1 & 0 1 & 1 1 & 2가됩니다 이제 정확히 어떻게 파이썬 인터프리터가이 코드를 실행하는지 설명하겠습니다 그래서 여기에 두 개의 루프가 있습니다 이것은 우리가 외부 루프라고 부르는 것입니다

이것은 내부 루프입니다 그래서 우리 프로그램의 실행은이 루프의 첫 번째 반복에서 시작합니다 X는 0입니다 이제 우리는이 성명을 듣게됩니다 이것은 네 번 들여 쓰기 때문입니다

이 문 자체는 루프입니다 그래서 우리가이 루프의 내부에있는 것은 실행될 것입니다 첫 번째 반복에서 세 번 우리가 외부 루프의 첫 번째 반복에 여전히 있기 때문에 X는 0입니다 Y는 내부 루프의 첫 번째 반복에 있기 때문에 0이기 때문에 0과 0을 얻습니다 이제이 반복에서이 내부 루프의 두 번째 반복으로 이동합니다 Y는 1이됩니다

X는 여전히 0이지만 우리는 0과 1을 얻습니다 마찬가지로 내부 루프의 세 번째 반복에서 우리는 차례에는 0과 2 이제 우리는 내부 루프의 실행을 마쳤습니다 그래서 컨트롤이 여기 외부 루프로 돌아갑니다 우리는 두 번째 반복 될 것입니다 그래서 X는 하나가 될 것이고 우리는 다시 여기서 시작합니다

따라서 첫 번째 반복에서이 내부 루프를 세 번 실행해야합니다 Y는 0이고 X는 1이므로 여기서 1과 0을가집니다 그러면 우리는 하나 하나를 얻게 될 것이고 하나, 둘은 당신에게 요점을줍니다 그래서 이것은 모든 중첩 된 루프에 관한 것입니다 따라서 네 개의 루프를 사용하여 프로그램에서 하나 이상의 문을 반복하는 방법을 배웠습니다

이제 더 깊이 살펴보고이 범위 함수가 반환하는 것을 살펴 봅시다 그래서 더 일찍 배우기 이 함수에 내장 된 유형 함수는 객체의 유형을 얻을 수 있습니다 그래서 내가 여기 다섯을 통과하면 이 프로그램을 실행해라 이것이 우리가 얻는 것입니다 따라서이 숫자 또는이 객체의 유형은 int 또는 integer입니다

이제, 유형을 살펴 보겠습니다 범위 함수에서 가져온 값입니다 인수로서 우리는 숫자의 범위를 전달합니다 이 프로그램을 실행 해 봅시다 따라서이 범위 함수는 유형이? 인 객체를 반환합니다

범위, 그래서 우리는 파이썬에서 숫자 문자열 및 부울과 같은 기본 유형 그러나 우리는 또한 복잡한 유형 범위를 가지고 있습니다 이제 다른 복잡한 유형에 대해 배우게됩니다 이 범위 객체에 대해 흥미로운 점은 무엇입니까? 그것이 iterable 인 것은 우리가 그것을 반복하거나 for 루프에서 사용할 수 있다는 것을 의미한다 그래서 우리는 다음과 같은 코드를 작성할 수 있습니다 따라서이 range 함수는 interval 객체 인 range 객체를 반환합니다

각 반복에서 X를 반복 할 수 있다는 것은 X가 다른 값을 가짐을 의미합니다 이제 범위 오브젝트가 파이썬에서 유일하게 반복 가능한 오브젝트가 아닙니다 문자열도 반복 가능합니다 그래서 여기에 끈 Python과 같은 이제 각 반복에서 X는이 문자열에서 한 문자를 보유합니다 너를 보여 주겠다

그리고 나는이 두 줄을 여기서 지울거야 이 프로그램을 실행 해 봅시다 따라서 각 반복에서 우리는 한 문자를 얻고 그것을 인쇄 할 것입니다 우리는리스트라고 불리는 또 다른 복잡한 타입을 가지고 있습니다 그래서 대괄호를 추가합니다

이것은 목록을 나타냅니다 이제 숫자 목록이나 이름 목록과 같은 문자열 목록을 추가 할 수 있습니다 과정의 뒷부분에서 목록에 대해 배우게됩니다 그러니 한 번 더 실행 해 봅시다 우리는 각 반복에서 목록을 반복 할 수 있음을 알 수 있습니다

지금이 목록에 하나의 객체가 있습니다 나중에 코스 나는 먹을 수있는 나만의 커스텀 객체를 만드는 법을 보여줄 것이다 예를 들어, 다음과 같이 코드를 작성하는 법을 배웁니다 ~에있는 항목 쇼핑 카트 항목을 인쇄하십시오

따라서 장바구니는 사용자가 만들 개체입니다 그것은 정수 나 문자열 또는 부울이 될 수 없습니다 그것은 커스텀 객체입니다 그것은 다른 구조를 가지고 있으며 우리는 그것을 먹을 수있게 만들 것입니다 그래서 우리는 for 루프에서 사용할 수 있고 반복 할 때마다 장바구니에서 하나의 항목을 얻을 수 있습니다

터미널에 인쇄하십시오 그래서 여러분은 우리가 파이썬에서 각 루블 객체를 반복하기 위해 루프를 사용한다는 것을 배웠습니다 우리는 while 루프 인 다른 종류의 루프를 가지고 있으며, 조건이 참일 때 그 루프를 사용합니다 여기에 예제가 있습니다 변수 번호를 정의하고 백으로 설정해 봅시다

우리는 number가 0보다 큰 한 while과 here를 사용합니다 콜론을 추가합니다 다시 한 번 들여 쓰기가 있으므로 하나 이상의 문장을 반복 할 수 있습니다 이 번호를 인쇄 할 수 있습니다 그런 다음 우리는 번호를 숫자로 같아서 반으로 나눌 수 있습니다

정수 나누기 사용 이를 두 개로 나누거나 오름차순 및 대입 연산자를 사용하여이 코드를 단축 할 수 있습니다 이렇게 이제이 프로그램을 실행 해 보겠습니다 그래서 우리가 처음에 얻는 것이 있습니다 우리의 수는 우리가 반으로 나누는 백입니다 우리는 50을 얻고 25를 얻는다 이 예제에서 볼 수 있듯이 범위 객체 나 문자열 또는 목록과 같은 반복 가능한 객체를 반복하지 않습니다

우리는 조건을 평가하고 과제를 반복하고 있습니다 이 대화 형 셸에서 while 루프의 실제 예를 보여 드리겠습니다 파이썬이 입력을 기다리고 있습니다 우리는 2 + 2와 같은 것을 입력 할 수 있습니다 평가할 것이고 다음 입력을 요구할 것입니다

10이 2보다 큰 다른 표현식을 추가 할 수 있으므로이 단계는 우리는 제어 d 그래서 장면 뒤에서 우리는 control-d를 누를 때까지 계속 실행됩니다 이것이 while 루프를 종료하게하는 조건입니다 파이썬에서 이런 식으로 만드는 법을 알려 드리겠습니다 그래서 변수를 정의합시다 그리고 그것을 빈 문자열로 설정하십시오

이제 여기에 while 루프가 필요합니다 명령이 종료되지 않는 한 루프를 실행하는 동안이 작업을 원합니다 그래서 명령은 종료와 같지 않습니다 : 이 루프에서는 사용자로부터 지속적으로 입력을 받아야합니다 그래서 우리는 빌트인 입력 함수를 사용합니다

다음과 같은 라벨을 추가합니다 결과를 가져 와서 명령 변수에 저장하십시오 이제이 시점에서 파이썬 대화 형 셸은이 명령을 평가할 것입니다 우리는이 강의에서 단순화를 위해 너무 복잡하기 때문에 그렇게하지 않을 것입니다 사용자가 입력 한 내용을 다시 표시 할 수 있으므로 인쇄 할 수 있습니다

Echo와 두 번째 인수로이 명령을 전달합니다 따라서 while 루프는 종료 할 때까지 실행됩니다 지금 내가 전에 말했듯이 코드 러너를 사용하여이 프로그램을 실행하지 마십시오 Extension은 기본적으로 프로그램을 출력 창에서 실행하기 때문에 읽기 전용입니다 ctrl + back take를 사용하여 터미널을여십시오 파이썬 또는 파이썬 3 AB를 실행 파이 파이 여기 명령 프롬프트가 있습니다

2 + 2라고 입력하면 다시 돌아갑니다 3 번 타이핑 해 봅시다 2 우리가 타이핑하면 우리가 빠져 나갑니다 이제 프로그램이 종료됩니다 한 번 더 해보 죠

우리가 대문자를 입력하면 어떻게 될까요? 소문자와 대문자가 다른 숫자로 표현되기 전에 학습 한대로 프로그램이 종료되지 않습니다 그래서 소문자에서 종료는 대문자에서 종료와 다릅니다 이제이 문제를 해결하기 위해 아마추어 프로그래머는 이와 같은 작업을 수행 할 수 있습니다 명령이 다음과 같지 않음 대문자는 명령이 같지 않은 동안 종료합니다 소문자로 종료하고 대문자로 종료 할 때 사용자가 입력을 계속합니다

터미널에서이 프로그램을 실행하고 어떤 일이 발생하는지 살펴 봅시다 그래서 한 번 더 파이 파이 다음에 파이썬 나는 그만 뒀어 그것은 아름답게 작동합니다 우리는 대문자를 입력하여 종료 할 수도 있습니다 하지만 대문자 Q를 사용하여 종료하려면 어떻게해야합니까? 소문자 우리 프로그램이 종료되지 않습니다

따라서 이것은 quit 명령을 확인하는 나쁜 방법입니다 더 좋은 방법은 무엇입니까? 내가 너에게 보여 줄게 우리는 이것을 필요로하지 않는다 여기 연산자 대신에 command는 문자열이기 때문에 lower 메소드를 호출 할 수 있습니다 따라서 사용자가 처음 입력 한 내용 이 값을 소문자로 변환 한 다음 소문자로 종료와 비교합니다 사용자가 quit이라는 단어를 입력하면 프로그램이 항상 종료됩니다

이제이 섹션에서 마지막으로 논의하고자하는 것은 무한 루프의 개념입니다 무한 루프는 영원히 계속 실행되는 루프입니다 그래서이 조건을 true로 변경하면 True는 항상 true이기 때문에 루프는 영원히 계속 실행됩니다 그래서 이것에서 뛰어 내리기 위해서는 break 문이 필요합니다 따라서 사용자로부터 입력을받은 후 우리는 명령을 얻을 수있다

이 경우 소문자로 변환하고 종료되는지 여부를 확인하십시오 우리는 깨고 싶다 이제이 변경으로 더 이상 빈 문자열에 명령을 초기화 할 필요가 없습니다 이전에는 커맨드가 종료와 같지 않은 동안 우리는 이와 같은 야생성 문장을 가지고 있었으므로 이것을 필요로했습니다 그래서 우리는이 명령 변수를 정의해야했습니다

그래서 파이썬 인터프리터가이 라인을 사용하지 않고 빈 문자열로 설정 한 것입니다 이 코드를 실행하려고 시도합니다 그것은 어떤 명령인지 모른다 이제 무한 루프가 생겨 이제 명령을 정의하고 빈 문자열로 설정할 필요가 없습니다 따라서 기능면에서이 프로그램은 프로그램과 완전히 동일합니다 우리는 마지막 강의에서이 무한 루프를 알고 있기를 영원히 계속하기 때문에 썼습니다

항상 뛰어 내릴 수있는 방법이 있어야합니다 그렇지 않으면 프로그램이 영원히 돌아가고 때때로 문제가 발생할 수 있습니다 어떤 시점에서 메모리를 소비하는 작업은 메모리가 부족하여 충돌이 발생할 수 있습니다 운동을위한 시간 1에서 10 사이의 짝수를 표시하는 프로그램을 작성해 주시기 바랍니다

그래서이 프로그램을 실행할 때? 당신은 2 4 6과 8을보아야하고이 후에 나는이 메시지를 인쇄하기를 원합니다 우리는 4 개의 짝수를 가지고 있습니다 이제 시작하기 전에 빠른 힌트가 있습니다 범위 함수를 1과 10으로 호출해야합니다 이 세 번째 인수를 사용하지 마십시오

그래서 기본적으로 나는 당신이 원하는 모든 숫자를 반복 할 수 있기를 바랍니다 각 번호가 짝수인지 확인한 다음 터미널에 인쇄하십시오 동영상이 끝나면 2 분 동안이 운동을 중단하고 계속 시청하십시오 그래서 그것은 1에서 10까지의 범위에서 4 개의 루프로 시작되었습니다 이 숫자를 2로 나눈 나머지가 0인지 확인합니다 그래서 숫자 모듈러스 2가 0이면 우리는 인쇄한다 이 번호 이제이 프로그램을 실행 해 보겠습니다

그래서 우리는 이제 짝수를 계산하기 위해이 아름다운 4 개를 얻습니다 우리는 별도의 변수가 필요합니다 그럼 그 카운트를 불러 봅시다 처음에이 if 블록에서 0으로 설정합니다 짝수를 찾을 때마다 블록을 증가시킵니다

그래서 count plus plus를 1로 설정하고 마침내 for 루프가 끝나면 우리가 가지고있는 형식화 된 문자열 카운트 짝수 프로그램을 실행하고 결과는 다음과 같습니다 그래서 다음 절의이 절의 끝으로 넘어갑니다 자신 만의 함수를 만드는 법을 배울 것입니다 이 섹션을 즐겁게 지켜 보시고 지금까지 print와 같이 파이썬에서 내장 함수를 사용하는 법을 배웠다 이 섹션에서 라운드 등등, 자신 만의 함수를 작성하는 법을 배울 것입니다

이제 물어볼 수도 있지만 왜 우리 자신의 함수를 작성해야합니까? 잘 프로그램이 수백 또는 수천 줄의 코드로 구성 될 실제 프로그램을 만들 때 지금까지했던 것처럼 하나의 파일에 모든 코드를 작성하면 안됩니다 이 코드를 유지 보수가 용이하고 잠재적으로 더 재사용이 가능한 작은 조각으로 나누어야합니다 우리는이 덩어리를 함수 자 이제 사용자 정의 함수를 만드는 방법을 보여 드리겠습니다 우리는 DEF 키워드로 시작합니다 다음으로 우리는 우리의 기능과 이름을 줄 필요가있다

그럼 모든 모범 사례를 환영하겠습니다 변수의 이름을 지정하는 것에 대해서도 배우게됩니다 따라서 함수 이름이 의미가 있는지 확인하십시오 설명에 소문자를 사용하여 함수 이름을 지정하고 밑줄을 사용하여 여러 단어를 구분합니다 이제 이름 뒤에 괄호를 추가해야합니다

그러면 곧 왜 콜론을 추가할까요? 이제 어떻게 될 것입니까? 들여 쓰기를 얻는다는 것을 알고 있습니다 다음 문장이이 함수에 속할 것임을 의미합니다 그래서 여기에 두 개의 문장을 추가 할 것입니다 안녕하세요 환영합니다

배로 두 디자인은 들여 쓰기되어 있기 때문에이 함수에 속합니다 이제 우리는이 기능을 끝 마쳤습니다 우리는 그것을 부를 필요가있다 그래서 들여 쓰기를 제거하고 두 줄 바꿈을 추가합니다 이 기능 후에 이것은 Papp 8이 2 줄 바꿈을 추가하는 것을 잊어 버렸을 때 코드를 깨끗하고 유지 보수성을 유지하도록 권장하는 것입니다 걱정마

변경 사항을 저장하자마자 자동 지불 방식으로 8이 자동으로이 줄 바꿈을 추가합니다 내가 너에게 보여 줄게 그래서이 줄 바꿈을 제거하고 괄호로이 함수 작성을 호출하십시오 내장 함수를 호출하는 것과 마찬가지로 이제 변경 사항을 저장합니다 너 거기 간다 그래서 우리는 우리의 기능 후에 두 줄 바꿈을합니다

이제이 프로그램을 실행 해 보겠습니다 그래서 우리는이 두 메시지를 터미널에서 얻습니다 자, 여기에 당신을위한 질문이 있습니다 탐욕과 트렌드 기능 차이점은이 인쇄 기능이 입력을 받는다는 것입니다 인사말 기능이 어떤 입력도받지 않는 반면 이 함수에 이름과 성 등의 입력을 전달하는 방법을 보여 드리겠습니다

괄호 사이에 함수를 정의하면 매개 변수가 나열됩니다 그래서 여기에 첫 번째 밑줄 이름과 마지막 밑줄 이름과 같은 두 개의 매개 변수를 추가합니다 이제이 함수를 호출 할 때이 매개 변수에 대해 두 개의 값을 제공해야합니다 우리는 그것들을 인수 매쉬 Madani는 greet 함수의 인수입니다 이것은 많은 개발자들이 사용하는 용어 중 하나입니다

모르겠다 그들 사이의 차이를 모르는 매개 변수와 인수 a 매개 변수는 함수에 대해 정의한 입력입니다 인수가 주어진 매개 변수의 실제 값인 곳은 어디입니까? 괜찮아 자, 두 줄을 바꾸고 대신 hi라고 말하자 사람을 인사로 인사 할 수 있으므로 형식이 지정된 문자열 및 여기에 두 개의 필드를 전달하십시오 이름뿐 아니라 성 변경 사항을 저장하여 프로그램을 실행하면 터미널에 지금 연결됩니다

이 기능이 더 유용합니다 우리는 그것을 재사용하고 다른 주장으로 부를 수 있습니다 그럼 만들자 존 스미스 프로그램을 실행하여 전자 메일 및 하이 존 스미스에게 안녕하세요 무하마드를 가져옵니다 이제는 기본적으로 함수에 대해 정의한 모든 매개 변수가 필요합니다

그래서 여기서 greet 함수는이 인수 중 하나를 제외하고 두 매개 변수를 취하여 변경 사항을 저장합니다 우리는이 빨간 밑줄을 볼 수 있습니다 그래서 필통은 불평하고 인자성에 대한 가치가 없다고 말하고 있습니다 또한 프로그램을 실행하면이 유형 오류가 하나의 필수 위치 인수가 누락되었습니다 자, 나중에 다시 보겠습니다

선택적 매개 변수를 정의하는 방법을 보여 드리겠습니다 그래서 이것은 우리가 이전에 만들었던 greet 함수의 단순화 된 버전입니다 이제 프로그래밍에서는 두 가지 유형의 함수가 있습니다 작업을 수행하는 기능 값을 계산하고 반환하는 함수 여기에 몇 가지 예가 있습니다 print 및 greet 함수는 모두 유형 1의 예제입니다

터미널에서 무언가를 인쇄하는 작업 수행 대비 갈색 함수입니다 사용자가 만든 함수가이 두 범주에 속할 수 있도록 값을 계산하고 반환하는 함수의 예 이제 greet 함수를 다시 작성하는 방법을 보여 주지만 두 번째 형식으로이 문자열을 터미널에 인쇄하는 대신 우리는 단순히 그것을 반환합니다 이 코드를 모두 지우겠습니다 새 함수 정의 그러나 밑줄을 긋는다 고 부르십시오 인사 name 매개 변수를 추가하고 이 포맷 된 문자열을 단순히 반환한다 이름 그것이 우리가해야 할 전부입니다

따라서 return 문을 사용하여이 함수에서 값을 반환하면이 함수를 호출 할 수 있습니다 밑줄이 그어진 인사말에는 이름이 있습니다 Maj와 마찬가지로 값을 반환하기 때문에 메시지와 같은 별도의 변수에 값을 저장할 수 있습니다 이제이 인사말 기능 중 어떤 형태가 더 나은지 궁금 할 것입니다 이 첫 번째 구현과 잘 우리는 미래에 터미널에 무엇인가를 인쇄하는 것에 고정되어 있습니다 파일에있는 메시지 또는 전자 메일로 보내기 우리는이 인사말 기능을 다른 시나리오에서 재사용 할 수 없도록 다른 함수를 만들어야합니다

대조적으로이 두 번째 형식은 단순히 값을 반환하는 터미널에 무언가를 인쇄하는 것과 관련이 없습니다 이제 우리는이 가치를 얻고 우리가 원하는대로 할 수 있습니다 터미널에서 인쇄 할 수 있습니다 우리는 내장 open 함수를 사용할 수 있습니다 이 메시지를 파일에 쓰면 우리는 비슷한 내용을 만들 수 있습니다

Txt 이 글을 쓰는 곳은 파일 객체를 반환하고 파일을 오른쪽으로 호출 할 수 있습니다 메시지 이제 코스의이 두 줄에 대해 걱정할 필요가 없습니다 파일 작업하는거야 하지만 내가 여기서 버리길 원하는 것은 우리가이 메시지 변수를 가지고 있고 우리가 원하는대로 그것을 할 수 있다는 것이다 우리는 그것을 단말기에 인쇄하여 전자 메일 등으로 파일에 파일을 작성하고 우리가이 강의를 끝내기 전에 한 가지 더

여기에 인사 기능이 있습니다 보시다시피 greet을 호출하면 문자열을 출력합니다 우리가이 메시지를받는 프로그램을 실행하는 이름을 줘 안녕, 마지하지만 우리가 이걸 넣으면 어떡해? print 함수를 호출 할 때 우리가 얻는 것을 보자

우리는 높은 습지가 뒤따라 오지 않습니다 이게 뭐야? 없음은 greet 함수의 반환 값입니다 그래서 파이썬에서는 기본적으로 모든 함수가 아닌 값을 반환합니다 과정에서 나중에 가치가 없다 지금 중요한 것은 모든 함수가 기본적으로 반환되지 않는다는 것입니다

값을 구체적으로 반환합니다 그래서 우리가 돌아 오면 여기에 일부 문자열 이제 더 이상 반환되지 않습니다 나는 단지 뭔가를 분명히하고 싶다 앞서, 우리는 계산 및 리턴하는 태스크 또는 함수를 수행하는 프로그래밍 함수에 두 가지 유형의 함수가 있음을 말씀 드렸습니다 가치 그래서 이전에 우리가 가지고 있던 코드로 되돌아갑니다 따라서이 함수가 기본적으로 아무 것도 반환하지 않더라도 여전히 작업을 수행하는 함수로 분류됩니다 다른 함수를 만들어 보겠습니다

이 함수를 사용하여 주어진 값만큼 숫자를 증가 시키려면 증가라고 부릅니다 여기에 숫자를 더하여 이제이 함수를이 증분과 같이 호출 할 수 있습니다이 함수는 값을 반환하므로이 함수를 저장할 수 있습니다 변수 결과와 마찬가지로 터미널에 인쇄하십시오 프로그램을 실행 해 봅시다

지금 우리는이 코드를 단순화 할 수있는 세 가지 아름다운 것을 얻습니다 우리는이 결과 변수를 6 행인 단일 위치에서만 사용 했으므로 실제로 필요하지는 않습니다 따라서 6 번째 줄에서는 결과를 increment 함수 호출로 바꿀 수 있습니다 이렇게 파이썬 인터프리터가이 코드를 먼저 실행하면 증분 함수를 호출합니다 결과를 얻고 임시 변수를 변수로 저장합니다

우리는 변수를 보지 않고 그 변수를 print 함수의 인수로 전달합니다 이제이 프로그램을 실행하면 똑같은 결과가 아름답게됩니다 이제이 코드를 더 읽기 쉽게 만들 수 있습니다 다른 누군가가 5 번 라인을 보면, 정확히 무엇을 알지 못할 수도 있습니다 이 인수는 키워드 인수를 사용하여이 코드를 더 읽기 쉽도록 만들 수 있습니다 여기이 값은이 접두어로 사용할 수있는 매개 변수의 값입니다

이 매개 변수의 이름 이제 우리는 영어를하는 것처럼 거의이 코드를 읽을 수 있습니다 2 씩 증가하다 그래서 여러 인자를 가진 함수를 호출한다면, 그것은 명확하지 않습니다 인수는 무엇이며 키워드 인수를 사용하여 코드를 더 읽기 쉽게 만들 수 있습니다 그래서 여기 y는 하나가 키워드 인수입니다 앞서 저는이 강의에서 함수에 대해 정의한 모든 매개 변수가 기본적으로 필요하다고 말했습니다 by 매개 변수를 선택적으로 만드는 방법을 보여 드리겠습니다

그럼 우리가 명시 적으로 원하지 않는다고 가정 해 봅시다 패스 y는이 증가 함수를 호출 할 때마다 1과 같습니다 이 함수를 사용하여 값을 1 씩 증가시킵니다 두 번째 인수를 제거합니다 이제이 매개 변수에 기본값을 제공해야합니다

그래서 우리는 1로 설정했습니다 이제이 함수를 호출하고 두 번째 인수를 제공하지 않으면이 기본값이 사용됩니다 그렇지 않으면 여기서 지정한 값이 사용됩니다 우리가이 프로그램을 운영했음을 보여 드리죠 결과는 3이지만 여기에서 두 번째 인수를 전달하면 우리는 2를 5 씩 증가시킬 것입니다

그래서 우리는 7을 얻을 것입니다 따라서 매개 변수를 선택적으로 만드는 것이 매우 쉽다는 것을 알 수 있습니다이 모든 선택적 매개 변수는 그만큼 필수 매개 변수 다른 필수 매개 변수를 여기에 추가 할 수 없습니다 다른 것을 부르 자

나는 그것을 여기에 추가 할 수 없다 변경 사항을 저장하면 여기에 빨간색 밑줄이 표시됩니다 따라서 모든 선택적 매개 변수가 있어야합니다 필요한 매개 변수 다음에 이제 분명히이 경우 두 번째 매개 변수는 필요 없습니다 그래서 그것을 지우겠습니다

다양한 인수를 취하는 함수를 만들려는 경우가 있습니다 예를 들면 다음과 같습니다 이 함수를 정의합시다 곱한 그것은 두 개의 매개 변수 x와 y를 취하고 단순히 x 번 y를 반환합니다 이 함수를 다음과 같이 부를 수 있습니다

지금까지 그렇게 좋았지 만, 만약 당신이 통과하기를 원한다면 여기에 하나 또는 두 개의 인수가 더 필요합니다 우리의 곱셈 함수는 두 개의 매개 변수만을 취하기 때문에 작동하지 않습니다 이 문제를 해결하십시오 이 두 매개 변수를 단일 매개 변수로 대체해야합니다 우리가 여기에 복수의 이름을 사용하여 이것이 인수 다음에 별표를 접두사로 붙입니다

이것은 마법의 부분이다 여기에 별표를 사용하면 어떻게되는지 보여 드리겠습니다 임시로이 줄을 지우고 간단히 인쇄하십시오 숫자, 우리가 여기에 오는 것을 보자 그래서 프로그램을 실행하십시오

우리의 모든 주장을 볼 수 있으며 괄호 안에 들어 있습니다 이게 뭐야? 이전에 목록에 대해 배웠습니다 간단히 말해서 대괄호를 사용하여 2 3 4 5와 같은 객체 목록을 만들 수 있다고 언급했습니다 나중에 코스 목록에 대한 포괄적 인 섹션이 있습니다

목록의 세부 사항 및 작동 방식에 대해 걱정하지 마십시오 하지만 여기서 주목해야 할 것은이 목록과 여기에있는 유일한 차이점은 표기법에 있다는 것입니다 대괄호를 사용하여 목록을 만들고 튜플을 만드는 괄호는 어떤 사람들은 이것을 2 극 또는 2 극이라고 부릅니다 따라서 최고 극점은 그것은 객체의 컬렉션입니다 차이점은이 컬렉션을 수정할 수 없다는 것입니다

코스의 뒷부분에서이 오브젝트에 새로운 오브젝트를 다시 추가 할 수는 없습니다 우리는 튜플 및 기타 데이터 구조를 나열하는 포괄적 인 섹션을 갖게 될 것입니다 지금 중요한 건 뭐니? 이러한 목록은 목록이 반복 가능한 것과 같기 때문에 우리는 각각을 공격 할 수 있습니다 우리가 루프에서 사용할 수 있음을 의미합니다 내가 너에게 보여 줄게

숫자에 숫자가 맞습니다 한 번에 하나의 숫자 만 인쇄하십시오 사실, 우리는이 라인이 필요하지 않습니다 그래서 프로그램을 삭제하고 실행하십시오 그래서 우리는이 전복에 대해 반복하고 각 반복에서 하나의 숫자를 얻고 터미널에 출력합니다 이제 간단한 변화로이 모든 수의 곱을 계산할 수 있습니다

우리가해야할 일은 total과 같은 변수를 정의하는 것뿐입니다 처음에 우리는 이것을 1로 설정 한 다음 각 반복에서 총계를 얻습니다 현재 숫자로 곱하거나이 문장을 다시 쓸 수 있습니다 확장 할당 연산자 사용 따라서 총 시간은 동일한 수입니다 5 번과 4 번 라인은 정확히 동일합니다

5 번 줄은 짧고 깨끗한 삭제 및 마지막으로, 지금 총액을 반환합니다 초보자 용 코드에서 자주 볼 수있는 문제 중 하나는이 들여 쓰기를 사용하지 않는다는 것입니다 제대로 여기에 return 문을 넣으면 return 문을 넣으면 함수가 제대로 작동하지 않는 이유가 궁금합니다 여기서는 for 루프의 일부가됩니다 그래서 이 경우 첫 번째 반복 후에 각 반복에서 실행됩니다

이 return 문으로 인해이 multiply 함수에서 리턴 할 것입니다 따라서 총계가 제대로 계산되지 않을 것입니다 이 함수의 다른 명령문과 동일한 수준의 들여 쓰기가 필요합니다 그래서 여기에 우리는 for 문을 가지고 있습니다 우리는 모든 숫자를 반복합니다

총계를 계산 한 다음 마지막으로 반환합니다 따라서이 구현을 통해 결과를 얻고 터미널에 인쇄 할 수 있습니다 프로그램을 실행 해보면이 숫자의 곱을 볼 수 있습니다 120 마지막 강의에서 함수에 가변 인수를 전달하는 구문을 배웠습니다 우리는 두 개의 별표로이 구문을 변형했습니다

그리고 그것이 제가이 강연에서 여러분을 보여줄 것입니다 그래서이 데모에서는이 함수의 이름을 저장하도록 변경합시다 밑줄 친 사용자와 인수를 user로 바꿉니다 이 함수를 사용하여 사용자에 대한 정보를 저장한다고 가정 해 봅시다 이제이 함수에서이 사용자 인수를 인쇄 해 보겠습니다

우리는 우리의 기능으로 끝났습니다 밑줄 친 사용자 저장 자 이제 임의의 인수를 전달하는 대신 임의의 키워드 인수를 전달할 수 있습니다 키워드 인수를 기억하여 이름이 같은 값을 갖습니다 그래서 여기에 ID equals와 같은 여러 개의 키워드 인수를 추가 할 수 있습니다 name은 John과 같습니다

age는 22와 같으므로이 함수에 3 개의 키워드 인수를 전달합니다 이제이 프로그램을 실행 해 보겠습니다 이것이 우리가 얻는 것입니다 구문을보십시오 이 중괄호가 있고 그 사이에 우리는 여러 개의 키 값 쌍이 있으므로 키 콜론 값 쉼표는 여기에 또 다른 키 값 쌍이고 여기에 마지막 키 값 쌍이 있습니다

여기에있는이 개체를 사전이라고 부릅니다 이것은 파이썬에서 또 다른 복잡한 유형 또는 데이터 구조입니다 나중에이 과정에 대해 자세히 이야기 할 것입니다 당분간 내가 빼앗아 주길 바란다는 것은 여기에 별표 두 개를 쓸 때 여러개를 키 값 쌍 또는 함수에 대한 여러 키워드 인수 파이썬은이를 자동으로 사전에 패키지합니다 그래서 여기에있는이 사용자 객체는 사전입니다

이제 대괄호 표기법을 사용합니다 이 사전에있는 다양한 키 값을 얻을 수 있으므로 사용자를 인쇄 할 수 있습니다 대괄호는 문자열을 전달하며 이것은 ID와 같은 키의 이름입니다 프로그램을 실행 해 봅시다 우리는 1을 얻습니다

이름 키 이름이 John이되도록 프로그램을 실행하십시오 그래서 이것은 마리아의 일에 대한 예식입니다 프로그래밍에서 우리는 코드의 영역을 참조하는 scope라는 매우 중요한 개념을 가지고 있습니다 이 예제에서 변수는 어디에 정의되어 있습니까? 이 메시지 변수가 있습니다 이 변수의 범위는이 함수 내부에만 존재하는 greet 함수입니다 그래서 우리가이 함수를 벗어나서 인쇄하려고하면 메시지는 무슨 일이 일어나는 지 봅니다

이 붉은 색 밑줄이 그어진대로 변화를 저장하자마자 정의되지 않은 변수 메시지 및 프로그램을 실행하면 메시지가 정의되지 않았습니다라는 이름의 오류가 발생했습니다 함수의 매개 변수에도 같은 규칙이 적용됩니다 따라서 여기에 이름 매개 변수를 추가하고 greet 함수 외부에서 인쇄하려고하면 같은 오류가 발생합니다 그래서 이름과 메시지 변수의 범위는 greet 함수이며이 변수들을 이 함수의 지역 변수 그들은이 함수에서 지역적이며, 다른 곳에서는 존재하지 않는다는 것을 의미합니다 그것은 우리가 다른 기능을 가질 수 있음을 의미합니다

전자 메일을 보냅니다 여기에 같은 이름의 매개 변수가 있습니다 메시지 변수를 가질 수 있습니다 그러나이 메시지 변수는 greet 함수에있는 메시지 변수와 완전히 다릅니다 물론 이러한 함수의 명명 된 매개 변수에도 동일한 규칙이 적용됩니다

그들은 완전히 분리되어있어 지역 변수의 수명이 짧습니다 우리가 전화 할 때 인사 기능을 사용하고 이름을 전달한다고 가정 해 보겠습니다 파이썬 인터프리터는 메모리를 할당하고 이름과 메시지 변수를 갖습니다 greet 함수 실행이 완료되면 해당 메모리 위치를 참조하십시오 이러한 변수는 다른 곳에서 참조되거나 사용되지 않기 때문에 결국, 그들은 가비지 컬렉터를 얻습니다

즉, 파이썬 인터프리터는 이러한 변수에 할당 된 메모리를 해제합니다 그래서 이것들은 지역 변수입니다 지역 변수와 대비되는 전역 변수 따라서이 메시지 변수를 위대한 함수 외부로 이동하면 전역 변수가됩니다 즉,이 파일의 어디에서든 액세스 할 수 있습니다 따라서이 변수의 범위는이 파일에서 함수의 외부 또는 함수 외부에서이 파일의 어디에서나 사용할 수 있습니다 이런 이유로 전역 변수는 가비지 수집 될 때까지 더 오랜 시간 동안 메모리에 남아 있기 때문에 자주 사용하지 않아야합니다 사실 글로벌 변수는 실제로 악합니다

그래서 모범 사례로 매개 변수 및 로컬 변수를 사용하여 함수를 만듭니다 인사 기능에서 여기 있다면 어떨까요? B라는 말을하기 위해 메시지를 설정했습니다 이제이 두 번째 함수를 삭제 해 봅시다 우리는 지금 그것을 필요로하지 않습니다 따라서이 함수에서 greet 함수를 호출합니다

이제 메시지 변수에 새 값을 할당하고 인쇄 해 봅시다 이 메시지와 우리가 얻는 것을 보아라 어떻게 생각해? 우리가 갈거야? 글쎄, 한번 보자 우리는 얻을 수 있지만 메시지 변수의 값을 변경하지 않았습니까? 기본적으로 파이썬 인터프리터는 greet 함수에서이 메시지 변수를 로컬 변수로 취급하기 때문에 1 행에있는 전역 변수와 이름이 같지만 따라서이 두 변수는 현재 분리되어 있습니다 나는 당신에게 나쁜 습관을 가르치고있는 튜토리얼이나 책을 보았다

이 전역 메시지 변수의 값을 수정하는 방법을 보여줍니다 함수 내부 내가 어떻게하는지 보여 줄게 그러나 이것이 나쁜 습관임을 항상 기억해야합니다 나는 그 이유를 잠깐 설명 할 것이다

그래서이 튜토리얼이나 책은 여기에 글로벌 키워드를 사용하도록 가르쳐줍니다 파이썬 인터프리터가이 라인을 볼 때 메시지 변수를 참조하면이 함수에서 우리는 전역 메시지 변수를 사용하려고합니다 따라서이 함수에서는 지역 변수를 정의하지 않습니다 이제 프로그램을 실행하면이 변경 사항이 적용됩니다 우리는이 기능에서 우리가 터미널이기 때문에 터미널을 벗어나는 것을 볼 수 있습니다

전역 메시지 변수의 값 수정 왜 이것이 나쁜가요? 이 전역 변수에 의존하는 여러 함수가있을 수 있기 때문에 실수로 또는 의도적으로이 전역 변수의 값을 한 함수에서 변경하는 경우 다른 기능에 부작용이있을 수 있습니다 이러한 함수는 제대로 동작하지 않을 수 있으므로 프로그램에서 버그를 만들 수 있습니다 그래서 전역 변수는 항상 나쁜 변수였습니다 이것은 파이썬이 아닙니다

이것은 수십 년 동안 진행 되어온 토론입니다 가능한 한 많이 피하십시오 또는 파일에서 변수를 전역 적으로 정의해야하는 상황이있는 경우 괜찮습니다 그러나 여기에서 보는 것처럼 함수에서 수정하지 마십시오 이것은 정말 나쁜 습관이다

모든 것이 지역 변수와 전역 변수에 관한 것입니다 이 강의에서는 프로그램에서 버그를 찾아 수정하는 방법을 보여 드리겠습니다 그래서 우리가 이전에 썼던 곱셈 함수가 있습니다 이 함수 뒤에 몇 개의 명령문을 추가합시다 그래서 인쇄 시작과 그런 다음 곱하기 함수를 호출합니다

3 개의 인자로 1, 2, 3을 준다 결과는 6이되어야한다 이제 터미널에 결과를 출력합니다 이 프로그램에 버그를 만들려면 나는 고의적으로 갈거야

이 return 문을 들여 쓰기 이제 우리가이 프로그램을 실행할 때 여섯 대신 우리는 하나를 얻습니다 따라서 디버깅이라는 기술을 사용하여이 버그를 찾아 수정합니다 우선 디버깅 패널을 열어야합니다 처음으로 Python 프로젝트에서 디버깅을 사용하려면이 아이콘을 클릭해야합니다 이렇게하면이 파일에 JSON 시작이라는 새 파일이 생성됩니다

우리는 많은 디버깅 구성을 가지고 있습니다 아무 것도 만질 필요가 없으므로 걱정하지 마십시오 이 파일을 닫으면 닫습니다 이 코드 폴더 내부 바로 여기 있습니다

JSON 출시 이제이 파일이 생기면 디버깅 패널과이 목록에서 찾아 볼 수 있습니다 구성에서 디버그를 선택할 수 있습니다 이러한 구성 중 일부는보다 복잡한 응용 프로그램에 유용합니다 예를 들어, 우리는 Python Django를 사용하여이 과정을 위해 파이썬으로 빌드 된 웹 애플리케이션을 디버깅합니다 우리는 통합 된 터미널과 함께 파이썬의 현재 파일을 사용할 것이다 디버깅을 시작하려면 지금 선택하십시오 먼저 이러한 명령문 중 하나에 중단 점을 추가해야합니다

커서를 8 번 줄에 놓고 f9 키를 눌러 중단 점 삽입 그래서 이것은 f9를 한번 더 눌러 그것을 제거 할 수있는 중단 점입니다 Mac 키보드를 사용하는 경우 기능 키를 눌러야합니다 키보드의 왼쪽 하단에있는 키를 누른 다음 f9 키를 누릅니다 그래서 여기에 중단 점이 있습니다 이제 f5를 눌러이 시점까지 응용 프로그램을 실행할 수 있습니다

그래서 f5 그래서 이것은 자동으로 통합 된 터미널을 열어 여기에 대해 걱정하지 마라 나는 그것을 닫을 것이다 이제 우리 프로그램이 지금까지 실행되고 있음을 알 수 있습니다 이 행은 강조 표시되어 있습니다 이제이 프로그램을 한 줄씩 실행하고 런타임에 어떤 일이 발생하는지 정확하게 볼 수 있습니다

한 번에 하나의 명령문을 실행하려면 f10 키를 누릅니다 좋아, 이제 끝났어 9시에 온거야 그러나 9 행에서 f10 키를 다시 누르면 곱하기 함수가 호출됩니다 실행이 중지되므로이 숫자를 곱한 결과로 왜 하나를 얻었는지 알 수 없었습니다 이제 한 번 더 디버깅을 시작하겠습니다

f5를 누릅니다 그래서 다시 한번, 우리는 8 행에 있습니다이 행을 f10으로 넘어 갑시다 이제 이번에는이 곱셈 함수로 들어가기를 원합니다 그래서 우리는 여기서 무엇이 일어나고 있는지 정확히 알 수 있습니다

그래서 f10 대신 f11을 누르십시오 이제 우리는 2 호선에 있습니다 그래서 함수를 호출한다면 f11을 사용하여 그 함수로 들어갈 수 있습니다 이제 여기에서는 변수 패널 내부의 왼쪽에 곱하기 함수가 있습니다 이 함수에서 의미있는 모든 변수를 볼 수 있습니다

그래서 배가 고팠다 우리는 숫자가있는 지역 주민들 그래서 이것이 우리의 숫자 인수입니다 이것은 3 개의 숫자로 된 전복으로 설정되어 있음을 볼 수 있습니다 1 2 3 현재 정의되지 않은 총 변수는이 목록에 없습니다 우리가 f10으로이 단계를 뛰어 넘는 순간 총계가 존재하고 처음에는 1로 설정되어 있음을 볼 수 있습니다

이제 for 루프가 시작됩니다 한 번 더 f10을 눌러 봅시다 여기서 우리는 총 개수를 곱하려고하므로이 줄을 넘어서자 이제이 시점에서 number라는 새로운 변수가 생겼습니다 그것은 우리의 루프 변수입니다

처음에는 1로 설정됩니다 이제 f10 키를 누르면 5 행에 있습니다 우리는이 함수에서 빠져 나올 수 있음을 알 수있다 그래서 우리의 루프가 완료까지 실행되지 않았고 이것이 우리 프로그램에 버그가있는 이유입니다 그래서이 문제를 해결하기 위해 Shift + f5를 사용하여 디버거를 멈추게 할 것입니다 이제 다시 여기 들여 쓰기를 제거해 보겠습니다

변경 사항을 저장하여 프로그램을 디버그 모드로 한 번 더 실행하십시오 그래서 우리는 f5를 누릅니다 여기 우리는 f10을 사용하여이 단계를 밟아 봅시다 이제 f11과 이 줄을 몇 번 더 f10으로 넘겨 라 한 번 더 f10 합계가 설정되었습니다

지금 우리는 두 번째 반복에 있습니다 이 반복에서 f10을 한 번 더 눌러 봅시다 숫자가 2로 설정되어있는 것을 볼 수 있습니다 총계는 여전히 하나입니다

그럼이 줄을 밟아 봅시다 이제 합계가 2로 업데이트됩니다 여기 우리는 세 번째 반복의 시작 부분에 있습니다 이 반복 수에서이 줄을 한 단계 밟아 봅시다 그래서 우리는이 줄을 실행 한 후 총계가 현재 2이므로 3을 곱하면됩니다

한 번 더 6시에 F10을 얻을거야 이제 우리는이 루프에서 세 번의 반복 만합니다 그래서 f10을 한번 더 누르면 루프가 완료되고, 현재 총 6 개를 반환 할 준비가되었습니다 f10 우리는 9 호선에있다 끝났어

이 데모에서 한 가지 더 팁을 드리겠습니다 나는 프로그램의 첫번째 줄에 중단 점을 넣었다 당신은 항상 이것을 할 필요는 없습니다 여기 예를 들어 우리는 곱셈 함수에 버그가 있음을 알고 있습니다

8 행에 중단 점을 넣는 대신 2 행에 중단 점을 넣을 수 있습니다 그래서 우리가 f5로 디버그 모드에서 프로그램을 시작할 때 우리는 즉시 multiply 함수에서 시작합니다 그리고 우리가이 강의를 끝내기 전에 한 가지 더 많은 팁을 들으십시오 여러분이 함수로 들어가면 그 함수가 제대로 작동한다는 것을 알게됩니다 우리는 Shift + f11을 사용하여 그 기능을 즉시 사용할 수 있습니다

따라서 전체 함수를 한 줄씩 실행하지 않아도됩니다 shift 및 f11 키를 눌러 해당 기능을 종료 할 수 있습니다 코드를 빨리 작성하기위한 몇 가지 유용한 바로 가기를 살펴 보도록하겠습니다 Windows 사용자를위한 바로 가기를 보여 드리겠습니다 그리고 다음 강연에서 Mac 용 바로 가기를 살펴 보겠습니다

Mac 사용자가이 강좌를 건너 뛰어도 좋습니다 여기서 우리는 9 번 줄에 있고 커서는 줄의 시작 부분에 있습니다 커서를 줄 끝으로 이동하려고한다고 가정 해 봅시다 오른쪽 화살표를 눌러 끝까지 이동하는 대신 우리는 간단히 종료 키를 누를 수 있으며 여기서 커서 또는 간단히 커서를 줄의 처음으로 이동하려면 HOME 키를 누릅니다 너 거기 간다

마찬가지로 커서를 파일의 시작 부분으로 이동하려면 ctrl + home을 누릅니다 여기 또는 ctrl + end / 2 파일의 끝으로 이동하십시오 이제 우리는이 줄을 여기에서 자르고 대신 다른 곳으로 복사하는 대신이 줄을 옮기고 싶다고합시다 Alt + 위 또는 아래 화살 또는 이 두 줄을 위아래로 움직이기를 원할 경우 간단히 선택하고 고도를 누른 다음 위 아래로 아주 쉽게 이제 한 줄 또는 여러 줄을 복제하기를 원할 경우 간단히 선택하십시오 Alt 키를 누른 다음 아래쪽 키를 누릅니다

우리는 원하는만큼 여러 번 복제 할 수 있습니다 너 거기 간다 여기 또 다른 유용한 바로 가기가 있습니다 이 라인을 변환하고 싶다면이 두 줄을 주석으로 바꾸기 만하면됩니다 동일한 바로 가기를 사용하여 슬래시

댓글을 삭제하면 쉽게 댓글을 전환 할 수 있습니다 마지막으로 변수의 이름이나 multiplied와 같은 함수를 입력하려면 모든 문자를 입력 할 필요가 없습니다 신속하게 입력 할 수있는 몇 가지 방법이 있습니다 우리는 단지 처음 몇 문자와 여기 intellisense를 입력 할 수 있습니다 당신은 당신이 ENTER를 누르면 그렇게 볼 수 있습니다

이것이 자동 완성이라고하는 것입니다 다른 방법이 있습니다 따라서 처음 몇 글자를 쓰는 대신 순서대로 문자를 골라 입력하면 mty를 입력 할 수 있습니다 또는 mpy를 입력하거나 왜 거기에, 여기 있습니다 이 단축키를 즐겁게 지켜 보시고 자 이제 Mac 키보드의 바로 가기를 살펴 보겠습니다

커서를 움직이려면 여기 9 번 줄에 있고 내 커서가 줄의 처음에 있습니다 끝까지 오른쪽 화살표를 사용하지 않고 끝까지 이동하십시오 기능 키를 누른 상태에서 오른쪽 버튼을 누르기 만하면 됩니 다 여기있어 또는 기능을 누르고 왼쪽으로 이동하여 줄의 시작 부분으로 이동할 수 있습니다

마찬가지로, 기능을 누른 다음 위로 파일 또는 함수의 맨 위로 이동하고 아래로 이동하여 파일의 끝으로 이동합니다 꽤 유용합니다 이 줄을 옮기고 싶다고합시다 여기에서 자르고 대신 다른 곳으로 복사하는 대신 고도 또는 옵션을 누른 상태에서 위쪽 화살표 또는 아래쪽 화살표를 눌러 간단히 위로 이동할 수 있습니다 매우 쉽거나,이 두 줄을 선택할 수 있습니다

alt 또는 option 키를 누르고 있습니다 위나 아래로 움직여 라 또 다른 유용한 바로 가기가 있습니다 우리는 명령과 슬래시를 눌러이 두 줄을 주석으로 변환 할 수 있습니다 그런 다음 동일한 바로 가기를 사용하여 주석을 제거 할 수 있습니다

그래서 우리는 그것을 토글 할 수 있습니다 마침내 변수 이름이나 곱하기와 같은 함수의 이름을 입력하려면 모든 문자를 입력 할 필요가 없습니다 곱하기 매우 느립니다 intellisense에서 mult와 같은 처음 몇 글자를 입력 할 수 있습니다 선택한 것을 볼 수 있으므로 Enter 키를 누르거나 임의의 문자를 순차적으로 선택하여 mty와 같이 입력 할 수 있습니다

여기 있습니다 또는 우리는 py 또는 남 TP 그래서 당신이 원하는 어떤 식 으로든 그것을 줄일 수 있습니다 이 단축키를 즐겁게 사용하고 시청 해 주셔서 감사합니다 프로그래밍 인터뷰에서 자주 발생하는 질문 중 하나는 fizzbuzz입니다 알고리즘을 사용하면 수년간의 경험을 통해 많은 개발자가 있다는 사실에 놀라실 것입니다

그러나 그들은이 간단한 프로그래밍 문제를 해결하는 방법을 모른다 그래서 내가 이것을 내 수업에 포함하기로 결정한거야 따라서이 알고리즘이 어떻게 작동하는지 살펴보고이 연습에 10 ~ 15 분을 직접 사용할 수 있습니다 그래서 여기에 우리는 함수가 있습니다 Fizz 버즈는 입력을 받아들이고 입력에 따라 반환합니다

우리가 제공 한 입력이 3으로 나눌 수 있다면 다른 결과는 규칙입니다 문자열 fizz를 반환합니다 우리가 fizz를 얻는이 프로그램을 실행하도록 보여 드리죠 입력 값이 5로 나눌 수 있다면, 버즈가 돌아옵니다 여기에 화제가있다

이제 입력이 3과 5로 나눌 수 있다면 세 번째 규칙이 반환됩니다 피즈 버즈, 여기서 15 번합시다 우리는 fizzbuzz를 얻을 것이다 다른 숫자의 경우 동일한 입력을 리턴합니다 그래서 내가 통과하면 7은 3이나 5로 나눌 수 없습니다

7 자체이므로이 운동에 10 분에서 15 분을 소비하십시오 내 해결책을 다음에 보게 될거야 좋아,이 문제를 풀어서 입력을 얻고 입력이 3으로 나눌 수 있는지 확인해 보자 그런 다음 결과와 같은 변수를 단계로 설정할 수 있습니다 이제 일시적으로 보자

정말 멋진 기술을 보여주기 위해이 규칙을 간소화하십시오 입력이 3으로 나눌 수 있다면 상상해 봅시다 우리는 fizz를 반환 할 것입니다 그렇지 않으면 우리는 버스를 돌려 줄거야 LS : 결과를 잡음으로 설정하고 마지막으로이 해결 된 변수를 반환합니다

이것은 이러한 규칙을 구현하는 한 가지 방법이지만 더 좋고 깨끗한 방법이 최선의 방법은 아닙니다 이 결과 변수를 정의하고 반환하는 대신 단순히 리턴 할 수있는 방법을 보여 드리겠습니다 이 문자열은 여기 여기도 그럼 우리는 6 호선을 없앨 수 있습니다 그래서 우리는 하나의 불필요한 코드 줄을 제거합니다 이것은 하나의 기술이었습니다

여러분에게 보여 드리고 싶은 다른 기술은 if 문과 당신의 if flock에서 당신은 가치를 돌려주고 있습니다 당신은 정말로 else 절이 필요하지 않습니다 이 조건이 false로 평가되면 컨트롤이 else 절로 이동하기 때문에 여기에서 수행하는 작업은 모두 다른 값을 반환합니다 이것이 유일한 가능한 결과입니다 그래서 여기에서이 else 절을 ​​제거 할 수 있습니다

간단히 돌아 오는 버스 그래서이 기술로 불필요한 부분을 제거합니다 들여 쓰기도 나는 코드를 더 선형 적으로 만들었다 괜찮아 이제 우리의 원래 알고리즘으로 돌아가 보겠습니다

입력 값이 3으로 나눌 수 있다면 fizz를 반환 할 것입니다 이제 입력이 5로 나눌 수 있는지 확인합니다 우리는 버즈를 반환합니다 그래서 여기에서는 Elif가 실제로 필요하지 않습니다 왜냐하면이 조건이 거짓이면 우리는 어쨌든 여기에 올 것입니다

입력은 5로 나눌 수 있습니다 우리는 버즈를 반환합니다 다시 한번 이 조건이 false이면 컨트롤이 여기로 이동합니다 입력이 3으로 나눌 수 있고 그것은 또한 5로 나눌 수 있으며 우리는 돌아올 것입니다 Fizz 버즈 이제이 표현은 조금 길어졌습니다

첫 번째와 두 번째 부분에 괄호를 두어 읽기 쉽도록하는 것이 좋습니다 이렇게 그것은 더 깨끗합니다 이제이 조건이 false이면 컨트롤이 여기로 이동합니다 즉, 숫자가 3 ~ 5로 나눌 수 없다는 의미이므로 입력을 다시 한번, 우리가 단순히 입력을 반환한다면 else 나 another가 필요하지 않습니다 이제이 프로그램을 실행하고 제대로 작동하는지 확인해 봅시다

그래서 우리는 3 개의 함수를 호출하고 우리는 fizz를 아름답게합니다 5 개로 부르 자고 우리는 버즈를 완벽하게 만듭니다 15로 전화하면 우리는 fizz 버스를 타야합니다 그러나, 우리는 여기서 무슨 일이 일어나고 있니? 이것이 일어난 이유는 우리가 여기에 15를 통과 할 때 두 줄이 실행되기 때문입니다

분명히 15는 3으로 나눌 수 있습니다 그래서 우리는이 문제를 해결하기 위해 즉시 fizz를 반환합니다 우리는이 조건을 움직일 필요가 있습니다 그래서 alt + up을 사용하여이 두 라인을 선택했습니다 나는 이 선들을 아름답게 움직여 라

괜찮아 이제 한 번 더 프로그램을 실행 해 봅시다 그래서 우리는 fizzbuzz를 얻는다 다시 한 번 테스트 해 보겠습니다 세 이제 운임을받습니다

함수를 작성하여 함수가 작동한다고 가정하지 않을 때 5로 테스트 해 봅시다 모든 다른 종류의 값으로 테스트해야합니다 테스트 해보지 만, 버즈를 아름답게 만듭니다 패스하면 어떨까요? 7은 3 또는 5로 나눌 수 없다 우리는 7 개의 아름다운 것을 얻는다

그래서 여기 보이는 것은 fizzbuzz 알고리즘의 가장 단순하고 가장 우아한 구현이며, 다음 강의에서이 섹션의 끝 부분으로 넘어갑니다 우리는 파이썬에서 데이터 구조를 탐색 할 것입니다 튜플 세트와 사전 목록을 배우겠습니다 이 섹션을 즐겁게 지켜 보시고 당신 너는 그것을 멀리 만들었고, 파이썬을 배우는 것에 대해 열렬히 생각한다고 생각하게 만든다 그래서 저는 여러분이 우리의 완전한 파이썬 과정에 등록하는 것을 강력히 권합니다

여기서 우리는이 충돌 과정을 넘어서게됩니다 데이터 분석 및 시각화와 같은 실제 시나리오에서 Python을 사용하는 방법을 배웁니다 반복적 인 자동화 파일 및 폴더 작업 관련 지루한 작업 스프레드 시트 PDF 데이터 압축 이메일을 보내면 웹 크롤링이 api와 훨씬 더 많이 소모됩니다 이 코스는 30 일간 진행됩니다 관심이 있으시면 질문에 돈 환불 및 완료 증명서를 부탁드립니다

이 비디오 아래 링크를 클릭하여 코스에 액세스하십시오 다시 한번, 시청 해 주셔서 감사합니다 이 비디오를 좋아하고 공유하여 저를 지원하고 매주 새로운 무료 비디오를 얻으려면 내 채널을 구독하십시오 고마워요, 좋은 하루 되세요

파이썬 네이버 웹 스크래핑 (Naver Blog Web Scraping with Python) (with 한글자막)

안녕하세요 이수안 컴퓨터 연구소의 이수안입니다 오늘은 파이썬으로 네이버 블로그 다 긁어오는 그런 제목으로 실습을 하도록 하겠습니다 목차는 웹 스크래핑이 뭔지 그리고 파이썬 관련된 라이브러리를 설치해야 하고요 그리고 네이버를 긁어와야 하니까 네이버 개발자를 설정해야 합니다 그리고 네이버에서 제공하는 API예제를 돌려보고 실제 네이버 블로그를 다 긁어올 수 있는 그런 스크래퍼를 한 번 만들어 볼게요 자 그럼 웹 스크래핑이 뭐냐 스크래핑은 HTTP를 통해 웹 사이트의 내용을 긁어다 원하는 형태로 가공하는 것을 웹 스크래핑이라 합니다 그래서 웹 사이트의 데이터를 수집하는 모든 작업을 의미하는 데 여러분 아실거에요, 스크래퍼가 뭐냐면, 이런 도구들 긁어내는 이런 도구들이 있는데 크게로는 땅을 긁는 이런 기게도 스크래퍼라 할 수 있습니다 그런데 스크래퍼랑 자주 쓰는 어떤 워드가 있는데 크롤링, 파싱 이런게 있습니다 크롤러라는 게 있거든요 '웹 크롤러' 그 단어에서 유래된 게 크롤링이에요 그래서 www, 웹을 탐색해서 하는 그런 프로그램이 크롤러인데 거기에서 유래된 것이 크롤링이고 그래서 웹사이트에 있는 문서들, 그림 이런 링크들을 좇아서 막 긁어오는 이런 것들을 크롤러라고 합니다 그래서 크롤링이 그러한 작업을 하는 것으로 거기서 유래된 단어이고 사실상 크롤링의 핵심은 데이터를 쉽게 찾을 수 있도록 인덱싱을 구축한다는 것입니다 이게 제일 중요한 차이점입니다 그리고 '파싱'이 있는데 어떤 페이지에 내가 원하는 데이터를 특정 패턴으로 해서 추출 그리고 어떤 정보를 가공하는 것을 파싱이라고 합니다 문자를 토큰단위로 분해하거나, 그걸 통해서 문자를 파스 트리로 만들거나 그런 것들을 파싱이라고 하는데 그래서 스크래핑이라는 차이점이 두 개 다 있다 라는 것을 알고 계시면 좋을 거 같아요 그래서 파이썬 및 라이브러리 설치 파이썬 사이트에 들어가셔서 설치를 하시면 되고요 자기 컴퓨터 버전에 맞게 설치하시면 됩니다 그리고 라이브러리 설치가 있는데 라이브러리도 pip명령을 통해서 총 세 가지가 필요합니다 beautifulsoup4, requests, lxml 이 세 가지를 이걸 보고 하시든 설치를 하시면 될 것 같고요 중요한 건 네이버 개발자 설정인데 처음하시는 분들을 위해서 제가 보여드릴게요 보면 오픈 API이용을 신청하셔야 돼요 그래서 '네이버 개발자'라고 여러분들이 검색을 하셔도 되고 이 주소로 가셔도 되는데 우리가 지금 검색에 대한 이용을 신청해야 되기 때문에 '오픈 API 이용신청'을 누르시고 그다음에 각 애플리케이션 이름 정하고 사용 API는 검색으로 하시고 그 다음에 Android로 일단 설정하신 다음에 Android 웹패키지 URL에 서식을 맞춰서 쓰시면 되고요 그걸 등록하기 하면 이런 애플리케이션 정보를 줍니다 이 Client ID랑 Secret을 꼭 받아야 합니다 우리가 이걸 이용해서 만들어야 하기 때문에요 자 그래서, 설정을 잘 하신 다음에 이거를 신청하시면 될 거 같아요 이게 먼저 잘 진행이 되어야 합니다 한 번 보여드릴게요, 네이버 개발자 저는 미리 되어 있긴 한데 네이버 개발자 센터에 들어가셔서요 여기 보면 메뉴에 '검색 API'있죠 검색에서 '오픈 API이용 신청' 누르면 됩니다 여러분들 네이버 아이디로 로그인 하시고 그래서 이 각각을 눌러주신 다음에 comexample

naverblog 하신 다음에 등록 누르시면 됩니다 그러면 이렇게 두 가지가 뜨죠? 이 Client ID와 Secret이 필요하다는 겁니다 이걸 가지고 우리도 한 번 진행을 해 볼게요 자 그리고 네이버 API 예제가 있는데 아까 제가 빠르게 지나가 버렸는데 네이버 API- 검색 보면은 Java버전, PHP버젼, Node js, Python, C# 이렇게 있는데 Python 이 예제를 긁어 옵니다 이걸 가져오고요 그럼 이제 파이썬을 띄워볼게요 파이썬 IDLE를 띄우시고요 여기서 새로운 파일 하나 만들게요 그래서 아까 긁어온 거 붙혀넣기 하시고 그 다음에 우리가 받아왔던 Client ID 넣으시고 그 다음에 Client Secret 넣으시고 검색할 단어를 넣으시면 됩니다 뭘 검색하냐면, 대통령 이름으로 검색해 볼게요 저장하고 '네이버 API'로 저장하겠습니다 F5 자 됐습니다, 눌러보면 지금 현재 네이버블로그에서 '문재인 '워드가 들어간 전체 블로그를 이렇게 보여주고 있습니다 어렵지 않죠, 네이버 API돌리니까 바로 되죠 자 그래서 이렇게 수행을 했고 돌리면 되는데 문제는 네이버 블로그의 어떤 형식에 맞춰서 우리가 긁어 왔는 데 이게 다가 아니라는 거죠 왜냐면 네이버에서 블로그를 제공할 때 이걸 제이슨으로 데이터를 주고 하는데 그 데이터가 사실은 어떤 요약된 그러니까 전체 블로그의 내용을 다 주는 것이 아니고 일부만 주고 있습니다 그런데 사실은 블로그에 대한 내용을 다 보고싶다 그럴 때에는 조금 개발이 필요해요 그래서 그거를 한 번 우리가 같이 작업해 보도록 할게요 그래서 새로운 파일을 띄워 볼게요 이거를 일단 저장부터 해 볼까요 저장은 NaverBlogScraper할까요 그리고 몇 가지 re, json, 그 다음에 수학함수 쓰기 위해서 math datetime requests urllibrequest urlliberror 그 다음에 parse 아까 우리 parse배웠죠? 그 다음에 bs4, beautifulsoup4 이렇게 하면 되고요 그 다음에 네이버 Client ID랑 뭐가 있었냐면 네이버 Client Secret이 있었어요 우리가 받아왔습니다 벌써 받아 온 거를 여기다 추가해 주시면 돼요 아까 제가 여기에다가 놓은게 있기 때문에 이걸 가져 올게요 여러분들은 여러분들 받은 것을 쓰시면 됩니다 제가 받은 걸 그대로 따라하시면 조만간 안될 거예요 저는 이거를 이제 정지시킬 거니까요 자 이제 메인을 좀 켜볼까요 if __name__=='__main__' 그리고 숫자를 저장할 것 실제 질의할 query 그 다음 display는 우리가 검색 할 때 몇 개 단위로 출력을 할 것인지에 대한 건수를 display할 수 있고요 start는 1, 1부터 우리가 하겠다 그 다음 정렬 방식은 similarity에 따라서 유사도순으로 할 거냐 그리고 날짜 순으로 할 거냐 두 가지의 옵션이 있는데 우리는 날짜순으로 할게요 최신 데이터를 긁어 오기 위해서 그 다음 파일 저장을 해야 하는데 fs 파일 저장을 위해서 정의를 하고 파일 저장은 txt파일로 하겠다 그런데 큐어리로 준 검색어에 따라서 검색어 이름을 가지는 텍스트 파일로 만들어 보겠습니다 타입은 당연히 utf-8로 하고요 그 다음에 blog count, 전체 갯수를 가져오기 위해서 전체 갯수를 가져와야 해요 그래서 blog count 왜냐하면 천 개 이상이 될 수도 있잖아요 천 개 이상이 되면, 천 개까지 밖에 못 긁어 옵니다 제한이 있어요 그래서 제한을 가진 상태로 천 개만 가져오기 위해서 이렇게 하는 거에요 이거 좀 이따가 할게요 fscolse하고 먼저 이 함수를 구현하고 뒤에 나머지를 칠게요 마찬가지로 get_blog_count를 만듭니다 이 함수에서는 질의, query랑 display를 받아올게요 그 다음에 인코딩을 좀 해줘야 해요 encode query 해가지고 아까 우리가 import했던 urllib에서 parsequote query를 이걸로 바꿔서 인코드된 형태로 바꿔줍니다 그 다음 openapi openapi 이렇게 바꿔주고요 + encode_query로 바꿔주고요 ullib

requestRequest(search_url) 이렇게 하면 우리가 만들었던 url형태로 요청하는 거에요 그런데 그냥 하면 안되요 그냥 하면 거부 당할 겁니다 이 api로부터 왜냐하면 네이버에서 받아왔던 ID와 Secret을 주지 않았기 때문에 거부 당하는데 이것을 주면 인증을 받았기 때문에 인증된 사람으로서 권한이 있기 때문에 우리를 허용해 주겠죠 responses = urllibrequst urlopen 그 다음에 response code를 좀 받아올게요 getcode 왜냐하면 코드를 여러가지 주는 데 과연 접속이 잘 됐는 지 코드를 받아서 보는 데 웹에서 200이 정상 접속이죠 정상적으로 접속했을 때 200번을 주죠 read, 이게 실제 읽어 들이는 거에요 body에서 dictionary 형태로 저장을 할게요 json을 가져올 텐데, 네이버에 이 질의의 결과로 json을 넘겨 주는 데 그 json을 dictionary로 다 저장합니다 utf-8, 모두 utf-8이에요 그리고 뭐가 들어 오는지 프린트로 모든 결과를 출력하는 것으로 한 번 해 볼게요 왜냐하면 다른 용도로 쓰실 분 들도 참고해서 사용하실 수 있도록 lastBuildDate이 있습니다 이거는 실제 json으로 넘어오는 것 중에 실제 최종 날짜 최종 만들어진 날짜를 반응해준 거고요 그 다음 total은 전체 갯수 Start display 이렇게 넣어 놓은 걸 한 번 출력해 보고 그리고 만약에 total이 0이다 검색된 결과가 없다 그러면 blog_count를 0으로 맞춰 줄게요 왜냐하면 나중에 반환을 해줘야 하니까 왜나면 이 함수 이름이 get blog count잖아요 전체 카운트의 갯수를 넘겨 주어야 되고요 total에 cell 함수를 통해서 전체 total이 만약에 display, 10개죠 10개로 나눠서 나온 결과 값을 여기다 넘겨줍니다 그래서 blog_total이 만약에 1000이상이다 그러면 blog_count는 1000으로 맞춰줍니다 그런데 그게 아니다 그러면 blog_count는 blog_total로 넘겨줍니다 이게 뭐냐면 천 개가 넘을 경우에는 제한이 있다고 그랬죠 그래서 최대 천개로만 이렇게 조건문을 넣어 줬고요 그리고 blog 전체 total과 count를 출력 해 볼게요 왜냐하면 이게 몇 개까지 받아오는 지를 보고 그 다음에 뭐 해야 되냐 return을 쳐줍니다 이렇게 return을 해주고요 이게 잘 되는지 한 번 확인 해 볼게요 중간에 오타가 났을 수도 있고 자 이렇게 에러가 나죠? 오타가 많네요 됐습니다 실했했고요 보니까 지금 검색된 '문재인' query로 검색해 보니까 굉장히 많은 숫자가 나왔고 이거를 다 긁어 올 순 없고 천 개만 blog_count를 조절해서 천개만 긁어오는 걸로 그러면 이제 sort를 "date"을 줬기 때문에 최신 글로만 천 개를 긁어 오겠죠 그리고 이제 만들어야 될 건 이제 이건 기존의 네이버 api랑 비슷한데 뭐가 필요하냐면 전체 블로그 포스팅 내용을 긁어오고 싶다 이럴 때는 우리가 코드를 추가해 줘야해요 글로벌로 변수 넘버랑 파일 시스템을 가져올게요 이거랑, 이거 좀 가져올게요 그리고 아까 그 코드 카드 좀 가져 올게요 이렇게 그냥 가져 오는 데 물론 이 뒷 부분을 좀 고쳐야 됩니다 왜냐, 이제는 그냥 질의만 날리는 것이 아니라 여기에 옵션을 좀 주어야 해요 우리가 질의 던질 때 display를 왜냐하면 연달아서 계속 할 거기 때문에 display를 옵션으로 좀 주고 start로 추가적으로 조건을 넣어주고 그 다음에 소스도 넣어줍니다 저장을 하고요 만약에 response코드가 200이면 정상이죠 response_body response-body_dict = jason decode 아까 우리가 했던 utf-8로 가져오고 그리고 정상인데 거기에 item_index로 json이 해당하는 블로그가 여러 개 나오면 그걸 다 하나의 큰 덩치로 주는 데 그거를 하나 씩 나눠서 접근을 하기 위해서 이렇게 코드를 쳐 줍니다 그래서 items라는 코드로 들어가 있고요 items 닫아주고 됐습니다 그 다음에 try 그 다음에 이렇게 tag가 들어올 수 있어요 그래서 그 태그부분을 지워서 사용해야 하기 때문에 우리가 regural expression으로 제거해주는 부분을 넣어주고요 그래서 regular expression에서 remove_html_tag 태그를 없애주는 정규표현식을 사용해서 만약에 태그와 관련된 부분이 들어왔을 땐 없애버려라 그래서 response_body_dict dict에다가 이제 여기에 item 그 다음에 item_index 그 다음에 title title은 블로그의 실제 주소를 의미합니다 그 다음에 link가 있습니다 그냥 가져올게요 링크는 주소가 오는데 그 주소가 쓸데없는 코드가 들어 갈 수 있어요 amp 저렇게 그래서 amp 이 부분을 없애주는 걸로 바꾸고 그 다음에 description description도 마찬가지로 태그가 들어올 수 있어요 그래서 description, item에 title말고 description으로 바꿔주고요 그리고 뭐가 남았냐면 blogger name blogger name은 blogger link 이거는 실제 포스트의 주소가 아니라 블로거의 블로그 주소가 있죠? 그 블로거 주소를 가져오는 코드입니다 그 다음은 Post Date인데 이거는 그냥 가져올게요 이렇게 변환하는 데 그냥 가져올게요 Post Date, 주는 대로 받아 오겠습니다 그러면 json에서 오는 결과들이 하나씩 items에 다 들어가 있는데 그 items에 있는 것들을 다 끄집어서 가져올게요 그 다음에 print, print를 하는데 이걸 좀 구분을 하기 위해서 구분자로 아무거나 구분을 해 줍니다 이건 블로그마다 파일을 쓸텐데 그걸 구분해서 보여주기 위해서 이렇게 하고요 그리고 이 #은 넘버의 의미로 제가 몇 번째 블로거인지 표시할 용도로 사용합니다 그 다음에 title link Description 그리고 blogger name blogger의 Link Date 이거는 실제 블로거의 포스트가 기재된 날짜가 나오겠죠 그 다음에 post code에서 이게 뭐하는 거냐면 저 정보들은 네이버 오픈api에서 제공해 주는 정보예요 우리는 그게 아니라 블로그에 실제 포스트된 내용이 필요하잖아요 그래서 그 내용을 긁어 오기 위해서 이제서야 BeutifulSoup를 사용합니다 그래서 BeutifulSoup을 통해서 다시 한 번 내용에 접근해가지고 가져옵니다 그래서 BeutifulSoup으로 선언을 해주고요 이 블로그에 사실은 특성이 있어요 네이버 블로그는요 마우스로 긁어오지 못하게 하거나 이렇게 오른 쪽 버튼을 클릭을 막기 위해서 iframe으로 다시 만들어 놓은 게 있는데 그래서 iframe의 frame이라는 html부분을 들어가야해요 들어가면 실제 그 블로거의 포스트 url을 뽑을 수 있어요 그래서 그거를 가져오는 데 그냥 가져오면 안되고 그 코드 url에서 "blog

navercom" + 그리고 메인프레임에서 get해서 소스부분을 가져옵니다 그래서 아이프레임에서 소스 부분에 이 코드를 가져 온 다음에 그걸로 접속을 해서 우리가 실제적인 블로그 포스트에대한 내용을 긁어오기 때문에 여기에 다시 한 번 blog_post_url이라는 주소로 접근을 합니다 그리고 그 텍스트를 가져오고요 text 그리고 blog_post 이거는 다시 한 번 또 접근해야 돼요 왜냐 접근했는데 iframe으로 매킹되어 있잖아요 그래서 iframe이 실제 주소를 가져오면 진짜 블로그 포스트에 접근 할 수 있거든요 그래서 거기에 접근하기 위해서 이렇게 우리가 사용을 합니다 그래서 이렇게 가져오고 BeautifulSoup으로 한 번 더 접근을 합니다 그리고 이게 진짜 blog 포스트에 대한 그 내용인데 여기에 실제 내용은 블로그 전체에 여러가지 메뉴도 있고 이러잖아요 그런데 postViewArea라고 있어요 그 postViewArea가 실제 블로그 내용이 여기에 들어가 있습니다 그래서 postViewArea로 선택을 해줍니다 이 태그로 선택을 해주고 그리고 이걸 이제 가져와야죠 이게 블로그 진짜 포스팅된 컨텐트에요 blog_post_content_text 그리고 스트링으로 캐스팅 해줘서그 컨텐츠를, 실제 내용을 가져옵니다 이제 전체, ufl discription만 주는 것이 아니라 전체 full 컨텐츠가 되겠죠 그런데 replace를 좀 해줄게요 replace로 뭘 해주냐 개인 문자 두 개가 있으면 그거를 하나로 바꿔 주는이런 걸로 좀 넣어줄게요 그 다음에 확인해서 프린트를 해도 되는 데 저희는 이제 파일을 좀 쓸게요 왜냐하면 전체 내용을 프린트 하려면 좀 많잖아요 블로그 내용이 긴 것도 많으니까요 그래서 이거는 파일에 써서 나중에 데이터 분석이나 활용할 때 쓰기 위해서 파일에 쓰도록 할게요 그런데 파일에서도 구분자가 필요하죠 구분자로 이렇게 포스트 마다 띄어서 구분할 용도로 가지고 있고요 그 다음에 except 만약에 못할 경우에는 그냥 넘어가자 그런데 거의 다 할거에요 그럼 이렇게 나오겠죠 진짜 잘 되는지 볼까요 아마 오타가 있겠죠 아 이거 안했구나 아까 우리가 메인에, 나중에 빼놨는데 그 부분을 해 볼게요 for start_index in range star, 1부터죠 우리가 받아온 카운트 갯수만큼 반복을 돌고 그만큼, get_blog_post, 접속해서 가져와야 겠죠 실제 블로그 내용으로 자! F5 아 이게 빠졌네요 F5 안되네요 천까지 긁어왔고 1부터 1000+1까지 돌아야 하는 데 안되고 있죠? 어디서 에러가 났어요 접속이 잘 됐는지는 출력을 한 번 해 볼까요? 자 접속이 잘 되고 있네요 이 부분은 통과해서 각각 가져오고 내용을 아마 이 부분이 좀 잘못된거 같아요 이 부분을 한 번 좀 볼게요 자 items 다 맞고 description이 틀렸네요 description 틀렸고 나머진 맞겠죠? 자 이렇게 블로그 실제 내용을 파일에 저장하고 있고 이렇게 계속 긁어 옵니다 총 갯수가 천 개이니까 천 개를 이렇게 긁어오는 스크래퍼를 우리가 만들었습니다 그래서 그 내용이 실제 파일에 다 저장을 하고 있겠죠? 저 파일에 쓰는 부분 그래서 이렇게 스크래퍼를 완성했습니다 자 이렇게 긁어 오는 거죠 그래서 이게 실제 네이버에 진짜 포스팅된 내용들을 다 긁어 오는 겁니다 그런데 여러분, 이 포스팅은 블로그를 운영하는 사람들이 올린 거 잖아요 그래서 수집을 하고 다시 이 내용을 어딘가에 공개하면 안됩니다 공개하는 것은 불법이에요 그러니까 이렇게 수집해서 분석용도로만 사용하시고 다시 공개는 하시면 안됩니다 이렇게 해서 네이버 블로그를 다 긁어오는 그러한 파이썬 코드를 만들어 봤고요 다음에 더 재미있는 강의로 찾아 뵙도록 하겠습니다 감사합니다

Teaser – CS50's Web Programming with Python and JavaScript

BRIAN YU : 안녕하세요 저는 브라이언 유입니다

저는 웹 프로그래밍 강사입니다 파이썬과 자바 스크립트 이 과정은 하버드 CS50이 출발하는 곳을 선택하고, 웹 애플리케이션의 설계와 구현에보다 깊이 관여 라이브러리에서 프레임 워크를 사용하여 Python, JavaScript 및 SQL 사용 (Flask), 장고 (Django), 부트 ​​스트랩 (Bootstrap) 전반적으로 기회가있을 것입니다 실습 프로젝트를 수행하고, 사용 및 쓰기 학습 API, 사용자 정의 및 대화 형 사용자 인터페이스 설계 및 클라우드 활용 Github 및 Heroku와 같은 기술 학기가 끝나면 지식과 경험으로 나옵니다 귀하를 활성화하고 권한을 부여하는 원칙, 언어 및 도구 인터넷에서 웹 응용 프로그램을 디자인하고 배포하는 방법 Python과 Javascript로 웹 프로그래밍에 오신 것을 환영합니다

[음악 재생]

Learn Python – Full Course for Beginners

이 과정에서 저는 모든 것을 가르쳐 줄 것입니다 파이썬으로 프로그래밍을 시작하는 법을 알아야합니다

Python : 가장 유명한 프로그래밍 언어 중 하나입니다 일자리를 찾을 때 가장 많이 요구되는 언어 중 하나입니다 시도한 경우 직업 찾기 또는 많은 일을하십시오 그래서 P 파이썬이 당신을위한 것입니다 많은 프로그래머가 PATHON의 언어로 프로그램을 전송합니다

강력하고 사용하기 쉬운 언어입니다 많은 프로그래밍 언어가 초보자에게 친숙하지 않습니다 그것은 많은 단어를 가지고있다 그리고 당신이 그리워하는 많은 것들 pathon은 정확히 정반대입니다 기본적으로 당신이하고 싶은 일을 타이핑하면 Bathon이 간단하게 할 것입니다

Build a Neural Net in 4 Minutes

전세계 여러분, Sirajology에 오신 것을 환영합니다 오늘, 우리는 뉴럴 네트워크(신경회로망)을 4분안에 만들거야 시작해 볼까요! 머신러닝 모델은 종류가 아주 다양합니다

그 중 뉴럴 네트워크가 최근 아주 유명하게 된 이유는, 빨라진 컴퓨터와 더 많아진 데이터 두가지 때문입니다 뉴럴 네트워크는 이미지 인식에서 랩 창작과 같은 거의 모든 영역에서 놀라운 결과물을 만들고 있습니다 머신러닝을 하려면 3단계만 기억하시면 됩니다 모델 만들기 훈련하기 테스트하기 우리가 모델을 만들고 나면, 우리의 입력과 출력에 맞춰 더 뛰어나고, 더 인지능력이 있도록 그 모델을 훈련시킬 수 있습니다 자, 모델을 만들어 볼까요 파이썬에서 세 개의 레이어 뉴럴 네트워크를 만들어 보겠습니다

파이썬에서 과학적 계산을 할 수 있는 NumPy 모듈을 import 해보도록 하죠 그런 다음, 우리는 0과 1사이의 어떤값이든 매핑하는 함수를 만들겁니다 이 함수는 시그모이드(sigmoid)라고 불립니다 이 함수는 데이타가 뉴런 네트워크를 지날때마다 실행됩니다 이 함수는 숫자(입력)으로 부터 확률을 생성할때 유용합니다

방금 시그모이드(sigmoid) 함수를 만들었습니다 입력 데이터들을 매트릭스(행렬) 형태로 초기화 합시다 각 행은 다른 훈련 샘플입니다 각 열은 다른 뉴런을 나타냅니다 그래서 우리는 4개의 훈련 샘플과 3개의 입력 뉴런을 그리고 우리는 우리의 출력 데이터 세트 만듭니다

4개의 샘플에 각 한 개의 출력 뉴런(신경)을 가지게 됩니다 랜덤하게 숫자를 만들 예정이기 때문에, 신경회로망에 구성할 수 있도록 값을 만들었습니다 이것은 그저 임의의 숫자들을 의미하고, 동일한 시작점을 생성, 전달하여 프로그램을 실행할 때마다, 동일한 순서로 임의로 생성된 숫자를 얻을 수 있을 것이다 이는 디버깅에 유용합니다 다음으로, 시냅스 행렬을 만들겠습니다

시냅스는 뉴런과 뉴런이 만나게 되는 연결 부위 입니다 (정확히는 하나의 뉴런과 여러개의 다음 뉴런과 만나는 부위) 시냅스는 뉴런과 뉴런이 만나게 되는 연결 부위 입니다 (정확히는 하나의 뉴런과 여러개의 다음 뉴런과 만나는 부위) 우리는 우리의 신경회로에서 3개의 layer를 가지게 되므로, 2개의 시냅스 행렬이 필요합니다 각 시냅스는 임의의 가중치가 할당됩니다

그 다음에, 훈련 코드를 시작하겠습니다 주어진 데이터로 신경회로를 최적화 하기 위해 for-loop로 훈련 데이트를 반복할 수 있도록 코드 만들겠습니다 첫번째 레이어를 만들어 보겠습니다 그것은 단지 우리의 입력 데이터입니다 예측 단계를 만들어 보겠습니다

각 layer와 시냅스간에 행렬 곱셈을 수행합니다 곱해진 행렬값을 시그모이드(sigmoid) 함수를 수행해서 다음 layer 값을 구합니다 곱해진 행렬값을 시그모이드(sigmoid) 함수를 수행해서 다음 layer 값을 구합니다 다음 layer는 출력 데이터의 예측합니다 그 다음 더 정교해진 예측 layer를 구하기 위해 같은 방법을 적용합니다 그 다음 더 정교해진 예측 layer를 구하기 위해 같은 방법을 적용합니다

여기까지, 두번째 layer까지 출력 값을 예측했습니다 예상되는 출력 data와 예상한 값의 차이를 비교해보겠습니다 평균 에러가 매 계산마다 줄어들수 있도록 값을 출력해보겠습니다 다음으로, 우리는 우리의 에러률에 우리의 시그모이드(sigmoid) 기능의 결과를 곱할 것입니다 이 함수는 두개의 layer로 부터 출력 예측값의 미분을 얻는 데 사용됩니다

이 함수는 두개의 layer로 부터 출력 예측값의 미분을 얻는 데 사용됩니다 이 값은 시냅스 값을 매번(every iteration) 업데이트 할때마다, 예측값의 에러율을 줄일수 잇는 델타 값을 제공합니다 그 다음으로 우리는 첫번째 layer가 얼마나 두번째 layer의 에러와 연관이 있는지 보겠습니다 그 다음으로 우리는 첫번째 layer가 얼마나 두번째 layer의 에러와 연관이 있는지 보겠습니다 이 방법을 역전파법(back propagation) 이라고 합니다 우리는 두번째 layer의 델타값(l2_delta)을 시냅스 전치행렬(syn1

T) 값과 곱하면서 이 에러를 구할 수 있습니다 우리는 두번째 layer의 델타값(l2_delta)을 시냅스 전치행렬(syn1T) 값과 곱하면서 이 에러를 구할 수 있습니다 그리고 나서 첫번째 layer의 델타값을 구하기 위해 시그모이드 함수값과 에러값(l1_error)을 곱합니다 그리고 나서 첫번째 layer의 델타값을 구하기 위해 시그모이드 함수값과 에러값(l1_error)을 곱합니다 이 함수는 첫번째 layer의 미분을 구하기 위해 사용합니다

우리는 각 레이어의 deltas를 가지고, 시냅스의 가중치를 변경해서 에러가 매 반복시 마다 줄어들 수 있도록 하겠습니다 이 방법은 그래디언트 디센트(gradient descent) 방법이라고 합니다 그래디언트 디센트를 적용하기 위해, 우리는 단지 각 layer와 delta를 곱합니다 마지막으로 예측된출력값을 print 하도록 하겠습니다 다 되었네요 터미널에서 실행해서 어떤 값이 나오는지 보겠습니다 멋지네요, 우리는 에러률이 반복해가면서(iteration) 줄어드는 것을 볼 수 있네요 예측된 출력값은 실제 출력값과 아주 아주 근접합니다 뉴럴 네트워크를 향상시키기 위해 우리가 할 수 있는게 정말 많습니다 자세한 내용은 아래의 링크 확인을 하시길 바랍니다

더 많은 기술 동영상을 보고 싶다면, 구독하십시오 시청 주셔서 감사합니다

9. Securing Web Applications

광고 소재 아래에 다음 콘텐츠가 제공됩니다 커먼즈 라이센스

귀하의 지원은 MIT OpenCourseWare에 도움이 될 것입니다 무료 교육 자료를 지속적으로 제공합니다 기부 또는 추가 자료보기 수백 개의 MIT 과정에서 MIT OpenCourseWare 방문 ocwmitedu에서

교수 : 좋습니다 그럼 두 번째 강의를 시작합시다 웹 보안에 관한 우리의 놀라운 시리즈에서 오늘 수업을 시작하려면 실제로 간단한 데모를보고 싶습니다 아시다시피 데모는 거의 작동하지 않습니다

잘하면 내 빈 터미널을 보지 않을거야 여기 그러나 기본적인 생각은 내가 먼저 Shellshock 버그의 예를 보여주고 싶었습니다 당신이 들었을 수도 있습니다 이것은 꽤 인기있는 주제였습니다

보안 문학에서 그리고 사람들은 Heartbleed 10 가지 보안 중 10 가지 [? 곤충 ?] 하지만 사람들은 우리가 예약해서는 안된다는 말을했습니다 10 중 10의 Heartbleed 이것은 잠재적으로 더 나쁘다 괜찮아? 그래서 저는 이것이 당신들에게 좋은 생각이라고 생각했습니다

살아있는 역사를보고 부모님 께 수업료를 내고있어 MIT의 그렇다면 Shellshock 버그의 기본 아이디어는 무엇입니까? 음, 정말 좋은 예입니다 안전한 웹을 구축하는 것이 왜 어려운지 여러 기술에 적용되는 애플리케이션 스택, 다중 언어, 다중 OS, 등등 앞으로 그래서 기본적인 생각은 Shellshock 사실을 이용하려고한다 공격자가 특수 HTTP를 만들 수 있음 서버에 요청하고 헤더를 제어합니다

그 요청에 있습니다 그래서 여기에 예제를 작성했습니다 매우 간단합니다 따라서 공격자가 일부 GET 쿼리를 보내려고한다고 가정 해 봅시다 그들은 그 쿼리를 일부 CGI 인터페이스에 보낼 것입니다

그러면 몇 가지 물음표가 나타날 것입니다 그 사람은 고양이를 찾고 싶어합니다 이것이 사람들이 검색하는 모든 것입니다 그리고 몇 가지 표준 헤더가 있습니다 예를 들어, 호스트와 같은

여기에이 URL이 있습니다 examplecom에 매달려 있습니다 이제 공격자가 사용자 지정 헤더를 지정할 수도 있습니다 권리? 그래서 공격자는 단지 내가 말할 수 있습니다

애플리케이션 별 헤더를 찾아야한다 커스텀 헤더 (Custom-header)라고 불리는데, 거기에 어떤 값을 지정하고 싶습니다 웹 애플리케이션이 정의 할 수 있다고 상상할 수 있기 때문에 할 수없는 특정 기능 미리 정의 된 단순한 HTTP 헤더를 사용하여 표현할 수 있습니다 승인 모든 것이 상당히 무해한 것처럼 보입니다

그러나 일어나는 일은 많은 CGI 웹에 있습니다 서버를 사용하면 실제로 이러한 맞춤 헤더 값을 사용하게됩니다 Bash를 위해 환경 변수를 설정하는 데 사용하십시오 승인? 따라서이 헤더를 사용하여 Bash 변수 이름을 만듭니다 맞춤 헤더

그런 다음 그들은이 가치를 여기에서 가져갈 것입니다 공격자가 제공 한 그 Bash 변수의 값이되는 것입니다, 맞습니까? 그리고 일단 변수가 설정되면, CGI 서버가 일부 처리를 수행합니다 그 환경의 맥락에서 권리? 그래서 이것은 분명히 나쁘다 아마도 이것이 어디로 가고 있는지 알 수있을 것입니다 웹 서버는 이러한 임의의 값을 가져서는 안됩니다 임의의 씻지 않은 대중으로부터

따라서 Shellshock 버그의 특정 예에서, 무슨 일이 일어 났는지는 Bash 변수를 설정하면 이것에, 이런 종류의 변형 된, 사악한 것, 그리고 나서 일어나는 광기가있을 것입니다 기본적으로 이것은 형식이 잘못되었습니다 [? 선택?] 기능 정의를 Bash 스크립팅 언어로 정의합니다 당신은 그것의 특성에 대해 걱정할 필요가 없습니다 그러나 Bash가 정확했다면, 여기있는이 부분이 처형되지 않을 것입니다 그래서 기본적으로, 당신은 지금 바보 같은 함수를 정의했습니다

그게 아무것도하지 않아 그리고 [INAUDIBLE]에서 여기서 종료하십시오 그러나 실제로이 일련의 문자들은 Bash 파서를 혼란스럽게합니다 그리고 결국 일어나는 일은 그것이 일종의 비틀 거리다는 것입니다 여기이 말도 안돼

그리고 나서, 오, 나는 계속 파싱을 할 것입니다 여기 몇 가지 명령을 실행하십시오 이 경우 bin / id 명령 만 수행합니다 사용자에 대한 정보를 표시합니다 하지만 여기에 어떤 코드가있을 수 있습니다

이것이 이것이 취약점의 핵심입니다 그래서 여기에 아주 간단한 예제를 드리겠습니다 그래서 당신은 화면에 나타납니다 기본적으로 여기에는 매우 간단한 Python 서버가 있습니다 네가 상상할 수있는 가장 멍청한 사람

이 방법은 GET 방법입니다 그래서 GET 방법을 사용하면 기본적으로 모든 HTTP 헤더를 반복합니다 요청에 승인? 헤더의 네 가지 주요 값 이 요청의 값 그런 다음 발견 한 헤더를 인쇄합니다 그리고이 흙먼지 간단한 예에서, 아주 무언가를 할 것입니다

시스템 호출을 실행하고 직접 설정합니다 환경 치를 헤더로 지정된 값으로 설정합니다 이것이 취약점의 근원입니다 그래서 내가 여기 와서 희생자 웹 서버를 시작한다면 – 이제 요청을 수락 할 준비가되었습니다 그런 다음 특수 쉘shock 클라이언트를 작성할 수 있습니다

그리고 이것은 실제로 꽤 더러워졌습니다 그래서 여기에서, 저는이 잘못된 문자열 중 하나를 정의합니다 그래서 처음에는 이런 종류의 잔키가 있습니다 그리고 나서 나는이 모든 것이 본질적으로 서버 측에서 저를 대신하여 처형 될 것입니다 그래서이 경우, 나는 실제로 꽤 무해했다

그냥, 에코, 내가 네 기계를 소유하고 있다고 말한다 그러나 이것은 여기 아무거나 일 수 있습니다 내가 여기처럼 다른 Bash 셸을 시작할 수 있습니다 그리고 나서, 에코 공격자 명령, 현실 세계에서, 실제로는 매우 위험한 것이 될 수 있습니다 그래서 헤더와 커스텀 요청을 설정합니다

그리고 나서 파이썬을 사용하여 HTTP 연결을 만듭니다 그냥 서버로 보냅니다 그래서 무슨 일이 일어나고 있니? 그래서 저는 여기 Shellshock 클라이언트를 실행합니다 그래서 저는 여기에 404가 있다고 말하고 있습니다 왜냐하면 내가 요청한 파일이 중요하지 않기 때문이다

그래서 나는 존재하지 않는 HTML 색인을 삽입했습니다 그러나 여기를 살펴보면 서버에 대한 결과입니다 그래서 여러분이 보는 것은 여러분이이 결과물을 가지고 있다는 것입니다, 나는 기계를 소유하고 ATTACKER CMD를 소유하고 있습니다 그리고 그 이유는 서버가 헤더를 가지고 있기 때문에, Bash 변수를 설정합니다 이 이상한 일로 여기에 놓았습니다

결과적으로 ATTACKER 제어 명령 도망 갔어 그렇게 모든 것이 의미가 있습니까? 관객 : 프로그램이 그 밑에 있다면이 일이 일어날까요? 나는 아직도 불분명하다 교수 : 네 따라서 공격이 실제로 어떻게 작동하는지에 대한 세부 사항 당신이 아파치를 실행하는지에 달려있다 귀하의 웹 서버는 다음과 같습니다

그래서이 예제에서, 그것은 조금 인위적입니다, 실제로 [INAUDIBLE]을 명시 적으로 스폰하기 때문에 다른 Bash 셸에서 환경 변수를 설정하고, 그리고 우리는 갈 준비가되어있었습니다 하지만 당신이 산란하는 경우에 상상할 수 있습니다 들어오는 연결마다 다른 프로세스, 직접 환경 변수를 설정할 수 있습니다 그 사람이 사용하고 있었다면 Bash 환경 관객 : 웹 서버 코드로 돌아 가면, 당신이 훨씬 더 취약한 것으로 보입니다 당신이 전화하기 때문에 Shellshock보다? 그래도?] 시스템 그리고 커스텀 헤더를 설정하는 것만으로 명령을 실행할 수 있습니다

뭔가 [? 그거?] 이 예제에서는 Shellshock 버그를 사용할 필요가 없습니다 교수 : 맞습니다 네 그래서이 특정 웹 서버에서는 어떤 것이 있습니다

나는 단지 가르치는 가치에 대해서 썼다 네,이 일은 당신이 아무것도 믿지 않아야합니다 관객 : 그러나 Shellshock 익스플로잇 환경에 악의적 인 것을 할당하는 중이었습니다 [? N?]을 설정하거나 그런 식으로, [무관 한] 무언가입니다 교수 : 오, 예, 예

그래서 그의 질문으로 돌아갑니다 맞습니다 그러니까, 아파치가 여기 있다고 가정 해 봅시다 아파치는 구성을 정렬하기가 약간 까다 롭다 분명히 무슨 일이 벌어지고 있는지를 보여줍니다

하지만 당신 말이 맞습니다 그래서 아파치는 Set nth를 호출 할 것입니다 환경을 직접 설정할 수있는 또 다른 방법입니다 특정 서비스에 대한 가치 [? 나?] 당신이 가진 과정 하지만 실제로 서버가 일부 있습니다

이처럼 당신은 그들이 실제로 별도의 프로세스를 생성하고 매우 도덕적으로 무언가를 수행하십시오 이것과 동등하다 하지만 네 말이 맞다 특히 패치가 위반되었다고 당신이 묘사 한 방식이었습니다 그럼 모두 이해가 되니? 승인

그래서 그것은 일종의 빠르고 더러운 예제입니다 Shellshock 물건 그래서 제가주고 싶은 또 다른 예가 있습니다 당신은 크로스 사이트 스크립팅의 한 예였습니다 그래서 Shellshock 버그는 일종의 것이 었습니다

콘텐츠 위생이 매우 중요하다는 예를 우리가 방금 토론 한 것처럼, 당신은 임의의 사람으로부터 입력을 받다 그리고 그들은 그것들을 어떤 유형의 명령에서도 직접 사용합니다 따라서 교차 사이트 스크립팅 공격은 또 다른 예입니다 어떻게 잘못 될 수 있는지 그래서이 예에서는 다른 정렬이 있습니다

바보 CGI 서버 여기에 그리고 우리가이 CGI 서버를 보면, 그래서 무엇을 할 것인가? 그래서 다시 한번, 나는 아주 간단한 것을 썼다 파이썬에서 이것은 그 핸들이 될 것입니다 클라이언트로부터 요청이 들어올 때 실행됩니다

그리고 근본적으로, 어떻게됩니까? 여기서는 응답 헤더를 출력 할 것입니다 그래서 저는 제 대답은 다음과 같습니다 텍스트 형식의 HTML이 될 것입니다 이 줄은 여기에서 실제로 설명 할 것입니다 따라서 브라우저에는 보안 메커니즘이 있습니다

내가 너에게 보여줄 공격을 막으려 고 그래서 나는이 예를 넣었습니다 나는 거기에 헤더 줄을 넣었습니다 일부 보호 기능을 해제 할 수 있습니다 CGI 스크립트가하는 일 모든 필드 및 CGI 요청에 액세스 할 수 있는지 여부 쿼리 문자열에있는 모든 것을 상상해보십시오

이 물음표 뒤에 -이 머리말과 가치 사물처럼, 그것이 그 형태의 예에 들어갑니다 CGI 스크립트가하는 일은 매우 간단합니다 단지 직접적으로 그 값을 인쇄합니다 공격자가 통과했다 똑같은 기본 아이디어

이것은 나쁜 생각입니다 왜냐하면이 Print 문은, HTML 자체에 직접 인쇄됩니다 그래서 일어날 수있는 것은 다음과 같습니다 그럼 내가 원하는 쿼리를 가지고 있다고 가정 해 봅시다 그래서이 첫 번째 쿼리에서는 메시지 값을 설정하고 있습니다

안녕하세요 그래서 내가 여기로 가서 그 페이지를 실행하면, 음, 그럼이여보세요가 나타나는지 보러 갈거야 왜냐하면 서버가 다시 한 번 나는 그것에 전달합니다 그리고 Hello를 출력합니다 그래서 큰 놀라움은 없습니다

이제 내가 실제로 거기에 임의의 HTML을 전달하십시오 그래서 저는 실제로 거기에 어떤 스타일링을 넣으려고합니다 그래서 저는 h1을 말하고 그 다음 다시 h1을 말합니다 그래서 효과가 있었습니까? 그래서 다시 한번 우리는 [? 구워라 ?] 이제 당신은 생각할 것입니다, 좋아, 우리는 지금 사업을하고 있습니다

이것은 멋지다 자 이제 일부 JavaScript 코드를 직접 삽입 해 봅시다 괜찮아 그래서 나는 이것을한다 그리고 여기에, 저는 실제로 메시지에 넣었습니다

나는 대본을 썼다 그런 다음 XSS에 경고하고 스크립트로 전달하기를 원합니다 이제 재미 있습니다 그래서 뭔가가 제대로 작동하지 않는 것처럼 보입니다 그래서 나는 어떤 결과물도 보지 못했다

경고도 보지 못했습니다 그리고 실제로 웹 서버의 출력을 보면 – 그리고 내가 본 것은 여기에 웹이다 서버 자체는 그 후행 스크립트 태그를 실제로 얻지 못했습니다 그래서 브라우저 자체가 어떻게 든 보이는 것처럼 보입니다 시도했지만 뭔가 악의를 발견했습니다

XSS 필터를 비활성화합니다 그래서 재미 있습니다 우리는이 방어 메커니즘에 약간의 관심을 기울일 것입니다 강의에서 그러나 말하기에 충분하다

브라우저처럼 보인다 이 크로스 사이트 스크립팅 공격에 저항하려고합니다 물론 우리가 활용할 수있는 것은 of의 사실은 HTML, CSS 및 JavaScript가, 그들은 매우 복잡한 언어입니다 그리고 그들은이 매우 이해하기 어려운 방식으로 구성됩니다 그래서 여기에, 제가 여기 공격 문자열을 설정 한 것입니다

이것은 형식이 잘못된 URL입니다 나는 말하고있다, 이미지, 그리고 3 개의 인용문 마크 (mark), 스크립트 태그 (script tag)를 포함한다 마찬가지로 이것은 실제로 구문 분석해서는 안됩니다 그러나 무슨 일이 일어나게 될까요? 브라우저가 혼란 스러울 것입니다 따라서 사이트 간 스크립팅 검색 기능이 내장되어 있습니다

실제로 여기서 실패합니다 그리고 일어나는 일은 이제 경고를 보게됩니다 승인? 흥미로운 점은 실제로 지금 페이지의 내용을 살펴보면 다소 엉망입니다 이 인용 부호와 중괄호는 어디서 들어 왔습니까? 우리가 컨트롤을한다면, 우리는 볼 수 있습니다 이것은 브라우저를 어떤 식 으로든 행복하게 만들지 않는다는 것을 의미합니다

그것은 약간 불분명하다 그러나 우리가 그들의 공격자인지는 중요하지 않습니다 우리는 그 경고를 보았다 즉 [? 우리 코드?]가 달렸어 그리고 공격자의 관점에서 볼 때 누가 신경을 쓰는지 그 페이지가 엉망이 됐어? 내가 그 코드를 사용할 수 있었기 때문에 그런 쿠키 나 물건을 훔치는 것

그럼 그게 다야 그래? 관객 : 교차 사이트 측면이란 무엇입니까? 교수 : 아 따라서 교차 사이트 측면은 공격자가 사용자가 이와 같은 URL로 이동하려면, 그러면 공격자가 지정한 사람이 메시지의 내용

경고 XSS를 지정하는 것은 공격자입니다 또는 그런 것 근본적으로, 무슨 일이 일어나고 있는지 피해자 페이지가 코드를 실행하고 있다는 것입니다 그 페이지가 아닌 누군가를 대신해서 관객 : 브라우저의 역할을 정확히 설명 할 수 있습니까? 살생 [? 게임?] [? 놀이? ?] 교수 : 예, 예

그래서 우리는 1 초 안에 그것에 도달 할 것입니다 그래서 우리는 1 초 안에 그것에 도달 할 것입니다 승인 그래서 모든 것이 이야기 시간입니다 그리고 여기 보자

그래서 나는이 사람을 켤 수 있다고 생각해 그리고 아마 그는 여기 [부적절한] 사람이 될 것입니다 이 사람 청중 : 정면 벽 교수 : 아, 그래

됐어 괜찮아 여덟 번째는 매력이야 알았어 고마워 승인

그래서 네, 당신을 보여주기위한 데모가 두 가지 데모입니다 지금 우리가 사는 더럽고 더러운 세계 그렇다면 왜 크로스 사이트 스크립팅이 널리 퍼져 있습니까? 왜 이러한 문제가 큰 문제입니까? 그 이유는 웹 사이트 점점 더 역동적으로 변하고 있습니다 그들은 사용자 콘텐츠를 여러 번 통합하려는 경우, 또는 다른 도메인의 콘텐츠를 통합하려고합니다 따라서 뉴스 기사의 댓글 섹션을 생각해보십시오

그 의견은 신뢰할 수없는 사람들로부터 왔으며, 사용자로부터 이렇게 여하튼,이 위치는 알아 내야한다, 그런 종류의 것들을 구성하기위한 규칙은 무엇입니까? 또한 웹 사이트는 사용자가 제출 한 문서를 호스팅 할 수 있으며, Google Docs 또는 Office 365와 같은 것입니다 그 문서들은 모두 신뢰할 수없는 사람들로부터 왔으며, 그러나 어쨌든, 그들은 서로 살아야만합니다 대규모 인프라 Google 또는 Microsoft 또는 기타 등에서 그렇다면 일부 교차 사이트 스크립팅 방어는 무엇입니까? 우리가 사용할 수 있습니까? 이런 종류의 질문은 귀하의 질문에 전달됩니다 그래서 우리는 지금 그것들 중 일부를 실제로 볼 것입니다

따라서 한 가지 유형의 방어는 기본적으로 브라우저 자체에서 크로스 사이트 스크립팅 필터가 있습니다 그래서이 필터들은 본질적으로 잠재적 인 교차 사이트 스크립팅이있을 때 탐지하려고 시도하십시오 공격 실제로 실제로 이러한 필터 중 하나를 보았습니다 그리고 저는 그것이 우리가 보았던 세 번째 예라고 생각합니다

네가 어떤 웹 사이트 나 URL을 가지고 있다면 그 모양은 – 그래서 foocom 그리고 몇 가지 물음표가 표시되고 쿼리 문자열이 생깁니다 당신은 제출할 것입니다 이것은 내가 세 번째 시도한 예제와 매우 유사합니다

그래서 저는이 소스를 다음과 같이 설정했습니다 evilcom/cookiestealerjs 그래서 일어난 일은 내가 이와 비슷한 예를 시도했을 때, 브라우저는 실제로 그것을 손에서 거절했다

그래서 우리는 그것이 작동하지 않는다는 것을 알았습니다 그리고 그것이 효과가 없었던 이유 브라우저가보고 보았 기 때문입니다 URL에 삽입 된 스크립트 태그가 있습니까? 그래서 기본적으로 매우 단순한 경험적 방법입니다 악마가 벌어지고 있는지를 알아 내려면 합법적 인 개발자가 없거나 개발자가 없기 때문에 그게 제정신이에요 이런 일을해야합니다

실제로 이러한 구성 옵션이 있습니다 브라우저에서 이러한 것들을 켜고 끌 수 있습니다 때때로 이것은 테스트에 유용합니다 실제로 자바 스크립트를 삽입하려는 경우 빠르고 더러운 그러나 이것은 거의 항상 [비 숙련]으로 지정됩니다

예를 들어 Chrome과 IE에는 다음과 같은 필터가 내장되어 있습니다 검색 주소창의 URL 값을 살펴보고, 이런 것들을 찾으십시오 그리고 그곳에 있다면, 그들은 아마도 삭제할 것 같은 일을 할 것입니다 이 모든 일이 완전하게 그들은 아마도 소스가 비어있는 것으로 바꿀 것이며, 그런 것들

그리고 근본적으로, 당신의 질문에 도달하기 위해서, 브라우저가 가지고있는 경험적 방법이 있습니다 이런 것들을 확인하기 위해서 OWASP 사이트를 살펴보면, 그들은 실제로 발견 적 방법의 예를 수집한다 당신은 크로스 사이트 스크립팅을 탐지하는데 사용할 수 있습니다 이러한 필터를 우회하는 데 사용할 수있는 트릭뿐 아니라 그래서 그것은 매우 우스웠다

그래서 내가 데모를 위해하고 싶었던 첫번째 일 이런 식으로 뭔가하고, 작동하지 않습니다 그래서 나는 OWASP 치트 시트에 갔다 나는 그들이 제안한 세 번째 것을 보았다 그리고 그들이 제안한 세 번째 사항 일종의 깨진 이미지 구문 유형 물건이었습니다 그래서 이것에 의존하는 기본적인 문제 내가 말했듯이, 다른 방법이 많이 있습니다

CSS와 HTML 파서가 잘못 분석하도록 강제합니다 그래서 이러한 것들은 완전한 해결책이 아닙니다 그들은 완벽한 범위를 가지고 있지 않습니다 관객 : 이것은 단지 도입부와 같지 않아야합니다 브라우저에서? 왜냐하면 브라우저의 일이 아닌 것처럼 보이기 때문입니다

교수 : 브라우저의 일이 아니라는 뜻입니다 이런 종류의 물건들을 위생 처리 할까? 관객 : 네 교수 : 내 말은, 당신은 상상할 수 있습니다 예를 들어, 브라우저를 프록시의 꼭대기에 두는 것 그리고 아마도 프록시는 이런 종류의 청소를했습니다

내 말은, 이해할 수있는 직관적 이유 너무 많은 브라우저가 있기 때문에 브라우저에서 할 수 있습니다 합법적 인 구문 분석 엔진이 브라우저 내부에 있습니다 아마도 실제 구문 분석의 위치에 더 가깝다면 끝내면 더 좋습니다 하지만 당신 말이 맞아 실제로, 당신은 일종의 방어가 있다고 상상할 수 있습니다

기본적으로 레이어에 있습니다 관객 : 그가 무엇 일지 생각합니다 웹 개발자의 직업이라고 말하면서, 이것을 위생적으로 다루는 것이 아니라 교수 :하지만 내말은, 그건 마치 그런 말입니다 어떤 의미에서 우리는 프로세스, 유닉스 나 윈도우에서도 마찬가지다 그래서 우리는 일종의 개발자의 일이라고 말할 수 있습니다

그 것들이 고립되어 있는지 확인하십시오 그러나 사실 OS와 하드웨어 또한 중요한 역할을한다 왜냐하면 [INAUDIBLE]은 (는) 신뢰할 수있는 반면에 임의의 두 임의 개발자가 개발 한 프로그램 구현 보안의 종류를 신뢰할 수 있는지 여부 바르게 하지만 당신 말이 맞아 그리고 사실, 장고 (Django) 그들은 실제로 당신을 도우려고 노력합니다

이러한 문제 중 일부 어쨌든 필터는 완벽한 솔루션이 아닙니다 또한 필터는 persistent– 영구 사이트 간 사이트로 알려진 스크립팅 공격 이것은 일종의 반영 또는 일시적인 것으로 알려져 있습니다 이 스크립트 코드는 URL의 일종의 삶을 나타 내기 때문입니다

그런 다음 사용자가 해당 URL을 닫으면 기본적으로 공격은 사라졌습니다 그러나 당신은 당신이 할 수 있다고 상상할 수 있습니다 코멘트에 악의적 인 HTML을 넣는 사람이있다 섹션을 참조하십시오 그리고 웹 서버가 실제로 그 주석이 유효하다는 것을 받아들이면, 그 악의적 인 페이로드와 함께, 본질적으로 영원히 거기에서 살 수있다

따라서 사용자가 갈 때마다 그 악성 콘텐츠에 노출 될 것입니다 또 다른 예는 다음과 같습니다 재미 있고 슬픈,이 모든 것들처럼, 데이트 웹 사이트를 보는 것입니다 그래서 일부 데이트 웹 사이트는 실제로 허용 사용자는 자신의 프로필에 본격적인 HTML을 넣을 수 있습니다 그럼 그게 무슨 뜻 이죠? 그래서 누군가 다른 사람이 외롭고, 아마도, 또는 찾고있을 때 그들의 진정한 영혼 일치를 찾으려면, 그들은 당신의 웹 사이트로 이동합니다

그들은 당신이 HTML을 실행할 것입니다 그들의 세션의 컨텍스트에서 만들어진 그래서 이것은 또한 매우 위험한 공격 일 수도 있습니다 그래서 이런 종류의 필터를 사용하는 것입니다 그런 것들로부터 보호하지 마라

관객 : 의견에 [INAUDIBLE] 섹션은 아마 포스트를 설정함으로써 그렇게한다 정보는 게시물 변수에서 서버로 이동합니다 또는 그런 무엇인가? 교수 : 그래서 여러 가지 방법이 있습니다 당신은 그것을하는 것을 상상할 수 있습니다 네

그렇게하는 것이 상상할 수있는 한 가지 방법은 게시물입니다 상상할 수있는 또 다른 방법은 동적 XML입니다 HTTP 요청 관객 : 네 그러나 그것이 포스트와 같은 것이라면, 왜 그것을 스캔 할 수 없습니까? 네가 가진 것과 똑같은 일을해라

교수 : 네 그래서 당신은 정확하게 그것에 대해 정확합니다 그 중 일부는 잠시 후에 논의 할 것입니다 하지만 서버가 응용 프로그램의 측면이 있어야합니다 매우 방어적이고이 물건에 대해 불신합니다

그래서 네 말이 맞다 그래서 당신은 서버가 어쩌면 상상할 수 있습니다 이 무언가를 보았습니다, [INAUDIBLE] 브라우저가하지 않더라도 당신 말이 맞아 괜찮아

기본적으로 이러한 교차 사이트 필터에 대한 설문 조사입니다 브라우저에서 크로스 사이트 스크립팅에 대한 또 다른 방어책 HTTP 전용 쿠키로 알려져 있습니다 그래서이 기본 개념은 서버가 실제로 브라우저에 알릴 수 있다는 것입니다 클라이언트 측 JavaScript가 특정 쿠키에 액세스 할 수 있어야합니다

기본적으로 서버는 설정된 쿠키 필드에서 응답으로 헤더 값을 보냅니다 그것은 말할 수 있습니다, 이봐, 고객이 자바 스크립트를 못하게해라 이 쿠키를 조작하십시오 따라서 서버 만이 작업을 수행 할 수 있습니다 그리고 이것은 단지 부분적인 방어 일뿐입니다, 공격자가 요청을 발급 할 수 있기 때문에 사용자의 쿠키가 들어 있습니다

그래서 이것은 교차 사이트 요청 위조였습니다 마지막 강좌에서 보았던 것 따라서 JavaScript 코드가 쿠키를 조작 할 수없는 경우에도, 공격자는 여전히 마법 같은 것을 할 수 있습니다 일부 전자 상거래 사이트의 URL을 올리면 buycom이라고합시다

침입자는 침입자가 사고 싶은 항목을 넣을 수 있습니다 그래서 페라리를 넣는다 그리고 나서 공격자는 누구에게 말을해야합니까? 이것은 공격자에게 가야합니다 따라서 자바 스크립트를 좋아하는 고객 쿠키에 액세스 할 수 없습니다 아무 것도 없습니다

공격자가 단지 마법을 쓰는 것을 막아줍니다 이런 URL 이것이 CSRF 토큰 중 일부입니다 반대하는 것을 돕는다 잠시 후에 얘기하십시오 시도 할 수있는 또 다른 것 이러한 교차 사이트 스크립팅 공격을 방지하기 위해 수행해야 할 작업 특권 분리입니다

그래서 여기에있는 아이디어는 기본적으로 모든 콘텐츠에 대해 별도의 도메인을 사용하려는 경우 신뢰할 수 없다 그리고 예를 들어, 많은 온라인 서버 제공 업체 전자 메일 또는 온라인 생산성 제품군과 같은 것들이었습니다 그렇다면 Google Docs, Office 365 등등을 생각해보십시오 그들은 실제로 별도의 도메인을 사용합니다 사용자가 제출 한 콘텐츠를 호스팅합니다

그래서 구글, 나는 그들이 여전히 이것을 사용한다고 생각한다 그들은 사용자가 사용하는 모든 것을 넣곤했습니다 특별한 도메인으로 제출 googleusercontentcom이라고합니다 그래서 여기에서 그들은 물건을 넣을 것입니다

페이지의 캐시 된 사본, Gmail [INAUDIBLE], 그리고 이런 것들 적어도 1 년이나 2 년 전쯤에, 이것은 최고 25의 것 같이 [? Alexa-visited?] 도메인, Google 서비스가 너무 인기가 있었기 때문입니다 그리고 여기에 물건을 넣는 것의 이점은 무엇입니까? 음, 최소한, 희망은 일부 유형의 교차 사이트 스크립팅 취약점입니다 또는 사용자가 제출 한 콘텐츠에서 이와 유사한 내용, 잘하면 데몬은 해당 도메인으로 제한됩니다 그것은 실제로 본격적인 google

com에 영향을 미치지 않습니다 이것은 완벽한 방어가 아니지만, 사용자 제출 콘텐츠에는 참조가있을 수 있기 때문에 googlecom의 것들 그리고 다시 한번, 이것은 단지 일종의 것입니다 훨씬 더 보편적 인 문제에 대한 부분적인 수정이 필요합니다

자네가 할 수있는 또 다른 일은 그리고 이것은 신사의 제안으로 돌아 간다 여기에 우리가 실제로 할 수있는 것입니다

콘텐츠 위생 처리 그래서 여기 아이디어는 본질적으로 당신이 언제든지 – 어디에서 웹이 될 수있는 브라우저가 될 수 있습니까? 서버 또는 기타 – 신뢰할 수없는 콘텐츠를 수신 할 때마다, 당신은 전혀 그것을 신뢰하지 않습니다 그래서 당신은 그것을 통과하고, 당신은 일종의 렌더링을하기 위해 일을합니다 그것은 실제로 중립적이지 않기 때문에 실제로는 불가능합니다 어떤 식 으로든 코드를 실행하거나 시스템을 파괴하십시오

그리고 이것의 예가 Django 템플릿 시스템입니다 그래서 장고는 웹 프레임 워크의 한 예입니다 기본적으로 상위 수준의 웹 프레임 워크 자동화 및 보안에 도움이되는 것입니다 웹 사이트 개발의 지루한 작업 중 일부 따라서 데이터베이스 액세스를 쉽게하는 데 도움이됩니다

세션 관리와 같은 일을 할 때 도움이 될 것입니다 또한 일관된 모양을 유지하는 데 도움이됩니다 귀하의 웹 사이트에서 느낄 수 있습니다 일관성있는 모양과 느낌을 유지하는 한 가지 방법 이 템플릿의 개념을 사용하는 것입니다 따라서 모든 페이지가 자동으로 동일한 CSS 및 사물로 시작하십시오

같은 스타일, 같은 스타일 하지만 웹 페이지에는 이러한 부분이 있습니다 특정 뉴스와 함께 전문화 할 수있는 곳 그날 모든 사람의 마음에 달린 기사, 또는 이와 유사한 것 또는 사용자 별 콘텐츠가 포함됩니다 예를 들어 장고에서는 템플릿을 볼 수 있습니다 이런 식으로 보일지도 모릅니다

따라서 대담한 태그가 있습니다 그것은 말한다, 안녕하세요 그리고 여기에이 중괄호가 있습니다이 이중 중괄호입니다 그리고 그것은 말합니다, 이름

그리고 근본적으로 이것이 의미하는 바는 무엇입니까? 이것이 placeholder 변수와 같다는 것입니다 따라서 기본적으로 이러한 페이지가 동적으로 생성됩니다 그래서 사용자가 Django 사이트에 갈 때, Django 서버는 다음과 같이 말합니다 알고있는 어딘가에있을 것입니다 어쩌면 CGI 문자열에있을 것입니다

그리고 Django 서버가 동적으로 페이지 [? ?]을 (를) 사용자에게 반환하려면, 그것은이 특별한 참조를 여기에 대체합니다 이 변수의 값이 무엇이든 상관 없습니다 그래서 매우 간단합니다 이것은 내가 당신에게 보여준 dinky CGI 서버와 비슷합니다 사용자가 제출 한 콘텐츠 만 반영합니다

바로 여기에 그러나 장고는 바보 같은 CGI보다 실제로 더 잘합니다 이 개념을 사용하기 때문에 내가 보여준 서버 콘텐츠 위생 처리 따라서 Django는 사용자가 적대적 일 수 있다고 예상합니다 그래서 직접적으로 집어 넣는 것이 아닙니다

여기서 name 변수의 값 대신, 그것은 그것을 그런 식으로 인코딩하려고합니다 이 콘텐츠는 결코 벗어날 수 없다는 것을 HTML 컨텍스트 및 JavaScript 실행 또는 이와 비슷한 것입니다 예를 들어, 할 일 중 하나는 꺽쇠 괄호를 쓸 것인가, HTML 엔티티로 변환합니다 따라서 캐릭터가 아닌 캐릭터가이 게임으로 변모합니다

보다 큰 성격은 이것으로 번역됩니다 큰 따옴표는 앰퍼샌드 따옴표로 번역되고, 등등 그리고 이것이 보장하는 것은 만약 사용자가 넣은 내용이 이름에서 실제로 꺾쇠 괄호를 포함하려고합니다 또는 이와 같은 것들은 기본적으로 거세 될 것입니다 그리고 그것은 뭔가로 번역 될 것입니다

그것은 HTML로 해석되지 않습니다 클라이언트 측 브라우저에서 그럼 그게 말이 되니? 이제는 이것이 완전히 완벽한 방어가 아니라는 것을 알고 있습니다 이 크로스 사이트 스크립팅에 대해 그리고 그 예가 보여주는 것처럼, HTML, CSS 및 JavaScript에 대한 이러한 문법 너무 복잡해서 혼동하기가 쉽지 않다 브라우저의 파서

그래서 예를 들어, 여러분이 이와 비슷한 것을 가지고 있다고 가정 해 봅시다 그리고 이것은 매우 일반적인 일입니다 장고와 같은 프레임 워크에서 그래서 당신은 일부 div 있습니다 그런 다음 클래스를 동적으로 설정하려고합니다

그래서 여러분은 클래스를 var에 설정하는 등등을합니다 그래서 아이디어는 장고가 이것을 처리 할 때, 그것은 현재의 스타일링이 무엇인지 알아 내야한다 여기에 네가 할 수있는 한가지는 아마도 공격자는 이와 같은 문자열을 제공합니다 그래서 공격자는 1 등급이라고 말할 것입니다

OK, 지금까지는 그렇게 좋았습니다 유효한 CSS와 같아 보입니다 표현 하지만 공격자가 시도한 다음 여기에 자바 스크립트를 넣으세요 그래서 그것은 onclick equals라고 말할 것입니다 – 그리고 나서 자바 스크립트 URL

그런 다음 여기에 일부 함수 호출을 입력하십시오 그래서 이것은 형식이 잘못되었습니다 브라우저는 아마도 여기에서 실패를 막아야 만합니다 그러나 문제는 만약 당신이 실제 웹 페이지의 HTML을 보았습니다 심지어 합법적 인, 호의적 인 사이트와 마찬가지로

사람들은 HTML을 해킹 할 수 없습니다 따라서 브라우저가 실패 스톱이되는 경우, 말 그대로, 당신이 즐기는 어떤 사이트도 이제까지 작동하지 않을 것입니다 세계에 실망하고 싶다면 내가 너를 도왔 으면 충분하지 않을거야 웹 사이트를 탐색 할 때 자바 스크립트 콘솔 열기 얼마나 많은 오류가 빠져 나가는 지보십시오 마찬가지로 CNN에 가서 얼마나 많은 오류가 발생하는지 확인하십시오

CNN은 기본적으로 일종의 작품이지만, 매우 혼란 스럽습니다 Acrobat Reader를 열면 너는 끊임없이 던지고있어 널 포인터 예외가 발생하면 삶에 대해 조금기만 당한다 그러나 웹에서 분명히 우리는 이것을 받아 들일 것을 배웠습니다 그래서 브라우저는 이런 것들에 대해 아주 관대해야하기 때문에, 그들은 실제로 형식이 잘못된 코드를 마사지하려고 시도 할 것입니다

합리적인 것처럼 보입니다 그리고 거기에는 보안 취약점이 있습니다 그래서 나는 이것에 대한 집의 요점을 짐작한다 그 내용은 위생적인 ​​내용의 일입니다 그래서 문자 그대로 아무것도없는 것이 낫습니다

실제로 많은 경우를 포착 할 수 있습니다 그러나 많은 경우에 완전한 방어가 아닙니다 그래서 실제로하는 것에 대해 생각할 수있는 한 가지 – 사실, 이걸 여기에 두자 덜 표현적인 마크 업을 사용하는 것에 대해 생각할 수도 있습니다 언어

그럼 그게 무슨 뜻이야? 그래서 HTML과 CSS, JavaScript는 [? 투어?] 완료 그들은 당신이 모든 종류의 재미있는 일을 할 수있게 해주지 만, 그렇지? 관객 : 귀찮게해서 죄송합니다 콘텐츠 위생 처리는 언제 작동하지 않습니까? 교수 : 내용은 언제입니까? 관객 : 대부분의 경우 작동하지 않습니다 교수 : 오, 그래 이 경우처럼, 예를 들어, 장고는 아마 정적으로 결정할 수 없을 것이다

이것은 나쁜 것입니다 이 특별한 경우에 하지만 그 잘못된 형식의 이미지 태그를 삽입 한 경우 나는 기본적으로 – 관객 :이 특별한 경우에, 나는 클래스 = 임무가 될 것으로 기대한다 따옴표 안에 그리고 그 일을 위해 어떤 효과도 가지지 말라 따라서 Django는 [INAUDIBLE] 코드를 시행 할 수 있습니다

교수 : 저기, 조금 까다 롭습니다 왜냐하면 우리가 모든 페이지가 쓰여졌다 고 가정한다면, 조금이라도 나를 다시 잡아 당겨 라 HTML 문법이 잘 지정되었다고 가정하면 CSS 문법이 잘 지정되었습니다 등등, 그럼 당신은 할 수 완벽한 파서가 될 세상을 상상해 보라 이러한 문제를 파악할 수 있어야한다

또는 어떻게 든 그것들을 정상적인 것으로 변환 할 수 있습니다 그러나 실제로 HTML 문법과 CSS 문법 잘 지정되어 있지 않습니다 그런 다음 브라우저는 사양을 구현하지 않습니다 그래서 그것은 바부 슈카 인형의 공포와 같습니다 그래서 저는 이것이 실제로이 개념에 들어 섭니다

근본적으로 당신이 말하는 것을 생각하기 때문에 글쎄, 우리가 무언가를위한 문법을 ​​가지고 있다면, 그게 뭔가 의미가있을거야 그리고 그것이 밝혀지면서, 당신이 붙으면 덜 표현적인 문법으로, 실제로는 훨씬 더 쉽습니다 콘텐츠 위생 처리 약간의 언어가 있습니다 마크 업 대신 Markdown이라고 부릅니다

[? 벽,?] 맞지? Markdown의 기본 아이디어 그 언어로 설계된 것입니다 예를 들어, 사용자가 의견을 제출할 수있게하고, 하지만 실제로는 빈 태그와 같은 것은 없지만, 그리고 애플릿 지원, 그런 것들 Markdown에서 실제로 훨씬 쉽습니다 네가 제안한 것을해라 그것은 합리적인 것 같아

첫눈에 문법을 모호하지 않게 정의한 다음 그 문법을 시행하십시오 따라서 위생 처리가 훨씬 쉬워졌습니다 본격적인 HTML, CSS, 및 JavaScript 그리고 어떤 의미에서 그것에 대해 생각해보십시오

이해 못하는 사이의 차이를 좋아해 C 코드 대 끔찍한 파이썬 코드 실제로 큰 차이가 있습니다 그 훨씬 더 풍부한 표현 언어를 이해하려고 노력합니다 왜냐하면 더 많은 일을 할 수 있기 때문입니다 표현력을 제한함으로써, 당신은 자주 보안을 강화하십시오

그것은 모두 의미가 있습니까? 괜찮아 당신이 상상할 수있는 또 다른 것 사이트 간 스크립팅 공격으로부터 보호하기 위해 CSP라는 콘텐츠 보안 정책을 사용하는 것입니다 CSP의 기본 아이디어는 웹 서버가 – 오 관객 : 네, 저는 Markdown 언어에 대해서 궁금합니다 모든 브라우저가이 언어를 구문 분석하는 방법을 알고 있습니까? 교수 : 아니, 아니 그렇다면 이러한 유형의 언어는 어떻게 될까요? 근본적으로 당신은 그들을 개종시킬 수 있습니다 HTML로 쌓아 올릴 수는 있지만 기본적으로는 아닙니다 일반적으로 브라우저에서 이해합니다 즉, 다른 의견 제출 시스템이 있습니다

내부적으로 Markdown의 내용을 표현합니다 그러나 페이지에 렌더링되기 전에, 그것은 기본적으로 Markdown 컴파일러로갑니다 Markdown 컴파일러는이를 HTML로 변환합니다 관객 : 알겠습니다 감사

[INAUDIBLE] 마크 다운이 아닐 수도 있습니다 최고의 속임수 [? Markdown을 사용 하시겠습니까?] [알아들을 수 없는] 교수 : 그래서 Markdown은 인라인 HTML을 허용합니다 내가 아는 한, 사용 중지하는 방법이 있습니다 컴파일러에서

나는 그것에 대해 잘못 될 수 있습니다 하지만 나는 깃발이 있다고 믿는다 당신은 그것을 없애기 위해 통과 할 수 있습니다 하지만 당신 말이 맞아 제한된 언어를 사용하는 경우 그러나 당신은 제한되지 않은 언어를 삽입합니다

그러면 테러리스트들이 이겼습니다 그래서 당신 말이 맞습니다 승인 네 보안을 강화하기 위해 할 수있는 또 다른 일 콘텐츠 보안 정책이라고하는 것입니다

내가 말했던 것처럼, 이것은 서버가 할 수있게 해주는 것입니다 웹 브라우저에 어떤 유형의 콘텐츠를 알리는 것입니다 되돌려 보내는 페이지에로드 할 수 있습니다 그리고 그 내용이 어디서 왔는지에 대해서도 말입니다 예를 들어, HTTP 응답에서, 서버는 이와 같은 것을 말할 수 있습니다

콘텐츠 보안 정책 헤더가 포함됩니다 그런 다음 기본값과 같은 것을 말할 수 있습니다 근원은 자기를 평등하게 할 것입니다 그리고 별표 mydomaincom에서도 받아 들일 것입니다

그럼이게 무슨 뜻입니까? 따라서 본질적으로 서버는 콘텐츠를 말하고 있습니다 이 사이트의 모든 내용은 도메인이 특정 페이지에 대한 것입니다 그리고 mydomaincom의 다른 하위 도메인 이것이 의미하는 것은 기본적으로 그 자체가 foo

com에 묶인다면, 그것이 보내는 서버의 근원이라고 가정 해 봅시다 이걸 브라우저로 돌려 보내 따라서 어떻게 든 크로스 사이트 스크립팅이 있다면 공격 및 페이지에 대한 참조를 생성하려고 시도, 예를 들어, barcom은 브라우저가 말하지만, OK, barcom은 자기가 아닙니다

Barcom은 이와 같은 일련의 도메인에도 속해 있지 않습니다 따라서 브라우저는 단지 말할 수 있습니다 나는 그 요청을 앞으로 허용하지 않을 것이다 그래서 이것은 실제로 매우 강력한 메커니즘입니다

실제로 더 세분화 된 컨트롤을 지정할 수 있습니다 이리 당신은 말할 수 있습니다, 내 이미지는 여기에서 온다 내 스크립트는 여기서부터 시작해야합니다 이것은 실제로 꽤 좋다

이것에 대해서 좋은 점도 하나 있습니다 실제로 인라인 JavaScript를 방지한다는 것입니다 따라서 스크립트 태그와 리터럴 자바 스크립트를 사용할 수 없습니다 및 닫기 스크립트 태그 소스가있는 스크립트 태그에서 모든 것을 가져와야합니다

그래서 이것을 통해 검증 될 수 있습니다 또한 콘텐츠 보안 정책 eval과 같은 위험 요소를 방지합니다 따라서 eval은 기본적으로 웹 페이지를 허용합니다 동적으로 생성 된 JavaScript 코드를 검사합니다 따라서 CSP 헤더가 지정된 경우, 브라우저는 evals를 실행하지 않습니다

그렇게 모든 것이 의미가 있습니까? 관객 : 그것은 일종의 임시 방편이기 때문에, 그것은 그것 [부적절한]의 완전한 세트와 같은 것입니까? 교수 : 아닙니다 전체 리소스 목록이 있습니다 그것은 실제로 그것을 보호합니다 그래서 이것은 가장 포괄적 인 유형 보호 장치와 같습니다 너는 얻을 수 있었다

하지만 내가 말했듯이, 실제로 당신이 CSS를 어디에서 가져올 수 있는지, 다른 것들을 잔뜩 들었습니다 관객 : 그러나 진실을 막는 데는 그럴 것 같습니다 시스템의 [INAUDIBLE]처럼 [INAUDIBLE] 다른 것들이 있습니까? 교수 : 그렇습니다 그래서 항상이 완전성의 문제가 있습니다

예를 들어, eval만이 유일한 방법은 아닙니다 JavaScript는 실제로 코드를 동적으로 생성 할 수 있습니다 예를 들어 함수 생성자가 있습니다 설정 시간 초과를 호출 할 수있는 특정 방법이 있습니다 문자열을 전달합니다

그런 식으로 코드를 평가할 수 있습니다 그래서 나는 CSP가 사실 벡터를 폐쇄한다고 믿는다 게다가 그러나 당신이 묻는다면, 이것은 조건면에서 입증 할 만합니다 그것이 분리시키는 것, 아니 그리고 나는 이러한 해결책들 중 어느 것도 생각하지 않는다

입증 될 만하다 관객 : CSP에 관한 한 가지 흥미로운 점 모든 인라인을 허용하지 않도록 설정할 수 있다는 사실입니다 [? dom?] 스크립트를 실행합니다 교수 : 네 맞습니다

그래, 그래 관객 : 어느 [? 도움이됩니까?] [INAUDIBLE]을 (를) 위생 처리해야합니다 교수 : 네 관객 : [INAUDIBLE]은 공격자가 – 교수 : 그래서 몇 가지 도움이됩니다 그러나 그것은 여전히 ​​[INAUDIBLE]이 eval을 사용할 수있게합니다

그래서 그걸 제거하려고하는 것이 중요합니다 그 모든 것들을 동적으로 그 모든 인터페이스 [? 동적 사용?] 코드 생성 관객 : 출처와 함께 태그를 나열하지만 그 다음에 인라인 코드, 표준화 된 [INAUDIBLE]이 (가) 있습니다 모든 브라우저는 – 교수 : 네 그래서 일어날 일은 인라인 코드 무시해야합니다

브라우저는 항상 코드를 가져야합니다 원본 속성에서 모든 브라우저가 그렇게하는지 실제로 모르겠습니다 나는 실제로 개인적으로 경험했다 브라우저는 다른 동작을 나타냅니다 [? 그걸로

?] 2 년 전이었는데, 확실하지 않습니다 그리고 그래 일을하는 것에 대해 염두에 두어야 할 것이 하나 있습니다 웹 보안에서 어떤 의미에서, 그것은 거의 자연 과학과 같습니다 그래서 사람들이 실제로 이론을 제안하는 것과 같습니다

브라우저의 작동 방식에 대해 알아보십시오 그리고 나서 당신은 그들이 그것을하는 것을 보러갑니다 그리고 그것은 약간 실망 스러울 수 있습니다, 우리가 배웠기 때문에, 예, 알고리즘, 증명, 그런 것들 그러나이 브라우저들은 너무나 나쁜 행동을합니다 시간의, 아마 또는 어쩌면 대답은 어쩌면

그리고 [? 너 우리가 보자 그들은 기능을 계속 추가합니다 그것에 대해 귀하의 질문에 다시, 이 모든 것들이 확실하게 완성 되었습니까? 나는 웹 벤더가이 개념을 만들어 냈다고 생각했다 입증할만한 브라우저 인 [INAUDIBLE] 기본적으로, 그들이하려고하는 것은 공격자보다 한 걸음 앞서 나가십시오

그리고 우리는 강의에서 더 많은 예를 보게 될 것입니다 그래 그래서 CSP는 실제로 꽤 좋습니다 또 다른 유용한 점은 서버가 이것을 설정할 수 있다는 것입니다 X-Content-Type-Options라고하는 HTTP 헤더, 그리고 말할 수 있습니다, nosniff

그래서 이것이 의미하는 바는 브라우저가 그 중 일부를 수행하는 것에서부터 따옴표 붙이기, 인용 부호를 붙이지 않고, 유용한 최적화, 우리가 마지막 강연을 토론했던 것처럼, 그것이 어디에서 말할 것인가, a-ha, 파일 확장명이 일치하지 않습니다 그리고 실제 [? 바이트?] 나는 그 내용에 냄새가났다 그러니 어떻게 든이 내용을 마사지하겠습니다 어떤 다른 것 갑자기 당신은 야만인들에게 열쇠를주었습니다

왕국에 그래서이 헤더를 기본적으로 말하도록 설정할 수 있습니다 브라우저, 그렇게하지 마십시오 이렇게하면 완화에 유용 할 수 있습니다 어떤 종류의 공격뿐입니다

괜찮아 그래서 그것은 일종의 빠른 설문 조사입니다 이러한 교차 사이트 스크립팅 취약점 중 이제 공격에 대한 또 다른 인기있는 벡터를 살펴 보겠습니다 그리고 그 벡터는 SQL이 될 것입니다 따라서 이러한 SQL 주입 공격에 대해 들어봤을 것입니다

그래서 이러한 공격은 사실을 이용합니다 백 엔드에서는 많은 웹 사이트에 대해 어떤 유형의 데이터베이스가 있습니다 그래서 동적으로 페이지를 구성합니다 사용자에게 표시되면 해당 백엔드 서버로 발행되는 일부 데이터베이스 조회 그래서 이렇게 보인 쿼리가 있다고 상상해보십시오

그래서 당신은 SELECT 별표를합니다 이 쿼리에서 모든 값을 FROM 일부 특정 테이블, 사용자 ID 필드 지정된 값과 같습니다 잠재적으로 신뢰할 수없는 소스로부터 웹을 통해 그래서이 시점에서 우리 모두는이 이야기가 어떻게 끝나는 지 알 것입니다 그것은 매우 심하게 끝납니다 생존자가 없습니다

그래서 기본적으로 이것이 신뢰할 수없는 사람에게서 오는 것이라면, 그럼 모든 종류의 [할 수 있습니까? 치커?] 물건은 여기 그래서 당신이 할 수있는 한 가지는 당신이 바보가되고 싶다면, 이 문자열을 0으로 설정할 수 있습니다 그런 다음 DELETE TABLE과 같은 것입니다 그럼 여기서 어떻게됩니까? 그래서 기본적으로 데이터베이스 서버는 말할 것입니다 OK, 사용자 ID를 0으로 설정합니다

다음은 일종의 새로운 명령입니다 DELETE TABLE 알았어, 응, 너의 테이블이있어 그리고 너 끝났어 실제로 바이러스 이미지가 있습니다

몇 년 전에 돌아갔다 그것이 사실인지 많은 사람들처럼 불투명합니다 이러한 바이러스 이미지 중 하지만 독일 사람들 실제로 0이라고 말한 번호판을 가지고 있었다 DELETE TABLE

[웃음] 아이디어는 보안 카메라, 그들은 OCR, Optical Character Recognition, 너의 번호판이 무엇인지 알아 내려고 SQL 데이터베이스에서 그리고 주변에 이미지가 떠있었습니다 이 Volkswagens 사람들은 이것은 그들의 번호판으로 그게 효과가 있는지 나는 모른다 웃긴다

그래서 저는 그것이 사실이라고 믿고 싶습니다 그러나 누가 압니다 그러나 당신은 그것의 기본 아이디어를 얻습니다 그래서 다시 한 번, 아이디어는 당신이 원하는 것입니다 당신이 얻는이 내용을 확실히 살리기 위해서 이러한 신뢰할 수없는 출처로부터

그리고 일종의 정렬이있을 수 있습니다 직선적 인 일들은 잘 작동하지 않습니다 그럼, 네가 생각할지도 모르지, 좋아, 그럼 왜? 여기에 다른 따옴표를 넣을 수는 없습니까? 여기에 다른 따옴표를 써서 공격자가 제출하는 것입니다 문자열로 묶인 다고요? 그래서 이것은 작동하지 않습니다 왜냐하면 공격자는 항상 자신의 공격 문자열 안에 따옴표를 넣으십시오

이렇게 많은 시간, 이러한 종류의 해피 해킹 당신이 생각하는 보안을 당신에게 줄 수는 없습니다 그래서 여기 해결책은 당신이 필요로하는 것입니다 데이터를 엄격하게 인코딩해야합니다 그리고 다시 한 번, 그것은 당신이 정보를 얻을 때 그것을 의미합니다 신뢰할 수없는 출처에서 그것을 붙이기 만하면 안된다

시스템의 종류 그대로입니다 예를 들어, 실제로 네가 생각하는 샌드위치 나 뭐니 뭐니해도 도망쳐 라 너는 실제로 들어갔다 예를 들어, 다음과 같은 Escape 함수를 사용하고자합니다 어쩌면 세미콜론을 막을 것이다

운영자가 원시 형식 및 이와 유사한 것으로 표시되지 않도록합니다 그리고 많은 웹 프레임 워크들 Django와 같은 것들은 실제로 라이브러리를 내장 할 것입니다 SQL 쿼리에 대해 유사한 문자 이스케이프 이 물건 중 일부를 막으려 고합니다 실제로 이러한 많은 프레임 워크가 있습니다 개발자가 직접 인터페이스하지 않도록 권장 데이터베이스와

그래서 장고 자체가 제공 할 것입니다 당신을 위해 위생 처리를하는 몇 가지 고수준 인터페이스 이 삐걱 거리는 구석의 경우를 처리합니다 그러나 성능, 성능, 성능 때때로 사람들은 이러한 웹 프레임 워크 너무 느립니다

그래서 당신은 여전히 ​​백 엔드에서 많은 시간을 보게 될 것입니다 사람들은 여전히 ​​원시 SQL 쿼리를 만들 것입니다 그리고 그것은 문제를 일으킬 수 있습니다 그래서 당신도 상상할 수 있습니다 웹 서버가 경로 이름을 사용하는 경우 문제가 발생합니다

신뢰할 수없는 이미지로부터 따라서 서버의 어딘가에 있다고 상상해보십시오 너는 이렇게 해 너는 열린 전화를 가지고있다 그리고 나서 당신은 당신이 가고 있다고 말합니다

WWW 디렉토리에서 읽기 거기에있는 이미지 하위 디렉토리에서 읽으려고합니다 그리고 나서 파일 이름을 읽으면 다시, 사용자가 제공합니다 그래서 우리는 [토론의 일부에서 보았던 것처럼? 트로트?] 이 파일 이름이 한 점의 점들과 같은 것으로 캐릭터? 따라서 신중하지 않으면 신뢰되지 않은 존재입니다 기본적으로 glub, glub, glub, glub, etc 비밀번호로 이동하여 여기에 악을 행할 수 있어야합니다

다시 한 번, 웹을 사용할 수 있기를 원한다면 서버 또는 웹 프레임 워크에서 이러한 위험한 문자를 탐지 할 수 있으려면, 그들을 막기 위해 어떤 방법으로 도망쳐 라 일종의 원시 명령을 실행합니다 그래, 모두 똑똑해 승인 콘텐츠의 토론에서 위생 처리, 이제 쿠키에 대해 조금 이야기 해 보겠습니다

그래서 쿠키는 매우 대중적인 방법입니다 바인딩하는 세션 관리를 할 사용자가 자원의 일부 집합에 이는 서버 측에 존재합니다 그리고 장고와 같은 많은 프레임 워크는 [? 동물원?] 이 수업에서 볼 수있는 것은 실제로 무작위 세션 ID를 쿠키 안에 넣으십시오 그래서이 세션 ID는 색인입니다 어떤 서버 측 테이블에

따라서 세션 ID를 입력하면됩니다 그리고 이것은 사용자 정보가있는 곳입니다 결과적으로이 세션 ID와 쿠키는 매우 민감한 개체입니다 그래서 많은 공격이 이루어집니다 쿠키를 훔쳐 가야한다

그 세션 ID를 얻으려면 그리고 마지막 강연에서 논의한 것처럼, 동일한 원산지 정책이 어느 정도까지 당신을 도울 수 있습니다 이러한 쿠키 훔치기 공격 중 일부에 대해서는 출발지 기반 규칙이 있기 때문에 쿠키로 임의로 변조되는 것을 방지합니다 하지만 조금은 미묘한 점이 하나 있습니다 도메인 또는 하위 도메인을 공유해서는 안된다는 것입니다

당신이 믿지 않는 사람과 지난 강연에서 논의한 것처럼, 이런 종류의 아주 미묘한 규칙들이 있습니다 동일한 도메인 또는 가능성이있는 두 가지 기원 일부 하위 도메인 관계는 실제로 서로의 쿠키에 액세스하십시오 그래서 당신이해서는 안되는 도메인을 신뢰한다면, 그 도메인은 직접적으로 같은 일을 할 수 있습니다 그 쿠키에 세션 ID를 설정하십시오 액세스 할 수 있습니다

그리고 그것은 공격자를 허용하는 것과 같은 일을 할 수 있습니다 사용자가 공격자의 세션 ID를 사용하도록 강제 고르는 그런 다음 예를 들어 공격자는 사용자의 Gmail 쿠키를 설정합니다 사용자가 Gmail로 이동하여 이메일을 입력합니다 나중에 공격자는 그 쿠키를 사용할 수 있습니다 또는 구체적으로 해당 세션 ID를 사용하십시오

Gmail을로드 한 다음 Gmail에 액세스하십시오 그 또는 그녀가 희생 된 사용자 인 것처럼 따라서이 쿠키를 사용하면 많은 미묘한 차이가 있습니다 세션 관리 용 쿠키에 관해 더 많은 이야기를 할 수 있습니다 우리는 오늘 그것과 마지막 강의에 대해 약간 의논 할 것입니다

쿠키를 없애도 될까요? 쿠키는 가치가있는 것보다 더 어려워 보입니다 처럼 [? 드리블 ?] 그래서 우리는 단지 이러한 쿠키를 가질 수 없습니까? 상상할 수있는 한 가지는 기본적으로 상상할 수있는 것입니다 무국적자 쿠키에 대한 개념이있다 어떻게 든 세션의 개념을 완전히 없애는 것 이 불쾌한 공격 벡터를 방지하고 모든 토론에서 널리 퍼져있는 것처럼 보입니다

우리가 가지고있는 기본 아이디어는 무국적자가되기를 원한다면, 그러면 이것은 본질적으로 당신이 가지고있는 것을 의미합니다 모든 요청을 인증합니다 쿠키에 대한 좋은 점 그들이 어디를 가든 기본적으로 당신을 따라 간다는 것입니다 그래서 한 번 인증하고 나서 이후에 요청할 때마다 이 작은 토큰이 있습니다

하지만 그걸 없애고 싶다면, 지금 당장 근본적으로 당신의 권위에 대한 증거가 있어야합니다 당신이하는 모든 요청에 그리하여 당신이 상상할 수있는 한 가지 방법이 있습니다 이것은 MAX 나 Message라는 것을 사용하는 것입니다 인증 코드

그리고 이러한 MAX 중 하나에 대해 생각하는 기본적인 방법은, 키를 가져 오는 해시와 같습니다 그래서 메소드 인증 코드 일부 키와 일부 메시지의 해시입니다 그래서 기본적인 아이디어는 클라이언트, 사용자, 서버가 몇 가지 비밀 키 k를 공유하려고합니다 그래서 클라이언트는 그 키를 사용하여 서명을 생성합니다 서버에 보내는 메시지를 통해 그리고 키를 알고있는 서버는, 그런 다음이 동일한 기능을 여기에서 사용할 수 있습니다

서명이 올바른지 확인합니다 승인 그럼 어떻게 작동하는지에 대한 매우 구체적인 예를 살펴 보겠습니다 따라서 이러한 유형을 사용하는 하나의 실제 서비스 상태없는 쿠키는 Amazon Web Services입니다 그래서 x3과 같습니다

기본적으로 아마존의 AWS는 각 사용자에게 두 가지를 제공합니다 해당 사용자에게 비밀 키를 제공합니다 그리고 이것은 k와 동일합니다 저기서 우리가 논의하고 있었던 그리고 그것도 그들에게 – 생각 만해라 AWS 사용자 ID와 같습니다

이 부분은 비밀이 아니지만이 부분은 비밀입니다 따라서 HTTP를 통해 AWS에 요청을 보내려 할 때마다 특수 형식으로 보내야합니다 따라서 GET 요청의 첫 번째 행을 갖게됩니다 그래서 몇 장의 사진에 액세스하고 싶습니다 여기에 놀라움이 없습니다

그리고 나서 당신은 당신은 그것을 얻기를 기대합니다 그것은 매우 중요하지 않습니다 따라서 여기에는 AWS 서버가 있습니다 데이트 할거야 아마도 6 월 4 일 월요일 일 것입니다

도대체 무엇이 그리고 나서 당신은 본질적으로 권한 부여 필드 그리고 이것이 메시지 인증 코드가 들어오는 곳입니다 그래서 본질적으로, 이것은 어떻게 생겼습니까? 여기에 문자열이 있습니다 이것은 사용자 ID 인 액세스 ID를 나타냅니다 그리고 여기에 뭔가가 있습니다

다른 겉으로보기에 임의의 문자 그리고이 모든 것들이 서명입니다 여기서이 메시지 인증 코드를 사용합니다 그 서명은 어떻게 생겼습니까? 따라서 세부 사항은 조금 복잡합니다 하지만 기본적으로이 서명은 문자열을 통해 발생합니다

이 요청의 세부 정보를 캡슐화합니다 그래서 기본적으로 할당 된 문자열 이런 식으로 보입니다 그래서 HTTP 동사를 입력하십시오 그래서이 경우 동사는 GET입니다 그런 다음 [? indy5?] 체크섬 메시지 내용의 그런 다음 콘텐츠 유형도 지정합니다

그래서 html 또는 이미지 또는 뭐든간에 그리고 데이트 신청 그리고 나서 본질적으로 경로 인 자원 이름 당신이 여기에서 볼 수 있습니다 다른 말로하면이 문자열은 여기에 있습니다 여기에있는 H MAC로 전달하는 메시지입니다

그리고 서버는이 모든 것을 볼 수 있습니다 요청에 일반 텍스트로 그래서 이것이 서버를 허용합니다 그 메시지 인증을 확인하는 코드가 정확했다 왜냐하면 서버가 사용자와 키를 공유하기 때문입니다 그래서 그것은 서버가 그런 종류의 것들을 유효하게하는 것을 허용합니다

그렇게 모든 것이 의미가 있습니까? 관객 : [INAUDIBLE]? 교수 : 오 따라서이 경우 콘텐츠의 경우, 아마도 빈 문자열처럼 아무것도 될 수 없습니다 하지만 그곳에는 게시물이나 그와 비슷한 것이 있다고 상상할 수 있습니다 실제로 HTTP의 데이터를 가지고 있습니다 관객 : 일종의 불행한 [비 숙녀] 요즘 선택

교수 : 그래서 그들은 그렇게한다고 믿습니다 어제 Amazon 문서를 확인했습니다 그래서 나는 그들이 그것을 사용한다고 생각합니다 그러나 나는 생각한다 나는 틀릴 수도 있지만, 나는 그들이 실제로 생각한다

여기에 더 강력한 해시를 사용하십시오 그래서 도움이됩니다 하지만 당신 말이 맞아 [? Indy5?]가 최선이 아닙니다 관객 : [무관 한]이 작품입니다

교수 : 좋습니다 그래서 내가 너를 도울 수있게, 잘하면, 내가 너를 혼란스럽게 한 녀석이긴하지만 처음에는 기본 아이디어는 우리가 원하는 것입니다 이 영구 쿠키의 개념을 없애려면 항상 사용자를 따라 다니십시오 이제 문제는 서버가 어떤 클라이언트와 대화하고 있는지 파악할 수있는 방법이 필요합니다 그래서 우리가 할 일은 각 고객이 서버와의 고유 한 키

그래서 기본적으로 클라이언트가 메시지를 보낼 때마다 서버에 클라이언트가 있습니다 전에 메시지를 보낸 다음 보내기 이 특수 암호화 연산, 이 작업의 결과는 여기에 있습니다 관객 : 오, 알겠습니다 [INAUDIBLE] 그리고 다시 해쉬합니다 교수 : 네

그래서 근본적으로, 첫번째 approximation까지, 규칙적인 세계에서의 상상처럼, 좋아, 여기이 쿠키가 될거야 승인 대신 하지만 이제 쿠키를 없애고 있습니다 여기에 일반 텍스트 메시지가 있습니다 그리고 여기에이 암호가 있습니다

기본적으로 서버가 알아낼 수 있습니다 이 사람이 누구에게서 왔는지 따라서 서버는 사용자가 누구인지 알고 있습니다 깨끗한 상태로 내장 그건 비밀이 아니지, 그렇지? 하지만 기본적으로 서버 to say, 아하, 나는이 비밀 키를 알고이 사용자 이걸 만들려면 사용 했어야했다

사실, 실제 사용자입니다 관객 : 좋았어 승인 감사 관객 : 그렇다면 공격자가 키를 찾지 못하게하는 것은 무엇입니까? 이 비밀 키는 어디에 있습니까? 교수 : 네, 좋은 질문입니다

따라서 많은 경우 AWS 용 클라이언트 브라우저가 아니지만 클라우드에서 실행중인 일부 VM, 예를 들면 따라서 VM 및 VM 통신 만 볼 수 있습니다 사용자들도 상상할 수 있습니다 이러한 링크를 일종의 손으로 정렬하거나 어떻게 든 HTML에 삽입 할 수 있습니다 그래서 당신은 이것과 같은 것입니다 – HTML 내부 또는 자바 스크립트 소스 코드를 사용하면 이런 요청을 만드십시오

그래서 나에게 당신에게 능력을주는 것과 거의 비슷합니다 그래서 내가이 일들 중 하나를 주면, 기본적으로 저를 대신하여 요청할 수 있습니다 관객 : 그렇다면 일반 고객의 MAC은 [INAUDIBLE]입니까? 교수 : 정상적인 경우 – 브라우저와 같은 뜻인가요? 청중 : 일반 사용자의 경우 교수 : 음, 내말은, 당신은이 질문들에 빠지게됩니다 좋아, 열쇠는 어디에서 살지? 였다 [? 어떤 종류의 것?] 그는 물었다

그래서 어느 정도 열쇠가 사는 곳의 문제 실제로 슈퍼, 슈퍼 중요합니다 키가 쿠키처럼 쉽게 도난 당할 수 있기 때문에, 그렇다면 우리는 일종의 사각형으로 되돌아갑니다 그래서 많은 경우에,이 물건은 실제로 단지, 내가 말했듯이, 일종의 서버 대 서버, 클라우드 어딘가에있는 VM에서 VM에 이르기까지 따라서 응용 프로그램 개발자가 실행됩니다 AWS에 저장된 물건을 여러 가지 아웃소싱하는 VM입니다

관객 : 그럼 당신은 [INAUDIBLE] 그런 종류의 나쁜 예방 방법이 아닙니다 내말은, 그들은 네트워크 대기 시간을 가지며, 너무 세밀한 구속 조건이 될 수는 없습니다 그들이 씌우고있는 것 공격자가 동일한 요청을 다시 신속하게 보내면 사용자가 후에 [INAUDIBLE] 할 수 없습니까? 교수 : 예, 예, 예 보안 타임 스탬프가 몇몇 사람들의 박사 학위 논문처럼

그러나 당신이 정확하게 말하면 그것은 마치 조잡한 예입니다 6 월 4 일 월요일에 이렇게 말한 것을 상상해보십시오

그런 다음 어떻게 든 공격자가 액세스 할 수 있다면 이 모든 일에 그것에 대해 다른 점은 아무것도 없습니다 그래서 아무 [? 노크,?] 그런 임의의 물건, 그렇다 그 요청은 [INAUDIBLE] 일 수 있습니다 이제 AWS가 실제로하는 일 중 하나는 실제로 만료를 포함 할 수 있습니까? 이걸로 데이트하세요 당신이 실제로 할 수있는 한 가지는 만료 필드의 정렬을 추가하십시오

그 일을 지명하게하십시오 그런 다음 나는 여러 사람들에게 그 참조를 넘겨 줄 수있다 그의 질문에 대한 대답으로 말한 것처럼, 그것은 기능으로 작동합니다 그런 다음 서버는 만료 날짜를 확인할 수 있습니다 실제로 그것을 본 다음 실제로는 – 관객 : 그러나 만료일 앞으로 200 밀리 초 또는 이와 비슷한 것입니다 공격자가 [INAUDIBLE] 대기 시간 동안 오래 동안, 그런 다음 그들은 [부적절한] 하나 대신에 2 부

교수 : 네 맞습니다 맞습니다 그래, 공격자가 어떻게 든 – 예를 들어, 네트워크 공격자와 같이, 이 일들이 전선을 지나가고있는 것을보고 있습니다 그리고 당신 말이 맞습니다

만료일에 충분한 흔들림 방이있는 경우, 그러면 그들은 그 공격을 정확하게 할 수 있습니다 맞습니다 승인 그래서이 상태없는 쿠키가 어떻게 작동하는지에 대한 개요입니다 재미있는 질문 하나가 있습니다

당신은 생각할지도 모르니, 음, 로그 아웃한다는 것은 무엇을 의미합니까? 이 종류의 쿠키가 있습니까? 그리고 대답은 당신이 정말로 로그 아웃하지 않는다는 것입니다 내 말은, 네가이 열쇠를 가졌다는거야 요청을 보낼 때마다 보내십시오 이 친구를 여기에 포함 시켜라 그리고 나서 당신은 갈 준비가되었습니다

이제 서버가 할 수있는 한 가지는, 예를 들어, 하지만, 당신의 열쇠를 취소합니다 그러면 서버가 사용자의 키를 취소합니다 그런 다음이 중 하나를 생성 할 수 있습니다 하지만 거기에 메시지를 보낼 때, 서버가 말하기를, 아하, 당신의 사용자 ID가 무엇인지 압니다 너는 폐지 되었으니 너의 요구를 존중하지 않을거야

그러나 그것은 약간 흥미 롭습니다 그리고 우리가 사물에 대해 더 이야기 할 때 취소 SSL과 마찬가지로 항상 까다로운 문제입니다 인간 사용자로부터 권위를 빼앗다 종종 그들에게주는 것보다 훨씬 어렵다 처음에는 이것이 이러한 종류의 기본 아이디어입니다

상태없는 쿠키 그래서 몇 가지 다른 것들도 있습니다 당신이 피하고 싶다면 사용할 수있는 인증을 구현하기위한 전통적인 쿠키 그래서 당신이 할 수있는 한 가지는 실제로 DOM 저장소를 사용하여 클라이언트 측 인증을 보유하고 있습니다 정보 이것은 "대안"을 말합니다

그것을 읽으십시오 ?] 그래서 당신이 할 수있는 한 가지는 DOM 저장소를 사용하는 것입니다 그 세션 상태의 일부를 유지하는 것 당신은 보통 쿠키를 넣을 것입니다 마지막 강의를 기억한다면, DOM 저장소는 본질적으로 핵심 가치 인터페이스입니다 브라우저가 각 원점에 제공하는 그래서 당신은 GET과 PUT 둘 다 key와 eval로 말할 수 있습니다

[? 문자열 ?] 그래서 인증을한다고 상상할 수 있습니다 거기 안쪽에 자, 이것에 대한 좋은 점은 실제로 DOM 저장소 존경심에서 훨씬 덜 엉뚱한 규칙을 가지고있다 동일한 원산지 정책으로 그래서 그것이 쿠키라면, 당신은 할 수 있습니다

이러한 모든 트릭과 하위 도메인 및 그런 것들 좀 이상해 DOM 저장소는 실제로 하나의 원본에 엄격하게 묶여 있습니다 이 하위 도메인 확장을 수행 할 수 없습니다 그 모든 종류의 물건

Meteor와 같은 프레임 워크는 DOM 저장소를 사용합니다 바로이 이유 때문입니다 하지만 이제 인증을 저장하려면 DOM 저장소의 정보, 그 다음엔 JavaScript 코드를 직접 작성하여 실제로 전달해야합니다 서버에 대한 인증 정보 [? 암호화?]가 필요합니다 등등

그래서 그것이 당신이 할 수있는 한가지입니다 당신이 할 수있는 또 다른 일은 실제로 클라이언트 측 인증서를 사용하십시오 예를 들어, x509 형식과 같습니다 그리고이 인증서들에 대해 좋은 점이 무엇입니까? 기본적으로 JavaScript에는 명시적인 인터페이스가 없습니다

이런 일에 접근하십시오 쿠키와 달리 항상이 군비 경쟁이있는 곳 이 이상한 동일 출처 버그를 찾기 위해, 그 물건에 대한 명시적인 JavaScript 인터페이스는 없습니다 보안 관점에서 볼 때 매우 좋습니다 제가 간단히 언급 한 한 가지 문제 우리는 나중에 강의에서 더 자세히 살펴볼 것입니다 그것 [? 가게?] 이런 일에 힘든 일입니다

따라서 사용자가 조직을 떠나면, 어떻게 그들의 인증서를 되시겠습니까? 그리고 조금 까다로워집니다 또한, 이러한 것들은 훌륭한 사용성을 가지고 있지 않으며, 누가 인증서를 여러 장 설치하려고하기 때문에 당신이가는 각 사이트에 대해? 결과적으로 이러한 것들은 많은 마찰을 가지고 있습니다 이들은 기업을 제외하고는 인기가 많지 않습니다 또는 보안에 민감한 조직 일 수 있습니다 괜찮아

그래서 쿠키에 대한 토론을 마칩니다 이제 프로토콜의 취약점에 대해 이야기 해 봅시다 웹 스택에 그래서 재미있는 공격의 종류가 하나 있습니다 도중에이 모든 버그가 있다는 것입니다

다른 브라우저 구성 요소가 URL을 구문 분석하고, 예를 들면 그렇다면 URL 구문 분석을 사용하면 어떻게 문제가 생길 수 있습니까? 그래서 우리는 다음과 같은 URL을 가지고 있다고 가정합니다 HTTP는 examplecom에서 제공됩니다 그리고 명시적인 포트가 80이라는 것을 지정합니다

그리고 몇 가지 알려지지 않은 이유로, 이 @ 문자를 여기에 삽입합니다 그래서 질문은 글쎄, 원점은 무엇인가? 이 특정 URL? 결과적으로 플래시는 이 호스트 이름 부분이 examplecom이라고 말하면됩니다 그러나 브라우저가이를 구문 분석 할 때, 원산지의 호스트 이름 부분 실제로 foocom이었습니다

그래서 이것은 분명히 나쁜 것입니다 혼란스러워하는 두 개의 다른 실체가있다 동일한 자원의 출처에 대해 그러면 모든 종류의 불쾌한 문제에 빠질 수 있습니다 예를 들어, 플래시 코드는 악의적 일 수 있으며 examplecom에서 물건을 다운로드 할 수 있습니다

그것이 foocom에서 페이지에 삽입 된 경우, 그러면 거기에 악한 일을 할 수 있습니다 그리고 examplecom에서 코드를 가져옵니다 foo

com의 권한으로 실행하십시오 복잡한 구문 분석 규칙이 많이 있습니다 그렇게하면 인생이 어려워집니다 이것은 계속되는 주제입니다 우리가 방금 내용 위생 처리를 통해 보았던 것처럼 – 그래서 그것은 훨씬 더 나은 기본 아이디어입니다

이런 종류의 물건에 대한 간단한 파싱 규칙을 갖기 돌이켜 보면 그렇게하기가 어렵습니다 HTML이 이미 있기 때문에 그래서 모두 wam bulance에 탑승했습니다 그럼 다음은 실제로 내 시간으로 가장 좋아하는 보안 취약점

그래서 그것은 기본적으로 브라우저를 공격하는 방식입니다 [? 규칙 1?] JAR 파일, 기본적으로 Java 애플릿 그래서 2007 년, 제 생각 엔 2007 년입니다 그래서 lifehackercom – 위대한 웹 사이트 네가 그것에 간 적이 없다면 Lifehackercom은 기본적으로 설명합니다

이미지 안에 ZIP 파일을 삽입하는 방법 이제 누가 너를 시도하는지 분명치 않다 이렇게하면 숨길 수 있습니다 그러나 Lifehacker는 당신이 그렇게 할 수 있다고 말합니다 그래서 기본적으로 그들이 활용하는 것은 사실입니다

예를 들어, GIF와 같은 이미지 형식을 보면, 일반적으로 파서가 작동하는 방식은 파서입니다 위, 아래에서 작동합니다 따라서 헤더의 정보를 찾습니다 그리고 나머지 비트들에 대해 여기에 일종의 계산을합니다 이제 흥미로운 점은, 밝혀진 바와 같이, 일반적으로 ZIP 파일을 조작하는 프로그램 아래에서 위로 작업하십시오

그래서 그들은 파일의 바닥 글에 몇 가지 정보를 찾습니다 그런 다음 내부의 내용을 추출하려고합니다 Lifehacker가 기본적으로 말했던 것 합병시 ZIP 파일을 숨기려면 또는 이와 비슷한 것을 사용하면 실제로 GIF를 게시 할 수 있습니다 여기에이 ZIP 파일이 있습니다 Flickr 또는 기타의 모든 유효성 검사를 통과합니다

이미지로 실제로 브라우저에 이미지로 표시됩니다 아하,하지만 당신은 숨겨진 진실을 알고 있습니다 이 파일을 여기로 가져 가면 압축을 풀어서 압축을 풀 수 있습니다 거기에 [INAUDIBLE] 정보의 압축을 풉니 다

좋아, 이건 마치 싸구려 가게 같아 장난 그래 그거 괜찮다 이제 공격자는 절대로 자지 않습니다 그들은 우리의 삶을 망치고 싶다

그래서 그들은 무엇을 깨달았습니까? 그들은 JAR 파일이 기본적으로 유래 물이라는 것을 알고 있습니다ZIP 형식 그래서 이것은 당신이 실제로 GIF 또는 이미지를 만들었습니다 JAR 파일, 실행 가능한 JavaScript 코드, 그것의 바닥에

그래서 사람들은이 공격을 호출했습니다 그들은 그것을 GIFAR 공격이라고 불렀습니다 [웃음] 절반의 GIF, 절반의 JAR, 모든 악 이것은 대단했기 때문에 그래서 당신이 할 수있는 것이 무엇을 의미합니까? 음, 실제로는 아주 미묘합니다

사람들이 이것을 처음 발견했기 때문에, 그들은 그것이 훌륭하다라고 생각했다 그러나 그들은 아주하지 않았다 그것을 악용하는 방법을 알아라 그러나 밝혀진 바와 같이 다음과 같은 일을 할 수 있습니다 먼저 무엇을 어떻게 만드십니까? 당신은 CAD를 사용합니다

말 그대로 아무 [? 속임수?] 네가해야할 일이야 가져가, 가져가, CAD 해 붐, 당신은 GIF / JAR을 가지고 있습니다 그래서 일단 그렇게하면, 당신은 무엇을 할 수 있습니까? 음, 일부 민감한 사이트가 있습니다 사용자가 데이터 제출을 허용하고, 임의의 유형의 데이터는 아닙니다

그래서 [불충분 한] Flickr 또는 무엇인가 이런 식으로, 당신이 임의의 ActiveX를 제출하는 것을 허용하지 않을 수도 있습니다 또는 무엇이든, 임의의 HTML 그러나 그것은 당신이 심상을 복종시키는 것을 허용 할 것이다 그래서 당신이 할 수있는 일은 이러한 것들 중 하나를 구성하는 것입니다, 이러한 민감한 사이트 중 하나에 제출하십시오 이미지를 제출할 수 있습니다

그리고 나서 당신은 무엇을 할 수 있습니까? 음, 다음으로해야 할 일은 네, 당신이하는 첫번째 일은 당신이이 물건들 중 하나를 제출하는 것입니다 민감한 [? 주기

?] 그리고 나서 당신이 할 수있는 다음 일은 XSS 공격이있는 경우입니다 사이트 간 취약점이있는 경우 당신은 무언가를 주입하기 위해 크로스 사이트 스크립팅을 사용할 수 있습니다 이런 식으로 그리고 이사회 운영이 열악하기 때문에, 나는 이것을 여기에 그릴 것이다 따라서 애플릿을 삽입하고, JavaScript 코드를 작성하고, 그것의 종류의 소스로서, 당신은 단지, cats

gif라고 말합니다 그리고 이것에 대해 흥미로운 점은 무엇입니까? 이 코드는 크로스 사이트 스크립팅을 사용하기 때문에 취약점은 취약한 사이트의 컨텍스트에서 실행됩니다 이것은 취약한 사이트의 출처에 업로드되었습니다 그래서 이것은 같은 기원 시험을 통과 할 것입니다 그러나이 코드는 공격자가 지정했습니다

이제 침입자가 피해자의 컨텍스트에서 Java 애플릿을 실행합니다 그 원산지의 모든 권한을 가진 사이트 GIFAR이 취약한 사이트의 이미지를 통과 시켰음에도 불구하고 유효성 검사 코드 이 중 하나가 실제로 올바르게 GIF로 구문 분석 하지만 여기에 숨겨진 코드가 있습니다 그리고 브라우저가 시도 할 때 [INAUDIBLE] 다시 JAR 부분을 실행하려면, 그것은 바닥에서부터 시작해서 여기 올라오고, 그 부분을 그냥 무시합니다

그래서 이것은 실제로 꽤 놀랍습니다 그래서 상당히 간단한 방법이 있습니다 이런 식으로 고칠 수 있습니다 예를 들어 실제로 애플릿 로더를 실제로 가질 수 있습니다 여기에 임의의 쓰레기가 있어서는 안된다는 것을 이해하십시오

예를 들면 많은 경우에 일어난 일은 정보가 있다는 것입니다 말하는 메타 데이터에서, 여기에이 자원의 길이가 있습니다 그리고 길이라고 말하면, 여기에서 멈 춥니 다 그들은 단지 나머지가 무엇인지 누가 말할 것인지를 말할 것입니다

아마도 0 일 것입니다 그러나이 경우에는 그렇지 않았습니다 내가 이것에 대해 좋아하는 것은 그것이 정말로 소프트웨어 스택이 웹용으로 얼마나 넓은지를 보여줍니다 그래서 GIF와 JAR의 두 가지 형식을 취하는 일종의, 실제로이 불쾌한 공격을 실제로 만들 수 있습니다 실제로 PDF에서도이 작업을 수행 할 수 있습니다

여기에 PDF를 넣을 수 있습니다 나는 그것이라고 불렀다라고 생각한다, [? PDFR?] 공격 또는 이와 비슷한 것 그래서 사람들은 하루 동안 이것으로 하루를 보냈습니다 이 취약점은 현재 폐쇄되었습니다 관객 : 그러면이 공격으로 무엇을 할 수 있습니까? 너는 [INAUDIBLE]로 할 수 없다

XSS 또는 귀하 자신의 [비 숙주]입니까? 교수 : 그래서 좋은 일이 예, 예 그럼 좋은 질문입니다

그래서 이것에 대해 좋은 점은 Java가 종종 발생한다는 것입니다 일반 자바 스크립트를 실행하는 것보다 더 강력 할 수 있습니다 그것은 약간 다른 규칙을 가지고 있기 때문에, [? 같은 근원?] 정책과 그런 물건 [INAUDIBLE] 더 낮은 수준의 액세스 권한 얻기 파일 시스템이나 그런 것들에 그러나 당신이 맞습니다

만약 당신이 크로스 사이트 스크립팅을 할 수 있다면, JavaScript를 실행하는 것은 이미 꽤 위험합니다 그러나 이것의 주요 이점은, 다시 한 번, 애플릿 내에서 실행됩니다 괜찮아 네 그렇게 말했듯이 그것은 내가 좋아하는 모든 시간의 공격입니다

주로 진지한 보안을 강요했기 때문에 주로 개인은 항상 GIFAR라고 말합니다 그러니 너가 나 자신처럼 쉽게 즐겁다면 이것은 당신을위한 대범이었다 흥미로운 또 다른 것 실제로 공격이 있다는 것입니다 시간을 기준으로합니다 시간을 자원으로 생각하지 않을 수도 있습니다

공격을위한 벡터 일 수 있습니다 그러나 내가 몇 분 전에 누군가와 토론하고 있었을 때, 예, 시간은 실제로 시스템이 악용 될 수있는 방법 일 수 있습니다 그래서이 공격들은 – 특정 공격 나는 너와 얘기 할거야 은밀한 채널 공격의 구체적인 예입니다 그래서 은밀한 채널 공격의 아이디어 근본적으로 공격자입니다

두 가지 응용 프로그램에 대한 몇 가지 방법을 찾았습니다 정보 교환 그리고 그 교환 벡터는 공식적으로 승인 된 것이 아닙니다 벡터 공격자는 어떻게 든 다른 부분을 활용합니다

정보의 비트를 전달하는 시스템의 서로 다른 두 개체 사이 그래서이 물건의 좋은 예입니다 CSS 기반 스니핑 공격이라고하는 것입니다 그럼이 공격은 무엇에 관한 것입니까? 그래서 공격자는 사용자가 방문 할 수있는 웹 사이트를 가지고 있습니다 다시 한 번 사용자가 웹 사이트를 방문하도록 유도 실제로는 대개 꽤 간단합니다

당신은 광고를 만듭니다 그들에게 피싱 이메일을 보내십시오 따라서 공격자는 사용자가 방문하는 웹 사이트를가집니다 그리고 공격자의 목표는 배우는 것입니다 사용자가 방문한 다른 웹 사이트 그리고 공격자는 여러 가지 이유로이 사실을 알고 싶어 할 수 있습니다

어쩌면 그들은 어떤 종류의 검색어 사용자가 찾고있는 어쩌면 그들은 알아 내려고 노력 중일 것입니다 그 사람이 고용되어 있거나 어쩌면 그들은 그들이 어떤 타입에 접근했는지 알고 싶다 당황스러운 물질의 등등 그러면 공격자는 어떻게 할 것입니까? 공격자가 제어하는 ​​유일한 경우 사용자가 방문하도록 유도 할 수있는 웹 사이트입니까? 음, 링크 색상을 활용하는 것이 악용입니다 그래서 당신은 웹 페이지에 갈 때처럼 알고 있습니다

링크를 클릭하면 다음 번에 해당 링크가 표시됩니다 그것은 이제 다른 색깔입니다 따라서 실제로는 보안 상 취약합니다 그것이 의미하는 바는이 공격자 웹 사이트에서, 공격자가 당신을 속여 당신을 방문하게 만들 수 있다면, 공격자는 엄청난 수의 후보 URL 목록을 생성 할 수 있습니다 네가 방문했을 수도 있고 JavaScript를 사용하여 해당 URL의 색상을 확인하십시오 그리고 URL 색상이 자주색이면, 아하, 당신은 그 사이트를 방문했습니다

그래서 이것은 매우 미묘했습니다 그리고 이것에 대해 흥미로운 점은 무엇입니까? 많은 경우에 URL을 표시 할 필요조차 없다는 것입니다 사용자에게 도미노를 생각 해낼 수 있습니다 특정 href가 있고 그것의 작풍을 다만 본다, 방문한 색상인지 아닌지 확인하십시오 그래서 이것은 실제로 꽤 미묘합니다

그래서 당신은 생각할 수도 있습니다 모두를 통해 스캔하는 것이 비효율적이 될 것입니다 이 후보 URL은 무엇입니까? 우리는 모든 종류의 똑똑한 최적화를 할 수 있습니다 예를 들어, 여러 번 패스 할 수 있습니다 첫 번째 패스에서는 사용자가 최상위 URL을 방문했는지 확인하십시오

cnncom, Facebookcom 등등 대답이 '예'라면 그 히트들에 깊이 우선 탐색을해라 당신이 최상위 레벨에서 발견 한 그래서 당신은 실제로 실제로 제약 할 수 있습니다

이 방법으로 검색 공간 그래서 이것은 정말로 재미있었습니다 당신이 유머 감각이 있다면, 왜냐하면 그것은이 매우 무해한 특징 브라우저가 지원합니다 그들은 단지 당신을 도우려는 것입니다 그들은 말하고 싶어, 이봐, 친구, 여기가 당신이 방문한 곳입니다

실제로이 매우 위험한 정보를 나타낼 수 있습니다 그래서 이것을위한 해결책은 무엇입니까? 그래서 실제로, 브라우저 [? 주자?] 않았다 브라우저가 자바 스크립트에 종속되도록 만든 것입니다 링크 색상에 대해 기본적으로 JavaScript가 링크를 보려고 할 때 그리고 그 스타일을 보면, 브라우저는 항상 방문하지 않는다고 말한다 승인

그래서 그것은 다소 불행한 것처럼 보입니다 하지만이 공격을 막을 수 있습니다 그래서 나는 우리가 그것으로 살 수 있다고 생각한다 자바 스크립트가 링크 색상을 읽을 수 없다 세상의 종말

그래도 끝났어? 이것은 공격자의 문제를 해결합니까? 너 어디 있었는지 알아낼 수 있니? 대답은 물론 아닙니다 그래서 공격자가 할 수있는 다음 공격 캐시 기반 공격입니다 그리고 여기 직관은 다시 한번, 목표입니다 동일합니다 공격자는 귀하가 방문한 사이트를 알고 싶어합니다

익스플로잇 벡터는 그 정보입니다 캐시 된 파일은 더 빨리 액세스 할 수 있습니다 사실, 캐시하는 이유가 전부입니다 처음에는 다시 한 번, 공격자는 공격자가 생각하는 후보 객체 목록 당신은 방문한 다음 시간을 보냈을 것입니다 그 물체가 얼마나 빨리 공격자에게 돌아 오는 지

그리고 물체가 빨리 돌아 오면, 너 알지? 너는 약간을 필요로 하는가?] 문지방, 공격자는 당신이 실제로 전에 그 물건들에 가봤습니다 그럼 그게 말이 되니? 다시 한번 브라우저는 당신을 도우려는 것입니다 그러나 이러한 기술을 활용하여 어떤 사악한 지식 그리고 이것에 대해 흥미로운 점은 무엇입니까? 이 공격은 실제로 활용할 수 있다는 것입니다 매우 흥미로운 지리적 위치 정보

Google지도 타일에 대한 공격을하고 있다고 상상해보십시오 예를 들면 그래서 네가 실제로 일련의 Google지도 타일에 액세스했습니다 그건 아마 네가 그 장소에 있다는 것을 의미한다 또는 다른 사람들에게 관심이 있습니다

그곳에 있을지도 몰라 따라서 실제로는 매우 강력한 공격입니다 그래서 확인 그럼 이걸 어떻게 고칠 수 있니? 글쎄, 이건 분명하지 않다 전혀 캐시하지 않는 사이트가있을 수 있습니다

그러면 사이트가 느려질 것입니다 그런 종류의 엿 같은 따라서이 문제를 어떻게 해결할 지 명확하지 않습니다 하지만 괜찮아 우리가 여기에 놓인 방어력을 가지고 있다고 가정 해 봅시다

자바 스크립트는 링크 색상을 읽을 수 없습니다 사이트가 슈퍼라고 가정 해 봅시다 편집증은 아무것도 캐시하지 않는다 그래서 우리는이 공격으로부터 완전히 자신을 지켰습니까? 일초 그래서 대답은 '아니오'입니다

공격자가 실제로 DNS 기반 공격 그래서 직관은 당신이 아무것도 캐시하지 않더라도, 언제 당신은 처음으로 리소스에 액세스합니다 당신은 호스팅을위한 DNS 요청을 생성해야합니다 해당 자원과 연관됩니다 다시 한 번, 공격자는 시간 내에 볼 수 있습니다

공격자가 얼마나 오래 걸리는 지 확인하십시오 공격자가 생각하는 이러한 후보 객체에 액세스하려면 당신이 접근했을 수도 있습니다 그리고 그들이 빨리 돌아 오면, 그것은 아마도 당신이 DNS를 낳았다는 좋은 암시 전에 그 호스트의 이름 그리고 이것은 비록 당신이 아무것도 캐시하지 않더라도 작동합니다, 왜냐하면 DNS 캐시는 브라우저가 아닌 OS와 함께 있기 때문입니다 관객 : 당신이 언급했습니다, 나는 마지막 수업, 능력 스크린 샷을 찍으려면 JavaScript를 얻으십시오

교수 : 예, 예 관객 : 그러면 [? 링크?] 단일 픽셀로 캡처 한 다음 스크린 샷을 찍습니다 그 픽셀은 [INAUDIBLE]입니까? 교수 : 네 네가 그렇게 할 수있어 그래서 렌더링 물건은 항상 조금 까다 롭습니다

당신이이 게임을해야하기 때문에 사용자에게 무엇인가를 보여주고 싶다면, 그것은 정말로 빨리 번쩍해야합니다 아니면 다른 사람이 들어오는 것을 볼 수도 있습니다 이 엄청난 URL 목록 하지만 당신 말이 맞아

화면 공유 API에 액세스 할 수있는 경우, 많은 것이 훨씬 더 간단 해집니다 관객 : 어떤 종류의 애니메이션 이미지가 있다면 대부분 무작위로 보입니다 그것의 1 화소에주의를 기울이십시오? 교수 : 당신 말이 맞습니다 일반적으로 화면 공유 API는 나쁜 생각이야 나는 세계의 대통령이 아니므로 어떻게해야합니까? 어쨌든 그렇게하더라도 DNS 기반 공격은 발생하는 캐싱이 없습니다

승인 그래서 마지막 조각으로 저항, 생각할 것입니다 그렇습니다 원시 IP 주소 만 사용한다면 어떻게 될까요? 우리 호스트 이름 전부? 우리는 일을 캐시하지 않습니다! 승인? 그리고 노출되지 않는 업데이트 된 브라우저에서 실행 중입니다 색상을 JavaScript에 연결하십시오

그래서 우리는 괜찮습니다 나는 네가 괜찮지 않다는 것을 알기 위해 여기에있다 공격자가 실제로 할 수있는 것 렌더링 공격을 이용합니다 기본 아이디어는 일반적으로 더 빠릅니다 방문한 URL을 렌더링하는 방법 다양한 엉뚱한 이유로 브라우저 [INAUDIBLE] 렌더링 방법을 다루어야합니다

[INAUDIBLE] 내부 그래서 공격자가 실제로 할 수있는 것은 실제로 후보 iframe 만들기, 거기에 콘텐츠를 넣으려고합니다 공격자가 당신이 방문했다고 생각한 다음 공격자가 해당 iframe에 액세스 할 수 없는지 지속적으로 확인합니다 iframe이로드 될 때, 브라우저는 일반적으로 iframe을 공격자의 페이지에 속합니다 그리고 그 다른 원산지 내용 들어 오면 이러한 액세스 오류가 발생합니다

왜냐하면 지금은 다른 원산지 [INAUDIBLE] 이제 공격자는 더 이상 만질 수 없습니다 따라서 공격자는 이와 같은 일을 여전히 할 수 있습니다 캐싱, 렌더링 정보가 있는지 확인합니다 이 후보 사이트에 대해서는 [INAUDIBLE] 브라우저를 사용하십시오

그렇게해서 어쨌든, 그것들은 유일한 희망과 꿈입니다 오늘 너를 때리고 싶다 나는 우리가 시간이 없다고 믿는다 하지만 다음에 너를 볼거야

best web frameworks for python

– CleverProgrammercom 우리는 실제로 살아 있습니다

누군가가 물었다는 질문을하고 싶었다 내 마지막 생동감 중 하나에서, "안녕하세요, Qasi, Python을위한 최고의 웹 프레임 워크는 무엇입니까?" 그리고 나는 2019 년에 추가 할 것입니다 그러나 이것들은 2019 년뿐만 아니라, 이것들은 수년간의 일종입니다 그러니 반드시 그런 것은 아닙니다, 제가 생각하기에, 내 대답은 2020 년에도 여전히 동일 할 것입니다 이것이이 비디오에서 우리가 이야기 할 내용입니다

그래서 더 이상 고민하지 말고 바로 들어가 봅시다 그리고 너희들이 들어 오기를 바란다 채팅에서 질문을 버리십시오 우리가 살기 때문에 당신이 지금 살고 있다면 일단 질문을하면, 내가 이것을 기록하도록 돕고있는 나의 친구 Frankie 그들이 좋다면 당신의 질문을 읽을 것입니다

그리고 나는 그들에게도 대답 할 것이다 하지만 그렇게 말하면서 최고의 웹 프레임 워크는 무엇입니까? 그래서, 저에게는 두 가지가 있습니다 내가 토론하고 싶은 웹 프레임 워크 네가 토끼 구멍으로 내려갈 수 있기 때문에 이 모든 것들을 모두 찾으십시오 피라미드와 그 모든 것들 하지만 두 가지 주요 문제에 대해서만 이야기하고 싶습니다 하나는 플라스크라고합니다

그리고 다른 하나는 호출됩니다 우리 프로그램의 학생들 중 한 분 유익한 지름길은 말한다, 그의 이름은 도니 다 Donny가 말했듯이, De-Jango 그러나 이것은 실제로 장고로 발음됩니다 그래서 당신은 장고를 가지고 있고 당신은 플라스크를 가지고 있습니다

그것들은 제가 토론하고 싶은 두 가지 주요 것들입니다 이제 Flask의 장단점에 대해 이야기 해 봅시다 그래서 플라스크, 플라스크에 대해 좋은 점은 정말 가볍기 때문에 여기에 넣을 것입니다 가볍고, 정말 가볍습니다 플라스크에 대한 또 다른 멋진 점은 많은 것이 없다는 것입니다

마술이 계속되면서 나는 마술을 말하지 않을 것이다 당신은 무슨 일이 일어나고 있는지 깊이 이해할 필요가 없습니다 그래서, 그것은 쉽습니다 이해하다 플라스크에 대한 또 다른 좋은 점입니다 그리고 그것들은 몇 가지 주요한 것들입니다 나는 플라스크에 관해서 이야기하고 싶다 Flask로 코딩 할 때, 모든 것이 의미가 있습니다

보기를 어떻게 라우팅합니까? 많은 의미가 있습니다 모든 것이 매우 간단합니다 그래서 나는 그것에 대해서 그것도 확실히 추가하고 싶다 그것은 매우 간단합니다 그리고 이것은 여러분이 시작한다면, 나는 실제로 말할 것이다

웹 개발에 대한 완벽한 초보자로서, 당신은 분명히 플라스크로 몇 가지 일을해야합니다 다른 웹 프레임 워크로 이동하기 전에 자, 당신이 그걸로 진보 된 것을 할 수 없다는 말은 아닙니다 초심자가 될 수 있습니다 플라스크에서 여전히 진보 된 것들을 할 수 있습니다

그래서 당신이 할 수 없다는 것을 의미하지는 않습니다 Flask를 사용하는 몇몇 큰 회사가 있습니다 그리고 당신은 여전히 ​​그것으로 정말 놀라운 것들을 할 수 있습니다 그래서, 당신이 초보자이든 고급이든간에, 이 프레임 워크, 웹 개발 프레임 워크 좋은 사람이 될거야 마술은 그리 많지 않습니다

이해하기 쉽습니다 정말 가볍고, 오지 않아요 우리가 배터리라고 부르는 것을 가지고, 그래서이 모든 다른 것들이 설치되어 있지 않습니다 정말 가볍습니다 그렇다면 우리는 장고를 가지고 있습니다

이 마커에는 어느 마커를 사용해야합니까? 녹색을 많이 사용하기 때문에 Django가 좋아하는 Django의 주 테마 색은 녹색입니다 내가 장고에 대해 좋아하는 것

우선, 그들의 슬로건은 굉장합니다 그 완벽 주의자들을위한

와 마감일 그래서 그것은 매우 차갑고 최고의 번호입니다 마감일을 가진 완벽 주의자를위한 것입니다 마감 시간을 가진 완벽 주의자들, 가능한 빨리 물건을 얻고 싶습니다 그래서, 플라스크, 그건 가볍고, 끝내 주네

하지만 고객을 위해 일한다고 가정 해 봅시다 클라이언트는 상관 없어 당신은 플라스크 프레임 워크 또는 장고를 사용합니다 그들은 단지 프로젝트 완성을 원한다 이것은 당신이 그것을하도록 허락 할 것입니다 장고가 프로젝트를 더 빠르게 빌드 할 수있게 할 것입니다

포함 된 배터리가 포함되어 있기 때문입니다 따라서 기능이 내장되어 있습니다 알다시피, 관리자 웹 사이트를 만들면 WordPress에서 어떻게되는지 알 수 있습니다 당신은 그때에 접근 할 수 있습니다, 웹 사이트를 만들 때 자동으로 가서 블로그 게시물을 바꿀 수 있고, 당신은 새로운 게시물을 추가 할 수 있습니다, 당신은 그것에 그림을 추가 할 수 있습니다, 당신은 스팸 코멘트를 관리 할 수 ​​있습니다, 당신은 captcha를 추가 할 수 있습니다, 관리자 인터페이스에서이 모든 작업을 수행하십시오

당신은 거기 앉아서 PHP를 직접 코딩하지 않습니다 당신은 실제로 포인트 앤 클릭 인터페이스를 사용하고 있습니다 Django는 관리자 인터페이스가 내장되어 있습니다 당신이 클라이언트와 일할 때 정말 멋지 네요 너는 그걸 앱 오른쪽으로 넘겨주고 싶어

당신이 끝났을 때 그들은 많은 것들을 사용할 수 있습니다 관리 인터페이스에서 좋습니다, 이것은 플라스크에 대해 실제로 처음부터 만들 필요가있다 반면 Django에서는 내장되어 있습니다 이제 Django에는 많은 배터리가 포함되어 있습니다

그래서 꽤 무게가 나가는 프레임 워크입니다 그것은 내장 된 많은 기능을 제공합니다 그래서 그것은 또한 함께 제공됩니다 관리자 인터페이스가 내장되어 있습니다 그래서 정말 멋진 동안 당신은 많은 일을 더 빨리 끝낼 수 있고, 때때로 일어나는 일은 바로 이해하기가 쉽지 않습니다 내가 어떻게 마술을하지 않았는지 알 겠어? 장고에서 우리는 마술이라고 부르는 것들이 많이 있습니다

무슨 일이 벌어지고 있는지 이해하기가 더 어렵습니다 너무 많은 물건을 끌고 있기 때문에 이미 설치된 패키지 및 모듈에서 가져 오기 코드가 마술처럼 보이게합니다 그래서 그것이 우리가 말하는 이유입니다 어떤 것들은 신비스럽게 보일 수도 있습니다 알다시피, 그들은 당신이 처음부터 어떻게 행동 하느냐가 아닙니다

그래서 Django의 경우 Flask에 대한 기본 지식을 습득하면됩니다 당신은 일종의 계속 갈 수 있고 많은 문제를 겪지 않을 수 있습니다 Django를 사용하면 이러한 문제가 발생할 수 있습니다 해결하기가 더 어려워서 매우 신비 롭습니다 그래서 그것이 내가 말할 것입니다

이것은 여전히 ​​초보자를 위해 작동하지만, 너가 그것을 이해하지 못할 것 같지 않아 누군가 당신에게 설명해 주겠지 만, 일단 플라스크를 지나면 기본적인 웹 개발이 어떻게 작동하는지 이해하고, 플라스크가 너에게 더 쉬울 것 같아 개념을 이해하기 좋아요, 이해하는 편이 낫습니다 그래서 저는 이것을 쓸 것이고, 저는 여기에 쓸 것입니다

개념 전체를 이해하는 것이 더 쉽습니다 Flask를 사용한 웹 개발 개념 그러나 일단 당신이 그것을 이해한다면 너는 실제로 여기 들어올 수있어

그리고 당신도 알다시피, 나는 중간체에 대해 말할 것입니다 당신이 초심자이더라도, 뻗기의 종류 친절한, 당신은 장고를 배우기 시작할 수 있고 당신은 그것을 얻을 것이다 그렇게 어려운 것은 아닙니다 그리고 비디오 코스도 있습니다 그것은 유튜브에있다

그것은 절대적으로 무료 다 2018 년에 Python Django 튜토리얼을 살펴볼 수 있습니다 말하자면 2019 년에 만들 수 있습니다 나는 그것이 멋질 것 같아 그래서 중간 단계가 있고 이것은 또한 진보 된 사람들에게도 정말 좋습니다

이제 저는이 두 가지의 이점을 설명했습니다 하지만 제 개인 의견도 드릴 것입니다 나는 너에게주는 이론 교사가되고 싶지 않아 찬반 양론은 이제 괜찮아 질거야 내 개인 취향과 내가 좋아하는 웹 프레임 워크 Django입니다

좋아요, 제가 가장 좋아하는 틀입니다 오, 미안 해요, 배터리가 전화로 죽을 거예요 그래서 우리는 모든 것이 괜찮은지 확인하고 있습니다 아직도 살아있는거야, 우리는 여전히 의견을 받고 있는가? 들어올 물건이 뭐든간에? 좋아 미안, 얘들 아

일단 연결되면 알려주세요 좋은? 우린 괜찮아? 시원한 좋아, 이제 얘기하고 싶어 왜 장고가 내가 좋아하는 프레임 워크인가 내가 일할 때 나는 물건을 빨리 만들고 싶다

이렇게하면 빠르게 구축 할 수 있습니다 자, 당신이 처음부터 모든 것을하고 있기 때문에, 당신이하고있는 일을 이해하는 것이 더 쉬울 것입니다 천천히 물건을 만들거야 당신이 빌드해야하기 때문에 너무 많은 기능 기스로부터 반면 여기, 당신이 구축 할 많은 기능, 본질적으로 그것의 많은 것이 내장 될 것이다 그래서 당신은 매우 빨리 물건을 정리할 수있게 될 것입니다

그래서 그것이 내 개인적인 취향입니다 내가 할 수있는 것에 대해 더 신경을 쓰고, 나는 개발자로서 더 생산적이되고 싶다 그리고 개발자로서 더 생산적이라면, 그러면 물건을 빨리 만들 수 있습니다 그리고 코드를 더 빨리 배송 할 수 있다면, 나는 잠재력이있다 내 고객의 요구를보다 신속하게 충족시키기 위해, 그러므로 나는 더 빨리 돈을 받고 더 많이 돈을받을 수 있습니다

더 많은 고객과 일할 수 있습니다 그리고 그것이 Django를 좋아하는 이유입니다 매우 실용적입니다 그리고 그것은 내가 정말로 빠른 것을 할 수있게 해줍니다 당신이 완전히 시작하고 이해하지 못한다면 웹 개발의 개념, 이건 너 혼란 스러울지도 몰라

하지만 기본적인 튜토리얼을 통해 갈 때, 미구엘의 훌륭한 가이드가 있습니다 미구엘, 그의 이름은 뭐니? Miguel의 flask 튜토리얼을 타이핑하면, MIGUEL, 당신은이 서사시적인 웹 개발 튜토리얼을 얻을거야 플라스크를 사용하여 작성되었습니다 그리고 너는 그것의 종류를 통과 할 수있다 그리고 당신은 정말로 이해하기 시작할 것입니다

웹 개발의 개념 일단 당신이 그걸 통과하면 당신은 정말로 그것을 이해합니다 당신이 깨닫게 될 것, 장고에서 같은 일을하는 것, 세상에, 너무 쉬워 모델을 어떻게 구축 할 수 있는지, 어떻게 모든 것이 데이터베이스와 자동으로 작동하는지, 보기간에 코드를 이해하는 방법 그리고 당신의 모델과 그 모든 것 정말 아름답습니다 당신이 정말로 빨리 일을 할 수있게 해줍니다

그리고 장고의 ORM은 개인적으로 생각합니다 이해하기 쉽다 빠르게 물건을 만들 수있게 해줍니다 그러나 다시, 얘들 아, 내 개인적인 취향이야, 모두가 자신의 개인적 취향을 가지고 있습니다 그래서 아래 채팅에 드롭 가장 좋아하는 웹 프레임 워크는 무엇입니까? 그것은 플라스크인가? 아니면 장고입니까? 왜 그걸 좋아하니? 나는에서 배우기를 원하기 때문에 당신의 관점도

그래서 어떤 질문이 들어 오나요? 채팅이 없나요? 무슨 일이 일어나는지 보자 – [Cameraman] 좋아, Django는 미래가있다 게시하는 것이 무료입니까? – 예, 들어올 물건이 있어요 왜 나 한테 아무 말도하지 않는 이유를 모르겠다 좋아요, 공개 할 수 있습니까? 예, Flask와 Django는 무료로 게시 할 수 있습니다

또한 Django는 미래가 많으며 Flask도 마찬가지입니다 이 두 가지 모두 미래가 많습니다 미래가 다 끝난 것은 아닙니다 좋아, 그럼 2019, 2020, 2021, 어쩌면 2021에 다른 프레임 워크가있을 수도 있습니다 그러나 당신이이 개념을 이해한다면, 당신은 괜찮을 것입니다

장고로 지어진 많은 대기업이 있습니다 그리고 플라스크 그리고 그들은 그들의 틀을 바꾸지 않을거야 2020 년과 2021 년의 원인일까요? Instagram의 경우 코드의 상당 부분이 장고에서 작성됩니다 그것은, 그들은 단지로 전환하지 않을거야 그런 다른 프레임 워크

그것은 많은 시간과 노력이 필요하다 시간과 코드 및 개발자 시간과 돈을 그리고 너도 알다시피, 그들은 그것을 바꿀 수 없을거야 많은, 몇 년 후, 예 – [카메라맨] 그들은 큰 데이터를 가지고 무엇이 더 나은지 묻습니다 – 그래, 큰 데이터로 어느 것이 더 낫지? 다시 말하지만 원하는 프레임 워크를 선택할 수 있습니다

하지만 나는 개인적으로 장고를 다시 선호 할 것이다 왜냐하면 나는 더 빨리 물건을 만들 수 있기 때문입니다 큰 데이터로 작업 할 때, 그건 플라스크 나 장고가 아니야 특별히 큰 데이터로 더 많은 일을 할 수있게 해줄 것입니다 큰 데이터의 경우 사용 방법을 알아야합니다

Matplotlib과 같은 다른 유형의 라이브러리 너는 해고를 알아야한다 그리고 너는 그 다른 것들이 무엇인지 알 필요가있어, 판다, 그래서 나는 그것을 쓸 수 있지만 나는 그저 보드를 갖고 싶다 우리 목적을 위해 이렇게 하지만 다른 라이브러리가 있다는 것을 알고 있습니다 당신이 이해하고 배우는 것이 필요합니다 그런 다음 구현할 수 있습니다

이러한 프레임 워크 중 하나로 따라서 큰 데이터를 처리하는 경우, 그 중 하나가 다른 것보다 더 좋아할 것 같지 않습니다 그러나 이러한 일반적인 원칙 여기에서 설명한 설명은 여전히 ​​적용됩니다 – [카메라 맨] 시작하는 것이 더 낫다고 생각하니? 장고와 함께 또는 플라스크와 함께? 그래, 네가 완전한 초보자라면, 플라스크 먼저 물건 좀 해 그게 너를 이해하게 해줄거야 알다시피, 나는 이해하기 쉽고 간단하다고 말했다

그래서 초보자라면 웹 개발으로는 아무 것도하지 않았습니다 플라스크 먼저 몇 가지 일을해라 그러면 웹 개발이 어떻게 작동하는지 이해할 수 있습니다 그리고 나서 장고로 가면 당신은 할 수있을거야 그것이 얼마나 강력한지를 보는 것 얼마나 빨리 물건을 집어 넣을 수 있느냐에 달려 있습니다

너가가는 것에 흥미가 있으면 장고 개발자되기 풀 스택 개발자가되어, 우리가 가지고있는 Profitable Programmer 코스 영리 프로그래머가 당신을 도와줍니다 그래서 그것이 당신이 관심을 가지고있는 것이라면, CleverProgrammercom에 그냥 넘기세요 거기에 귀하의 이메일과 이름을 입력하십시오 이 세 가지 서사시 교육을 보내 드리겠습니다

이 서사시적인 마스터 클래스를 무료로 보내 드리겠습니다 놀라운 가치를 결정하고 그것을 사랑한다면 Profitable Programmer 과정에 참여하고 싶다면, 너를 본질적으로 만들거야 전체 스택 장고 웹 개발자 좋아요, 그래서 그것이 당신을 가르치는 것입니다 또한 처음 몇 가지 프로젝트를 다룹니다

플라스크 (Flask)를 사용한 첫 번째 프로젝트 중 하나 웹 개발 방법 이해하기 Django를 사용하여 당신을 이동시킵니다 Django 풀 스택 개발자가되었습니다 다른 – [Cameraman] 최고의 IDE for Python? 알았어, 최고의 IDE, 내가 설명해 줬어

내 다른 동영상 중 하나는 PyCharm입니다 나는 그것이 정말로 좋다라고 생각한다, 예 – [Cameraman] 최고의 프런트 엔드 프레임 워크, Django, Vue JS 또는 React? – 프론트 엔드 프레임 워크의 경우, 장고 나는 프론트 엔드 프레임 워크라고 생각하지 않는다 내가 틀렸다면? 이것은 백엔드 프레임 워크와 비슷합니다 프런트 엔드의 경우, 나는 React와 함께 일하지 않았다

나는 Vue JS와 함께 일하지 않았다 하지만 나는 많은 사람들이 정말로 좋은 것을 말하는 걸 들었습니다 내 경험으로 볼 때 더 많은 사람들이 보았다 React가 Django와 어떻게 작동하는지 그래서 나는 거기에 큰 대답을 줄 수는 없다

그러나 경험을 바탕으로 나는 React로 시작한다고 말할 것입니다 장고와 함께 네가 할 수있는 걸 보아라 알았어 그런 다음 Vue로 앞으로 이동하십시오 – [Cameraman] 내가 배울 필요가 있니? 큰 데이터를위한 웹 개발? – 큰 데이터를 위해 웹 개발을 배울 필요가 없습니다

그러나 종종 웹 개발이 도움이 될 수 있습니다 네가하고있는 많은 것들이 웹에서 많은 일을해야합니다 하지만 아니, 그렇게 할 필요는 없습니다 하지만 알다시피, 내가 큰 데이터를하고 있다면, 나는 데이터 과학자가 되려고 노력하고있다 나는 웹 사이트를 가질 수 있기를 바란다

그 데이터를 시각화하고, 데이터를 표시하고, 데이터베이스에 물건 저장, 사람들에게 로그인 및 로그 아웃 기능 제공 그래서 그들은 데이터를 볼 수 있고, 데이터를 저장할 수 있으며, 그리고 그 모든 것 그리고이를 위해 웹 개발에 대해 알아야합니다 또한, 웹 개발은 쉬운 입장입니다 돈을 받고 프로그래머가되기 시작하면, 큰 데이터, 첫 번째 직업으로 들어가기가 훨씬 더 어렵습니다 그래서 그것이 당신의 첫 직업이라면, 웹 개발은 조금 더 쉬운 길일 것입니다 목표에 부합 할 수도 있습니다

여전히 큰 데이터로 일하는 것 그래서 제가 큰 지지자입니다 먼저 웹 개발을 시작하십시오 그런 다음 다른 일들을 계속하십시오 큰 데이터 및 데이터 과학을 좋아합니다

우리가 얻은 건 그 밖에 뭐가 좋은거야? 좋아, 얘들 아, 우리가 감쌀거야, 우리가 간단하게하고 싶어, 나는 너를 위해 꽤 자주 생계를 유지하려고 노력하고 싶다 도움이 되었다면 지금 바로 의견을 보내주십시오 또는 실시간 채팅에서 이것이 당신에게 도움이 되었다면 그리고 만약 그렇다면 우리는 이것들을 더 많이 할 것입니다 그리고 우리는 누가 아론을 가졌습니까 대부분의 기술 교육을 수행하고 있습니다

그들은 논평하고, 어떤 것을 말하고 있습니까? – [카메라맨] 대단히 감사합니다 – 차갑고, 그런 것들이 우리에게 알려줄거야 그들이하는 말 – [카메라맨] 대단히 감사합니다 – 진정해

– [Cameraman] Boda 프레임 워크는 어떻습니까? 고마워 고마워 – 좋아 알았어, 너를 돕는 것 같아 너희들 여기와 주셔서 고맙습니다, 정말 고마워요

우리가 할 애런이있어 많은 기술 교육 나는 부드러운 기술과 협상에 더 초점을 맞추고 싶다 어떻게 프리랜서 작업을 실제로 할 수 있는지, 어떻게 실제로 일자리를 얻을 수 있습니까? 인터뷰를 다루는 방법, 그게 제가 주로 집중하고 싶은 부분입니다 어떻게 다른 개발자를 가질 수 있습니까? 당신을 위해 프로젝트를 수행하도록 그들을 관리하십시오

채널이 열심히 기술적 인 훈련을 받고있는 곳, 너는 나 한테 부드러운 기술 훈련을받을거야 그리고 우리는 또한 새로운 프로그램으로 나올 것입니다 그 프로그램이 호출 될거야 파이썬으로 물건을 자동화하는 법, 나는 정말로, 정말로, 정말로 흥분한다 너희들은 그것에 대해 더 많이 알게 될거야

일이 진행됨에 따라 정말 커다란 무언가가 될거야 정말 놀라운 것 하지만 그래, 그 말로, 여기 계신 것에 대해 감사드립니다 즐거웠기를 바랍니다

이 비디오가 마음에 들면, 아직 채널을 구독하지 않았다면 채널을 구독하십시오 언제나처럼, 나는 너의 얼굴을 사랑한다 다음 비디오에서 뵙죠 와우!

Functions in Python | How to Create Functions in Python | Python Functions Explained | Intellipaat

이 세션에서는 다양한 유형의 사이트를 만들고 호출하는 방법에 대해 알아 보겠습니다 함수를 파이썬에서 사용합니다

이제 기능에 대해 배우고 배우십시오 그럼이게 뭐지? 기능 함수는 조직 된 재사용 가능한 명령어 집합의 블록입니다 관련 작업을 수행하는 데 사용되는 하지만 왜 기능이 필요한가요? 만약 당신이 프로그램을 써야한다면 어떨까요? 동일한 코드 세트를 반복해서 사용해야합니다 예를 들어 20 라인 또는 40 라인의 코드와 그 40 라인의 코드가 메인 10 곳의 다른 장소에서 프로그램을 작성하면 40 줄의 코드 10을 사용해야합니다

프로그램에서 다른 시간 그래서 나는 네가 아무도 없을 것이라고 생각하지 않는다 동일한 코드 줄을 반복해서 작성하는 데 관심이 있습니다 그러기 위해서 작성한이 문제점을 해결하십시오 이렇게 잘 함수는 여러분이 생각할 수있는 코드를 작성하는 블록입니다 다시 한번 언젠가는 코드의 재사용을 허용하고 따라서 중복을 최소화합니다

파이썬에서는 기본적으로 두 가지 유형의 함수입니다 첫 번째는 정의 된 사용자이고 두 번째는 기능에 내장되어 있습니다 보자 그들 하나씩 하나씩 그래서 사용자 정의 함수는 무엇입니까? 사용자가 정의한 모든 함수는 사용자 정의 함수입니다 통사론 그 후에 키워드 def로 시작하여 함수 이름에 대한 식별자와 그런 다음 인수를 세미콜론 이후에 올 바른 순서로 전달합니다

그 안의 진술서는 괜찮다고 말할 수 있니? 예제를 보자 예를 들어 두 개의 인수를 추가하여 함수를 광고로 정의하려는 경우 그리고 내부 광고를하면 두 개의 매개 변수를 A와 B로 전달하므로 합이 A와 B가 같고 반환됩니다 약간 그게 다야 에 대한 사용자 정의 함수를 정의하는 것만 큼 간단합니다

당신 그것은 키워드 def로 시작하는 것과 같습니다 그 후에 함수를 작성합니다 그 안에 광고로 이름 붙여진 두 개의 인수 A와 B를 세미콜론으로 전달할 것입니다 함수는 A와 B 모두 합계를 반환해야합니다

좋아요, 그래서 내 사용자 정의 함수입니다 다음은 Built in 함수입니다 이제 이러한 내장 함수는 미리 정의 된 집합입니다 파이썬의 함수들 우리는 ABS 기능을 가지고 있습니다 숫자 값

우리는 모든 아이템과 아이템이 반복 가능한 객체가 참입니다 우리는 어떤 함수, ascii 함수, bin 함수, bool 함수 및 다른 많은 내장 함수가 Python에서 사용할 수 있습니다 더 많은 정보를 원한다면 Python을 확인해 보라 공식 문서 이제 함수를 정의했습니다

우리가 어떻게 함수를 호출 할 수 있는지 보겠습니다 그래서 함수를 호출하면 잘 두 가지가 있습니다 함수를 호출하는 방법 값을 전달하여 호출하거나 참조를 전달합니다 하나씩 참조하십시오

그래서 먼저 값으로 전달됩니다 값을 전달하여 함수 호출 예 : 10과 동일한 def 키워드입니다 함수를 print로 정의하면 B의 값은 B이고 다시 함수의 내부에 있습니다 우리는 B의 값을 100으로 갱신하고 B의 새로운 값을 출력합니다 B를 누른 다음 당신이하고있는 것을 바꾸면 우리는 A

을 전달할 것입니다 가 10 이었으므로이 함수는 B의 값을 10으로 취하므로 B의 인쇄 값 10이고 B의 새로운 값은 100입니다이 문제를 해결하기 위해 당신을 보여 드리겠습니다 이슈는 값을 같은 10으로 정의하자 내 기능을 정의하다 나는 B 인자로서 인자를 전달할 것입니다

B의 값은이다 비 그러면 B 값을 다음과 같이 갱신 할 것입니다 백 프린트 B의 새로운 가치는 B 좋아요, 이것이 제 기능입니다 지금 내가하는 일? 함수를 호출하는 값을 전달하여 함수를 호출합니다

가치를 전달함으로써 좋아, 내 함수와 내부에 값을 A로 전달할 것이다 의 10이었다, 출력을 보자 보세요, 그래서 우리는 B의 값을 출력으로 얻습니다 10이고 B의 새로운 값은 100입니다 그래서 이것은 지나가는 함수를 호출하는 것입니다

그 다음 값은 참조로 전달됩니다 예를 들어 참조를 전달하여 함수를 호출하면 목록이 생깁니다 c = 10 20 30으로 변경하여 함수를 정의하고 있습니다 인수 D를 전달합니다 함수 내에서 D의 프린트 값은 d, D 0이면 숫자 상수입니다

우리는 99 D를 1로 정의하고 98을 다음과 같이 정의합니다 D의 값을 인쇄 한 다음 D를 변경하십시오 이제 우리가 함수를 호출 할 때 참조를 전달함으로써 우리가하는 일은 우리가 전체를 전달하는 것입니다 그것의 목록 ​​그래서 우리는 출력을 얻습니까? 얻을 것이다 d의 값으로서의 출력은 1020 및 30이고, d의 새로운 값은 99 및 98이다 한 가지 예를 보여 드리겠습니다

C = 10 쉼표 20 쉼표 30 = 맞습니까? 이제하자 이 함수 안에서 내 함수 2를 정의한다 인쇄 D의 값은 모두 괜찮습니까? 다음으로 D와 같은 숫자 리터럴을 정의합니다 0은 99, D는 1, 98은 인쇄 D의 새로운 가치는 다시 d 좋아,이 함수는 참조로 전달을 사용하여 내 함수를 호출하면 지금 내 함수입니다 내 함수 2와 나는 값 C를 전달하므로 우리가 무엇을 얻을 수 있는지 보자

출력으로 D의 값이 10 20 30이고 D의 새 값인 출력을 얻습니다 99 98 & 30 fine입니다 계속 나아 갑시다 caller와 callee가 참조로 매개 변수를 전달할 때 콜리가 매개 변수를 수정하는 경우 매개 변수에 대한 동일한 변수 변수 효과는 collars 변수에서 볼 수 있지만 매개 변수가 값으로 전달 된 호출자와 호출 수신자는 품질이 매개 변수를 수정하는 경우 동일한 값 효과는 그렇지 않습니다 칼럼에 눈에 잘 띄어 야합니다

이 정의는 잘 가변 볼트는 qualit 웨어러블을 의미합니다 로컬 변수를 참조로 전달한 것처럼 그 자체로는 할당되지 않습니다 그 Kalles 변수 자체를 지정하십시오 참조의 의미는 무엇입니까? 참고로 잘 전달하면 일반 용어와 다릅니다 이 참조는 임시적이고 암묵적인 것임을 참고하십시오

기본적으로 get은 원래의 것과 같은 방법으로 사용되는 변수입니다 여기 화면에 참조로 지나가는 패스의 아주 좋은 예가 있습니다 당신이 컵을 채우고있는 참조에 의한 모든 가치 통과 컵의 참조를 사용하여 당신이 실제로 채우고있는 값으로 전달합니다 몇 가지 값을 사용하여 컵 그래서 당신이 함수를 정의 할 수있는 방법에 대한 모든 Piketon에서 전화하는 방법 퀴즈로 돌아가서 다음 함수를 테스트 해 봅시다 두 개의 매개 변수와 첫 번째 하나를 인쇄하므로 누락 된 코드를 채우지 만 누락 된 코드 내 정의 함수는 이름을 취하는 코드는 무엇입니까? 성이 인쇄되어야하며 의견 섹션에 답변을 게시하십시오 아래에서 확인하고 우리와 함께 확인하십시오

여보 다음 질문은 누락 된 코드에 X 매개 변수에 10을 모두 더한 값을 반환합니다 내 함수를 X로 정의하고 작성해야하는 전체 함수를 작성하십시오 실험 플러스 10을 반환하고 함수를 다시 게시하는 함수입니다 아래의 의견란에 답을 입력하고 올바른지 또는 아니 유사하게 우리는 네 번째 질문을 가지고있다 우리가 가지고있는 과일 우리는 열매가 사과와 바나나와 체리로 순수한 큐폴라를가집니다

if 망고와 과일은 다음 트렌드 3 플러스 4 다른 2로 2 인쇄 아래의 주석 섹션에 다음 코드의 출력을 다시 인쇄하십시오 질문 번호 홀리 파이썬에서의 람다 함수에 대해 논의 해 봅시다 람다 함수 잘 람다 함수는 작은 익명 함수 람다입니다 함수는 여러 개의 인수를 취할 수 있지만 하나만 가질 수 있습니다 expression note 람다 함수가 둘 이상을 가질 수 없다는 사실 표현식은 다음과 같습니다 lambda 인수 : expression 예를 들어, X가 같고 람다가 같고 더하기가 더한 경우 10과 X의 5를 인쇄하면 기본적으로 람다를 정의하는 것입니다

인수로 전달 된 숫자에 10을 더한 다음 인쇄합니다 그 결과로 내가 너에게 notebook은 λ 함수를 X로 정의하자 동등한 람다 a의 10을 더한 다음 X를 인쇄하면 그 값은 5가됩니다 그래서 출력이 5 플러스 10이되어야한다고 생각하십니까? 당신은 5에서 10으로 바뀌면 출력은 20이 될 것입니다 앞으로 나아가 자 다음 함수 대 람다 함수입니다 그래서 우리는 무엇입니까? 여기에서 람다 함수와 함수를 비교하면 두 개의 인수를 취하여 다음과 같은 곱셈 결과를 반환하는 일반 함수입니다

그것들과 여기 둘 다 우리와 같은 람다 함수입니다 X가 Y를 곱한 것과 같은 람다 X 쉼표 Y와 우리가 12 쉼표 3 물은 12 x 3의 결과를 반환합니다 즉 36 일 것입니다 예를 들어 노트북을 통해이 에너지를 보여 주겠다 de f 내 팀을 내 팀으로 지명하겠습니다

여기서 두 개의 인수를 x와 y로 전달합니다 : 이제 x와 y의 곱을 돌려 주자 이제 내가 이것에 대한 람다 함수를 정의해야한다면, 나는 Z와 같이 쓸 것이다 동등한 람다 X comma Y와 같아서 X에 Y를 곱한 것과 같음 이걸 테스트해라 print Z를 쓸 것이다

나는 두 개의 값을 건네 줄 것이다 12 쉼표 3 36을 올바르게 돌려 주어야합니다 그래야 출력을 36으로 잡았습니다 다음은 람다 함수의 힘이다

람다 함수의 힘은 당신이 그들을 사용할 때 더 잘 보여진다 예를 들어 익명 함수가 다른 함수 안에 있다고 가정 해 보겠습니다 하나의 인수를 취하고 그 인수는 알 수없는 숫자로 곱하면됩니다 예를 들어, n lambda를 반환합니다 a plus n 그래서 당신은 변수를 정의하고 있습니다

내 합계는 3의 함수 예를 들면 같습니다 seinäjoki 노트북에서 내 기능을 정의하다 반환해야하는 n과 같은 인수를 전달합니다 람다는 그 도끼를 말한다 꿀 이제이 함수 정의를 사용하여 항상 다른 함수를 만들 수 있습니다 당신이 보내는 번호를 두 배로 늘리면, 예를 들어 두배를 쓸 수 있습니다

내 기능이 같아서 내 기능을 두 배로하고 싶다 두 개는 2로 곱해야합니다 이제는 어떤 숫자로 곱해야합니까? 그래서 나는 두 배로 12 배를 받았다 그래서 두 배로 나왔다 12 번 출력은 24 배가되었다

3 배로 바꾸고 싶다면 3 배로 바꾸면 36 배가됩니다 등등 홀리 그래서 이것은 람다 함수에 관한 모든 것입니다 그것은 자신의 오른쪽 람다 함수를 인수로 B와 C를 합한 것입니다 그 결과 노트 포스트를 답안에 아래의 코멘트 섹션은 다음의 결과물을 퀴즈합니다 내 함수와 반환 람다에 내 W 내 테이블 11 내 기능은 매우 간단하게 우리는 방금 토론 했으므로 주석에 답을 게시하십시오

아래 섹션은 괜찮아요 그래서 람다 함수에 관한 것이 었습니다 이 세션은 의심 할 여지가있는 경우에 대비하여 24/7 텔레파시로 연결할 수 있습니다 우리는 조만간 귀하의 질의를 해결하려고 노력할 것입니다

Grofers web scraping using python

여보세요 안녕, 알았어 안녕하세요 친구

좋은 아침 Ronnie 다시, 그래서 Steph 오늘 논의했다 어떻게 할 수 있는지 보여 드리겠습니다 officecom 웹 사이트에서 또한 인기있는 웹 사이트 중 하나를 대부분 차지했습니다 고객과 같은 구매 가정용 스토브 또는 다른 어떤 식료품 점에서와 같은 느낌이 든다

당신이 좋아하는 제품이나 식료품과 관련된 것 주로 여기에 웹 사이트를 열면 예를 들어 국내 및 상업 목적을 위해 그들은 이렇게 보입니다 그는 재고가 많은 제품이었습니다 우리에게 레벨 업을하는 것은 재미있을 것입니다 미래의 데이터 세트 또는 데이터 모델, 언제 우리처럼 시작할 것인가? 약간 기계 학습이나 심화 학습 또는 일부 데이터 분석과 관련된 의사 결정 작업 우리가하는 활동 강제로 할 수 있습니까? 우리가 스크랩 할 첫 번째 것 총 제품 수와 같음 가격 나는 이것이 재미있을 것이라고 생각한다

좋아요, 각 제품에 따라 변형 수가 다를 수 있습니다 예를 들어, 이것은 두 가지 변종과 예를 들어,이 제품은 단 하나의 변종입니다 그래서 이것은 또한 재미있을 것입니다 이것이 실제로 어떻게 보이는지 보겠습니다 분리 된 이 제품 카테고리를 통해

그래서 그는 무엇을 할 것인가? 어쩌면 이름 – 브랜드를 스크랩하십시오 모든 제품에 브랜드가 있는지 여부가 확실하지 않습니다 예, 그들 중 몇몇은 브랜드를 가지고 있지 않습니다 브랜드에 대한 정보가 없습니다 그래서 우리는 할인처럼 보일 것입니다

실제 가격 표시된 가격 나는 잘 모르겠다 어쩌면 너는 필요할지도 모른다 그들이 뭐든간에 가능하면이 살충제에서 긁어 낼 것입니다 그럼 실제로 어떻게 보이는지 보자 그래서 예를 들어, 조금은 사소한 일을 최소화하겠습니다

그건 그렇고, 내 몸은 이미 죽었어 수업에 참여한 학생 알았어, 알았어 의문의 여지가 있다면 차트를 보내주세요 Let 's Live Meeting 괜찮아? 좋아, 완벽 해

좋아, 그러자 알았어 이것이 무한 스크롤과 그 안에는 몇 가지 JavaScript가 있습니다 배상 일부 HTTP 요청 헤더와 매개 변수와 이것은 스타 일을하고있다 이것은 실제 이야기를하고 있습니다

그래서 우리가 만트라 닷컴으로 한 모든 일과 같이 마지막 비디오가 마음에 들지 않을 것입니다 페이지가있는 페이지의 고정 페이지 매김은 한 페이지와 동일합니다 이것은 조금 다를 것입니다 그리고 그것은 재미있을 것입니다 예, 우리는 몇 가지 어려움에 직면하게됩니다 더 많은 오류 또는 더 많은 예외가 재판에 부딪 힐 것입니다 하지만 어쨌든, 나는 이것을 수행 할 것입니다 걱정하지 마십시오 그래서 무언가가 존재하는지 아닌지 먼저 확인해 봅시다, 그것이 존재하지 않을 것이라고 믿습니다

괜찮아 그것은 거기에있다 그러나 이것은 아마 그것이 그렇다라고하는 것이 어쩌면 그것은 아마 일부에서 올 수있다 이거 괜찮은거야 여기에 간다 뭔가 여기에 올 것이다

너는 알았다 우리가 요청한 것 같습니까? 좋아요, 그래서 이것은 중요한 것입니다 어디서 실제로 그것은 더 크다 요청 URL입니다 괜찮아 이 매개 변수 또는 머리글 및 쿼리 매개 변수입니다

괜찮아 문자열 응답을 확인합시다 괜찮아 모든 것이 여기에 온 것을 보아라 잘못된 장소를 클릭하십시오 좋아, 그럼 이걸 목표로 삼자

전화해서 불렀다 그럼 내가 너에게 보여 줄게 이것은 전화입니다 직접 작성할 수 있습니다 요청을 통한 요청의 HTTP 요청 도서관 파이썬을 사용하지만, 다시 전체 코드를 다시 쓰지는 않을 것입니다

따라서 매우 좋은 코드가 하나 있습니다 웹 사이트, curl 명령을 입력하면 거기에 보여 드리겠습니다 이것을 파이썬과 같은 것으로 변환 할 것입니다 이처럼 타이핑을 피하십시오 모든 것이 실제로 보이면 여기에 있습니다

기음 이 모든 것을 인코딩하는 것은 크롬에서 나온 것입니다 그래서 그것은 단지이 헤더를 두 개로 바꾸는 것입니다 이것은 일반적인 코드 조각입니다 이것은 정상입니다 그래서 우리는 이것을 사용할 것입니다

걱정 마세요 시작하기 만하면됩니다 괜찮 았어? 알았어, 내가 다른 수입품을 가져올거야 나중에 부분 파일 몇 가지 괜찮아

좋아 어쩌면 시작합시다 인쇄 응답이므로 200을 반환해야합니다 먼저 실행 해 봅시다 응답이 커지고 있음을 의미합니다

우리에게 여분의 것, 나는 당신이 그것을 볼 것이라고 생각한다 좋아, 이상해 일부 인코딩을 완료해야합니다 이상한 일 이죠, 그렇죠? 괜찮아 좋아, 아마 내가해야 할 것 같아 오케이, 멋지다

그래서 그 중 일부는 전혀 필요하지 않다고 생각한다 먼저 체크하자 이것도 금이 간다 먼저 체크하자 예, 이것이 필요하지도 않은 것 같아요

이것은 또한 요구되지 않습니다 우리가 다른 세 가지를 중요하게 만들지는 못하지만, 이것이 필요한 것은 오직 우리가 할 수 있다고 믿습니다 만약에 – 또한, 어쩌면 몇몇을 논평하십시오 um 우리가 이것을 나중에 논의 할 지 모르겠다 하지만 지금은 이것이 우리의 전체 데이터입니다하지만 우리는 단지 좋아, 이거 야

카테고리 16 이것은 96 번호 제품부터 시작됩니다 다음 번에 48 번을 의미 할 때까지 번호 96 좋아,하지만 흥미로운 점은 카운트가 0이되도록해야한다는 것입니다 우리가 우리처럼 달릴 필요가있어 단 한번의 요청만으로도 제품을 보류 할 수있는 또 다른 시간을 요청합니다 우리는 전체 데이터를 얻어야한다

그래서 내가 뭘할지 어쩌면 하나 둘 폰 본문 이 데이터를 빠르게 인쇄하여 흥미로울 것이라고 생각합니다 괜찮습니다 여기에 던질만한 가치가있는 것을 선언하지 않았습니다 나는 그것을 지금 할 것이다 그래서 나는 나는 그것을 어둡게해야한다고 생각한다

나는이 메타를 사용해야한다고 생각한다 벌금 뭐, 이걸 여기 복사 해 돌아와야한다 결과 카운트 그래서 카운트 같음 2/3 나는 이것을 사용해야한다고 생각한다 이건 괜찮아

이것은 우리 일을 할 것입니다 나는 괜찮다고 생각해 이제 우리는 이것을 실행할 수 있습니다 의회 이 코드를 한 번 더 실행하려면이 코드를 복사하십시오 매개 변수가 함께 업데이트 됨 이 또 하나, 하나 였어, 알았어

쎄타 1은 2와 같다 제이슨 도트로드 였다 116 Turn SS가 한 번 더 인쇄 해 봅니다 나중에 하나 실행 해 봅시다 네, 모든 것이 괜찮습니까? 네, 다 괜찮아요

이제 너는 ~해야 해 좋아, 나는 생각한다 그러면 제품 부분이 실제로 여기에서 시작됩니다 여기에서 나온 제품을 확인하십시오 다른 데이터 가져 오기 그때 쎄타 1 생각하다 그리고 인쇄 그런 다음 여기부터 시작해야합니다

읽는 부분이이 부분에 관심이 있는지 확인해 봅시다 나는 데이터를 가져올 권리가 있다고 생각하십시오 미안 토양 친구들 오 나는 이것이 더 이상 필요하지 않다고 생각한다 반드시 필요한 것은 아닙니다

우리가 필요한 건? 모든 데이터 좋아 그럼 지금 이 파일을 하나의 파일에 쓰게하고 그 파일을 열면 그 다음에 한 가지를 확인해 봅시다 이 길이는 얼마입니까? 반환해야합니다 인쇄 그것은 같은 3 백 7 개의 항목을 반환한다 그러나 이유를 모르겠다는 이유를 알리는 답은 211 건입니다 네가 같은 데이터를 가지고있는 것 같아 단계 길이는 괜찮은지 이해하고 있습니까? 미안해하셔야합니다

그것은 단지 타이밍을위한 것입니다 이상한 점, 확실하지 않습니다 이게 뭐지? 내 시작 카운트가 96 초라는 실수를 했어 그래서 이것이 그것이 있어야하는 이유입니다 제로 콩 좋아, 지금은 제품에 돌아오고있다

그래서 괜찮 았어 이것을 파일에 작성한 다음 열어 보겠습니다 어쩌면 Records txt라는 이름으로 그때 이 한 점 오른쪽으로 같지 않음 string 이 문자열을 변경하는 것은 Nam 문자열이 아닙니다 점 친한 친구로 이동하십시오 우리가 문자열로 만들지 않으면 중간을 얻을 것 같이 볼 수 있습니다

그래서 내가 너에게 보여줄거야 이것은 문자열 사전이 사전 사전 개체가 아닙니다 자, 돌려 보겠습니다 아니, 미안해 내 데이터를 모두 다 가져야 했어

커피 오른쪽 인수는 사전을 늘리지 않아야합니다 그래서 우리는이 다른 문자열을 변환해야합니다 그럼 이제 이건 괜찮을거야 처음 보자 만약 당신이 파일을 완성했다면 어딘가에서 내가 클립을 사용하고 있기 때문에 새로 고침을시켜야합니다

매번 억지로 눌러야합니다 Kafirs 내부에 만들어진 오 케이스가 범위 지정을 강조하므로 여기 내 여행 작업 공간에 갈 수 있습니다 그럼이 텍스트를 지금까지 열어 보겠습니다 괜찮아 이것은 좋은 일이다 크리스토퍼 잡으세요

내가 열어 보자 이 파일이 있으면 볼 수 있습니다 괜찮아 이제 네가 내가 제품에 대해 말했던 것처럼 제품에 10 kg 5 kg이있을 수 있으며 2 kg와 같이 다른 변형이있을 수 있으며 그 중 일부는 변형이 없습니다 그래서 우리의 중요한 부분은 변종처럼 열쇠와 내부가 가치처럼 전체가 아닌이 물건 안에 있습니다 거기에 이렇게 당신은 볼 수 음 제품의 가격 할인 모든 것이 여기에 나열되어 있습니다

거기에 명시 적 할인이라는 무언가가 있습니다 또한 주요 마크 업은 여기에 있습니다 네가 이렇게되면 다음에 네가 시작해야 해 요즘 먹는 444 21 좋아요 이것은 5kg입니다

34이야, 알았어 그리고이 경우 할인은 20 %입니다 코즈 1 35 가격 할인은 20 % MRP는 할인 어딘가에 있어야합니다 예 모든 것이 거기에있다

당신이 볼 수 있다면 우리의 주요 부분은 우리가 가지고있는 변종의 내부와 같은 것입니다 변형의 일부는 두 요소가있는 요소 중 하나를 갖는 모든 것을 얻습니다 그들 중 일부는 세 가지 요소를 가지고 있습니다 그래서 우리는 다칠 필요가있다 그래서 이걸 가장 가까이 가게 해줘

그래서 지금까지 모든 것이 괜찮습니다 그래서 나는 이것을 쓰지 말아야한다고 생각합니다 그리고 우리는 이 부분도 탈출하고 필요하지 않습니다 여기있을 수 있습니다 그래서 그래서, 너무 많은 변수를 만드는 또 다른 것을 만들지 만, 걱정하지 마십시오

나는이 비디오와 다가오는 비디오를 위해 어떤 모듈 식 접근도 따르고 있지 않다 우리는 oops 개념 클래스 메소드와 다른 것들을 시작하려고합니다 그런 다음 우리는이 모든 것을 사용할 것입니다 당신과 같은 모든 프로그램과 같은 프로 시저를 통해 그러한 것들을 적용 할 수 있습니다 그러나 다시 한번, 함수 프로그래밍 만 기억하십시오

논리는 동일 할 것입니다 우리는 더 많은 프로그램을 더 모듈화 할 것입니다 이해하기 쉽고 좋아질 것입니다 메모리 최적화와 같은 몇 가지 공간에서 몇 번이고 코딩 비용은 더 적을 것입니다 동일한 메소드를 반복해서 사용할 것입니다

다른 클래스의 객체를 인스턴스화하는 것처럼 당신은 무엇을 말합니까? 그래서 지금은 클래스 객체와 메소드 및 생성자로 시작하려고한다면 학생들의 일부는 이해하기가 어려울 것입니다 그 중 일부는이 컴퓨터 프로그래밍을 좋아하는 데있어 매우 새로운 기술입니다 그래서 나는 단지에 집중하고있다 함수형 프로그래밍 언어로서의 파이썬 어쩌면 다음 달 나는 우리를 시작할 것이다

파이썬에서 객체 지향 개념 그리고 나서 여러분은이 프로그램을 정상적인 기능으로 변환하기 위해 자신 만의 접근 방식을 사용할 수 있습니다 모듈 식 접근법에 따라 프로그래밍 또는 기능하지만 그것은 동일 논리가 항상 동일합니다 그래, 데이터도 될거야 그리고 예를 들면 얼마나 많은 요소가있어 그래서 우리의 루프는 내가 말하는 것처럼 될 것입니다 나는 범위 안에있다 나는 그것이 카운터 일 것이라고 생각한다

데이터 3 데이터, 나는 이것이 모든 엘리먼트 1을 1 라운드 인쇄 할 것임을 믿습니다 선상에서 실제로 그렇게하는지 아닌지 알 수 있습니다 지금이 직업을 완료했는지 확인하십시오 데이터 4는 2 델타 3 과 변형 정보 그것은 다음은 내가 건너 뛰면 지금부터 보게 될 것입니다 먼저 이걸 가져 가자

나는 우리가 약간의 거울을 얻을 것이라고 생각한다 당연하지 나는이 부분을 완성했다 변형 정보 저장소가 사라 졌음을 확인하지만 지금은 흥미로운 점이 있습니다 계수기 하나는 임대료와 같다

이 에 대한 데이터와 우리는 for 내부에서 J에 대해 다른 for 루프를 실행하려고합니다 범위 예, 변종 내부에 많은 요소가 있으므로 이해하시기 바랍니다 그래서 우리는 거기에 기반을 둔 요소의 수를 확인해야합니다 우리는 이것을 반복 할 것입니다 예를 들어 무작위로 선택하면 아무 것도 색인과 같지 않을 것입니다

범위를 벗어 났거나 0을 찾았으므로 방금했습니다 루프가 정확히 실행되도록 만들기 만하면됩니다 이와 같은 횟수는 같은 수와 같아야합니다 이 요소 내부의 요소이므로 해당 데이터가있는 경우 그 다음 다섯은 베타 4 참조 그래서 그것은 또한 이제 목록을 시작할 것입니다 그것을 시작합니다 시작됩니다 그래서이게 나를 그냥하자

가져와 어디 보자 여기 무슨 일이 일어나고있는거야? 이걸 먼저 돌리시겠습니까? 좋아 이제 우리는 우리가 필요로하는 것이 무엇인지와 같은 것들을 식별 할 필요가있다 이 파일을 열면 좋아, 나는해야 해 내가 좋아하기 때문에 여기에서 다른 옵션을 사용하지 마십시오

그래서 독서는 괜찮습니다 단위가 한 가지입니다 kgs 공간 SVC 할인 및 SVC 가격이라고하는 항목이 있습니다 여기에 나열되어 있습니다 너도 알다시피

그렇다면 이것이 필요하지 않다고 생각하고 있습니다 그래서 한 가지는 SVC 가격입니다 좋아요, 두 가지는 점수 가격을 보는 것입니다 좋아, 보자 이 크기가 3 가지 일 필요가 있습니다

우리는 이미 목록에 그들은 세 가지가 이미 해제되었습니다 여기에 세 가지가 나열되어 있습니다 그러니 대부분의 사람들이 어쩌면 내부 목적으로 사용하고있는 것처럼 보일 것입니다 나는 내가 할 수 없다면 내가 볼 수 있다고 생각해 예, 쿠폰이라는 것을 보았습니다

네 가격은 시장에 있을지도 모른다면 거기에있을 것이다 네, M 기사도 완벽하게 잘 어울립니다 좋아, 내가 먼저 제품을 확인해 줄까? 어머니의 선택이 성장할 것이라고 생각하지만 꽃에 나는 라인이 상품을 강조한다고 강조합니다 난 괜찮아 너는 이걸 복사 해줄 게있어 그래서 제품 이름 I에 이것처럼이 벌금 쓰기 우리는 패키지와 모든 것을 먼저 얻었다

준비가 되었다면 당신이 필요하다고 생각합니다 그런 다음 MRP 가격을 써야합니다 그때 MRP 그 MRP 다음 실제 가격 가격 좋아, 지금은 무엇을 제공하고 있니? SVC라는 제품은 이 혼합 밑줄 제안에 특별한 할인 쿠폰 당신이 옥수수 제의 밭을 떠났는 지 확인합시다 괜찮 으면 괜찮을거야 좋아, 그렇게 될거야

이 때 SVC는 언더 스코어 제안을 스니핑하기 위해 밑줄을 긋습니다 나는 우리가 창조했다고 생각해 이 것은 아니요, 예를 들어 이것을 인쇄하는 것을 싫어합니다 데이터 라인은 2와 같습니다 나는 우리가이 줄에서 예를 들어 직접적으로 좋아할 수 있다고 생각한다

그러나 다시, 여러분은 이것을 문자열로 다시 변환해야합니다 필수 사항은 아닙니다 나는 불멸의 존재가 될 것이라고 생각한다 그때 시장 가격 I MRP에 시장 가격 제시가 필요하다고 생각하십시오 그런 다음 ACC는 제안을 강조합니다

나는 그 자리에 기초하고있다 괜찮다고 생각해 내가 아는 지 안다 이 라인을 인쇄 할 때 우리가 확신 할 필요가 있다고 생각하는 라인이 있었습니까? 그래서 이것은 이렇게 될 것입니다 그래서 모든 것이 잘되면 그것은 아이들이다

예기치 않은 내륙의 괜찮아 존중받는 동안 확실하지 않다 괜찮아 떨어져 너를 넣어 너무 많은 우와, 헤이 놀리는 들여 쓰기가 나쁘다 알았어 늦었 어

아마도 이걸 계속하자 이름 너 안녕, 안녕 필요하신 분 멀티 가격이 책정 된 실제 가격 제안 SPC 제공 가라 이 PC는 종종 내가 밑줄을 긋는다 그들이 달려야한다고 생각해

그러나 나는 모든 것이 같은 줄에 올 것이라고 믿는다 너도 알지 확실하지 않은 사람은 마음을 바로 잡을 권한 너 한테 일어날거야 그 자체로는 디코딩 할 수 없습니다 점검 해보자 좋아, 실수 한거야

이름 등급 무게 가격 실제 가격 버퍼,이 인쇄가 괜찮아요 권리 하지만 나는 믿는다 그만큼 움직이는 실제 가격이 바쁜 제안입니다 괜찮아 그런데 왜이 테마와 같은가? 들리다 좋아요 데이터 라인이 여기에 있습니다

그래서 우리는 헤더로 새 파일 만들기 그리고 이걸 열어 보자 우리가 여기서 이것을 필요로 할거야 아마도 하나의 파일을 만들어 보겠습니다 쓰기 모드 그리고 그 안에 내가 모두 넣을거야 내 머리글 좋아해

목 이름 콤마 그 안에 콤마 13 쉼표 MRP 실제 가격을 실제 가격으로 표시했다고 생각합니다 나는 우리가 제안 부분을 놓쳤다 고 생각해 실제 가격을 따랐다 또는 아니오, 제 생각에 아니, 최종 결과가있다 제안 및이 누락 된 제안 끔찍한 슬래시와 그림을 다음 줄에서 다시 시작해야하는 것은 아닙니다

그럼 벌금이 닫힙니다 그리고 나서 우리는 같은 파일을 열 것입니다, 그러나 이번에는 일어나는 모드에서 우리가 여기서 할 수 있을지도 몰라 나는 데이터가 될 것이라고 생각하십시오 1 호선 그래서 이 루프가 실행될 때마다 닫기를 인쇄하고 루프에서 빠져 나옵니다 이 같은 일이 일어날거야

그래서, 이것이 이루어 졌다고 믿습니다 프린트가 완료되고 어쨌든 다시 가열됩니다 아마이 파일을 지우고있을 뿐이에요 그래서 우리가 실제로 모든 레코드를 긁어 모으고 있는지 아닌지를 이해하는 것이 더 쉬울 것입니다 먼저 이걸 실행합시다

생각 해보신 후, 처음으로 상쾌한 것을 확인해 보겠습니다 알았어 파일 하나 하나에 다른 문자가있어 괜찮아 하지만 뭐였지? 40 바이트 였어, 알았어 왜 데이터가 여기에 왔는지 확실하지 않습니다

사실 그것은 마지막 행만 알았어, 내가 실수 한거야 어떤 추가 모드 여야합니다 괜찮아? 그래서 이것은 내가 당신에게 말한 것처럼 새로운 학습 권리입니다 내가 추가 할 것이라고 말했을 때 나는 그것을 열 필요가 없다 그래서 처음으로 우리는 올바른 동기로 파일을 열지 않습니다

그러면 새 파일이 만들어지고 그 후에 우리는 이름을 짓습니다 펜 이니? 이제 나는 그것을 믿는다 이 실제 CSB 그러나 그것은이 물건을 쓰지 않았다 베드로의 머리가 사라졌습니다 확실하지 않다 그는 히터 기다리기가 확실하지 않습니다

에이다는 거기 있어야 해 먼저 이 헤더의 이름으로 식별하고 그런 다음이 모드로 같은 더미를 열었습니다 이상적으로는 거기에 있어야하지만 보이지는 않아야합니다 무슨 일이 있었는지 잘 모르겠다 다시 이걸 실행 해 봅시다

하지만 이번엔 그냥 하지 않을 것이다 파일을 열고 닫을 수 있지만 보겠습니다 여기에 헤더를 쓰지 않습니다 괜찮아 주요한 문제는 여기 저기에 또 하나의 루프가 열려 있다는 것입니다 이것은 실제로 문제를 만들고 있습니다 나는 그것을 닫는 것을 잊었다

그럼 괜찮아 이제 예와 같이 작동합니다 뭔가 지저분해질 것입니다 이유를 이해해야합니다 이상적으로 그것은 작동해야합니다

모든 것이 여기에 온 것을보십시오 Excel에서 열 수 있습니다 나는 비어있는 것처럼 Excel을 가지고있다 다음 번과 마찬가지로 Excel에서 직접 열려면 다음을 사용하십시오 Numpy soar pandas는 X 및 일부 Python 라이브러리에서 열 수 있습니다

그래서 구분 된 것처럼 그 다음에 그들은 쉼표가 될 것이라고 믿습니다 괜찮아 모든 것이 여기에왔다 괜찮아 일부 문제는 몇 가지 문제가있다 모든 것이 같은 줄에 올랐다 나는 올바른 일을하고 있었지만 콘솔에 잘못된 것을 보여주는 이유가 확실하지 않은 것 같습니다

우리는 지금 그것이 작동해야한다고 생각할 필요가있다 파일을 다시 열어 보겠습니다 이제 모든 것이 멋져 보이네요 멋지네요 끝 잘 보아라

필요한 타이틀 이름 Frattini mark P 실제 가격으로 HPC 제공 내부 전체 항목 식료품 점과 물림쇠가왔다 왜 이것이 3:06 사람이 아닌지 우리가 찍은 이래로 그 수는 307이어야한다 아니요, 일부 제품에 여러 변형이있는 것처럼 제가 말씀 드렸듯이 이것은 올바르지 않습니다 예를 들어, 이걸 볼 수 있다면 두 개를 본다면 이것 또한 보세요, 이것은 또한 2입니다 이것은 또한 2와 같습니다

하나는 10 kg 1은 5 kg입니다 그래서 그 이유는 삼 이것은 200 kg에서 2입니다 이것은 200 kg으로 2입니다 미안 200 g 1 갑판이 아닙니다 보기 어려움 200 그램 500 그램 1 킬로그램 이렇게 3 개의 이체, 맞았던가? 너무 멋집니다 좋은 사람들, 그래서 이런 식으로, 너는 네가 할 수있어 다른 웹 사이트에서 긁어 모으 듯이, 다시 말하지만, 이것은 완전히 교육적인 목적을위한 것입니다 어디서나이 데이터를 사용하지 않을 것입니다

나 또한 곧바로 이걸 지울거야 그러나 나는 학습 목적을 위해 비디오를 확실히 발표 할 것이다 이 데이터를 사용해서는 안되며이 데이터를 배포하지 말아야합니다 이것은 일부 회사 또는 일부 웹 사이트에 대한 완전한 지적 재산권 또는 기타 학습을 위해서만 학습 목적으로 만 사용하십시오 그것들을 오용하지 마라

내 채널을 시청 해 주셔서 감사합니다 언제든지 공유 할 수있는 비디오가 마음에 들면 친구와 공유하기 위해 아무 것도하지 마십시오 페이스 북의 whatsapp Instagram 링크에 대한 기회 내 친구는 나에게도 슈퍼가되어 새로운 느낌을 시작하려고한다 수업 내용에 대한 기계 학습 및 Python 튜토리얼이 거의 준비되었습니다 우리는 4 월말이나 5 월 첫째 주에 시작하려고합니다

새로운 웹 사이트를 방문하십시오 나는 갈거야 몇 가지 동영상의 모든 내용을 다가오는 동영상에 올릴 수도 있지만 지금은 채널을 시작했습니다 우리는 더 많은 가입자를 찾고있는 귀하의 지원을 기다리고 있습니다 그것은 우리를 도울 것입니다

독창적 인 콘텐츠를 만들어 내도록 동기를 부여합니다 보시다시피, 우리는 단지 youtubes에서 사용할 수없는 독특한 컨텍스트를 제공하는 것입니다 우리는 여러 개의 아주 좋은 채널이 있다는 것을 알고 있습니다 거기에는 6 개월 7 개월 동안 YouTube에서 뭔가 배울 수 있습니다 또한 파이썬에서 Vito와 같은 장소에서,하지만 지금 나는 뭔가 예를 들어, 당신이 말할 수있는 모든 것을 아는 것이 아닙니다

나는 파이썬의 한 사람을 압니다, 그래서 저는 여행과 같은 모든 것을 당신과 공유하고 있습니다 동영상 공유 그래서 이것은 자습서 나 이것과 비슷한 것이 아닙니다 자습서를 확실히합니다 그러나 다시 이것은 라이브 워크샵입니다

그렇게하면 긴 비디오와 다음 비디오를 즐길 수 있습니다 어쩌면 당신은 하나의 큰 바구니를 만들 계획입니다 어떤 다른 작품은 당신이 비슷한 것을 가지고 있다면 우리는 그것을하기를 원합니다 우리가 Facebook 페이지에 어떤 의견이라도 언급하여 알려 주시기 바랍니다 YouTube에서 벨 아이콘을 사용하여 채널을 구독해야합니다

따라서 동영상을 업로드 할 때마다 알림을 받게되므로 즉시 알림을 받아야합니다 하지만 지금은 우리가 당신의 지원이 필요합니다 우리는 성장하고 싶습니다 우리는 더 커지려고합니다 우리는 더 큰 청중의 일부가되고 싶습니다

그리고 우리가 자라면 자랄 겁니다 자네가 제대로 갈 것입니다 따라서 구독을 마치고 4 주가 지나면 diff로 공유하도록하십시오 나는 14 일에 그렇게 생각한다 그리고 우리는 잘 해나 가고 있다고 생각한다

청중의 반응과 모든 사람들의 반응 이 동영상을 시청 해 주셔서 감사 드리며, 이번 주에 시간을 낼 때마다 더 많은 동영상을 올릴 수 있기를 바랍니다 나는 같은 종류의 기본적으로 독일 전역에서 휴가가있었습니다 그래서 나는 지난 3-4 일 동안 사무실에 가지 않고 있었어 그래서 나는 그 모든 비디오를 게시합니다 하지만 그래, 앞으로 몇 주 안에 더 많은 비디오를 올릴거야

아니면 내일 또는 내일이 지나면 시간을 가지기도합니다 하지만 그들과의 우정이 오늘이나 내일까지 더 많은 동영상을 공유한다면 이것은 또한 그가이 아이디어로 나를 도왔던 것과 같습니다 그래서 불행하게도, 그는 지금 고객 회의에서 다시 한 번 곧 동영상 그래서 너희들은 다시 한번 너를 아주 많이 감사했다 좋은 날

안녕