<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Cindie.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Thu, 22 Jun 2023 06:56:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>Cindie.log</title>
            <url>https://velog.velcdn.com/images/gamja-kawaii/profile/63e47edc-a604-480f-a2ee-7c75185f5f23/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. Cindie.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/gamja-kawaii" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[혼자보기위한python🌕모듈4️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EB%AA%A8%EB%93%884</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EB%AA%A8%EB%93%884</guid>
            <pubDate>Thu, 22 Jun 2023 06:56:55 GMT</pubDate>
            <description><![CDATA[<h2 id="1️⃣-name--main">1️⃣ <strong>name</strong> == &quot;<strong>main</strong>&quot;</h2>
<h3 id="1-__name__">(1) <code>__name__</code></h3>
<p>entry point (또는 main) : 프로그래밍 언어에서 프로그램의 진입점 ! 
이러한 entry point (또는 main) 메인 내부에서의 <strong>name</strong> 은 &quot;<strong>main</strong>&quot; </p>
<h3 id="2-모듈의-__name__">(2) 모듈의 <code>__name__</code></h3>
<p>다른 스크립트에서 해당 모듈을 import하여 사용하는 경우, <strong>name</strong> 변수는 해당 모듈의 실제 이름으로 설정됩니다.</p>
<p><strong>name</strong> 변수는 주로 모듈의 특정 코드 블록이 실행되어야 하는지, 임포트되었을 때는 실행되지 않아야 하는지를 결정하는 데 사용됩니다. 보통 if <strong>name</strong> == &quot;<strong>main</strong>&quot;: 구문을 사용하여 스크립트 파일이 직접 실행될 때만 특정 코드 블록이 실행되도록 조건을 설정하는 용도로 활용됩니다.</p>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/bb49c4ad-d89d-40c3-a1f2-c4fc96f8b4b4/image.JPG" alt=""></p>
<h3 id="3__name__-활용하기">(3)<code>__name__</code> 활용하기</h3>
<h4 id="test_modulepy-로-실행했을때-🔥">test_module.py 로 실행했을때 🔥</h4>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/01c9e3b4-1439-4591-9735-d86f350b326b/image.JPG" alt=""></p>
<h4 id="mainpy-로-실행했을때-🔥">main.py 로 실행했을때 🔥</h4>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/37ab5997-7be3-47cc-83a6-3257a62e0b98/image.JPG" alt=""></p>
<hr>
<h2 id="2️⃣-package">2️⃣ package</h2>
<p><code>모듈(Module)</code>과 <code>패키지(Package)</code>는 파이썬에서 코드를 구성하고 구성 요소를 구성하는 데 사용되는 개념입니다. 다음은 모듈과 패키지의 차이점을 설명해드리겠습니다:</p>
<p><code>모듈(Module)</code> :</p>
<p>모듈은 _파이썬 코드가 포함된 파일_입니다. 확장자가 <code>.py인 파일</code>이 일반적인 모듈입니다.
모듈은 변수, 함수, 클래스 등의 정의와 코드를 포함할 수 있습니다.
코드 재사용과 구조화를 위해 모듈을 사용할 수 있습니다.
모듈은 다른 파이썬 스크립트에서 import 문을 사용하여 임포트(import)하여 사용할 수 있습니다.
예를 들어, math.py라는 모듈 파일에는 수학 관련 함수와 상수가 포함될 수 있습니다. 다른 스크립트에서 import math를 사용하여 해당 모듈을 임포트하여 함수와 상수를 사용할 수 있습니다.</p>
<p><code>패키지(Package)</code> :</p>
<p>패키지는 관련된 모듈들의 집합을 담고 있는 <em>디렉토리<em>입니다. 일반적으로 디렉토리 안에 ```__init</em></em>.py 파일```이 있으면 해당 디렉토리를 패키지로 인식합니다.
패키지는 모듈의 구조화된 조직화를 제공하여 코드를 논리적으로 그룹화할 수 있습니다.
패키지는 하위 패키지와 모듈을 포함할 수 있으며, 패키지 내에 다양한 모듈이 있을 수 있습니다.
패키지는 .(점)을 사용하여 하위 패키지 또는 모듈에 접근할 수 있습니다.
예를 들어, my_package라는 패키지 안에 utils.py와 sub_package라는 하위 패키지가 있다면 my_package.utils와 my_package.sub_package로 접근할 수 있습니다.
요약하자면, 모듈은 단일 파일로 코드를 구성하고, 패키지는 모듈들의 구조화된 집합으로 코드를 구성합니다. 패키지는 모듈을 논리적으로 그룹화하여 코드 구조를 조직화하고, 모듈은 코드의 재사용과 모듈화를 지원합니다.</p>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/2e5c5f68-1941-488e-b32e-041f3353e664/image.JPG" alt=""></p>
<h3 id="😫-__init__py">😫 <code>__init__.py</code></h3>
<ul>
<li>package  를 읽을때 패키지 내부의 모듈들을 한꺼번에 가져오고 싶을때가 있습니다. 이럴때는 폴더내부에 <code>__init__.py</code> 파일을 만들어 사용합니다! </li>
</ul>
<p><code>__init__.py</code> 에서는 <code>__all__</code> 이라는 이름의 <strong>리스트</strong>를 만드는데, 이 리스트에 지정한 모듈들이 
<code>from &lt;packge 이름 &gt; import *</code>할때 <em>전부 읽어집니다</em> !</p>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/fc70fa89-2e0c-4bc9-9bb3-2a87877103bb/image.JPG" alt=""></p>
<p>나는 계속 <code>&quot;module_b is specified in all but is not present in module&quot;</code> 메시지가 나와서 (-_-)  chat gpt 물어보니까  </p>
<blockquote>
<p>실행 중에 <code>&quot;module_b is specified in all but is not present in module&quot;</code>와 같은 오류 메시지가 나타나지 않고 코드가 정상적으로 실행된다면, 해당 오류 메시지는 무시해도 됩니다.</p>
</blockquote>
<p>일반적으로, <strong>all</strong> 변수는 모듈이나 패키지에서 외부로 공개할 요소들의 목록을 정의합니다. <strong>all</strong>에 포함된 요소들은 외부에서 from module import * 형식으로 일괄적으로 가져올 수 있습니다.</p>
<p>라고 ... 
하지만 이 경우에는 &quot;module_b is specified in all but is not present in module&quot;와 같은 오류 메시지가 나타나지 않으므로,(????) <code>__all__</code>에 지정된 모듈이 실제로 모듈에 존재한다고 가정할 수 있습니다. 따라서 코드가 정상적으로 실행되는 것은 예상대로입니다.</p>
<p>오류 메시지는 개발자에게 잘못된<code>__all__</code> 설정을 알려주는 역할을 합니다. 그러나 오류가 실제로 나타나지 않는다면, 코드가 정상적으로 작동하는 것으로 간주할 수 있습니다.** (일단 넘어감 ㅎㅅㅎ)**</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌗모듈2️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EB%AA%A8%EB%93%882</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EB%AA%A8%EB%93%882</guid>
            <pubDate>Tue, 20 Jun 2023 10:54:54 GMT</pubDate>
            <description><![CDATA[<h2 id="1️⃣random-module">1️⃣random module</h2>
<pre><code class="language-python">import random
print(&quot;#random module:&quot;)

# random(): 0.0&lt;= x &lt; 1.0 float를 return합니다.
print(&quot;- randpm():&quot;, random.random())

# uniform(min,max): 지정한 범위 사이의 float를 return합니다.
print(&quot;- uniform(10,20):&quot;, random.uniform(10, 20))

# randrange(): 지정한 범위의 int를 return합니다.
# -randrange(max): 0~max 사이의 값을 return합니다.
# -randrange(min,max): min~max 사이의 값을 return합니다.
# -randrange(min,max,step): min과 max 사이에서 step 크기만큼 증가하는 값을 return합니다.


def selectRandom(li):
    import random
    ln = len(li)
    r = random.randrange(0, ln)
    return li[r]


print(&quot;- randrange(10):&quot;, random.randrange(10))
print(&quot;- randrange(10,20):&quot;, random.randrange(10, 20))
print(&quot;- randrange(10,20,2):&quot;, random.randrange(10, 20, 2))

# choice(list): 리스트 내부에 있는 요소를 랜덤으로 선택합니다.
print(&#39;- choice([&quot;감자&quot;,&quot;모찌&quot;,&quot;핑핑&quot;,&quot;초ㅏ&quot;]):&#39;,
      random.choice([&quot;감자&quot;, &quot;모찌&quot;, &quot;핑핑&quot;, &quot;초ㅏ&quot;]))

# shuffle(list): 리스트 요소들을 랜덤하게 섞습니다.
print(&#39;- shuffle([&quot;감자&quot;,&quot;모찌&quot;,&quot;핑핑&quot;,&quot;초ㅏ&quot;]):&#39;,
      random.shuffle([&quot;감자&quot;, &quot;모찌&quot;, &quot;핑핑&quot;, &quot;초ㅏ&quot;]))

# sample(list,k=&lt;숫자&gt;): 리스트 요소 중에 k개를 뽑습니다.
print(&quot;- sample([0,1,2,3,4,5,6,7,8,9],k=3):&quot;,
      random.sample([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], k=3))</code></pre>
<ul>
<li><code>random.random()</code>: 0.0 이상 1.0 미만의 <strong>부동소수점(float) 값</strong>을 반환합니다. 이 메서드를 사용하여 0과 1 사이의 무작위한 부동소수점 값을 얻을 수 있습니다.</li>
</ul>
<ul>
<li><code>random.uniform(min, max)</code>: 지정된 범위 사이의 <strong>부동소수점(float) 값</strong>을 반환합니다. min은 범위의 최소값이고, max는 범위의 최대값입니다. 예를 들어, random.uniform(10, 20)을 호출하면 10 이상 20 미만의 부동소수점 값을 반환합니다.</li>
</ul>
<ul>
<li><code>random.randrange(start, stop, step])</code>: 주어진 범위 내의 *<em>정수(int) *</em>값을 반환합니다. start 매개변수는 선택적으로 사용되며 범위의 시작값을 나타냅니다. stop은 범위의 종료값을 나타내며, step은 값들 간의 증가량을 나타냅니다. 예를 들어, random.randrange(10)은 0부터 10 사이의 값을 반환하고, random.randrange(10, 20)은 10부터 20 사이의 값을 반환합니다. randrange(0, 10, 2)는 0부터 10 사이에서 2씩 증가하는 값 중에서 무작위로 선택한 값을 반환합니다.
(sequence)</li>
</ul>
<ul>
<li><code>random.choice(seq)</code>: choice 함수는 주어진 시퀀스(seq)에서 임의의 요소를 선택하여 반환합니다. 시퀀스는 리스트, 튜플, 문자열 등과 같이 순서가 있는 자료형이 될 수 있습니다. 함수는 주어진 시퀀스에서 임의의 요소를 선택하고 반환합니다.</li>
</ul>
<ul>
<li><code>random.shuffle(seq)</code>: shuffle 함수는 주어진 시퀀스(seq)의 요소를 임의의 순서로 섞습니다. 이 함수는 원본 시퀀스를 직접 변경하며 반환값은 없습니다. 따라서 섞은 결과를 확인하려면 원본 시퀀스를 따로 출력해야 합니다.</li>
</ul>
<ul>
<li><code>random.sample(population, k)</code>: sample 함수는 주어진 집합(population)에서 k개의 요소를 임의로 선택하여 리스트로 반환합니다. 반환되는 리스트에는 중복되지 않는 요소들이 포함됩니다. population은 시퀀스 혹은 집합과 같이 반복 가능한 객체가 될 수 있습니다. 함수는 주어진 집합에서 중복되지 않는 k개의 요소를 무작위로 선택하여 <strong>리스트</strong>로 반환합니다.</li>
</ul>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/6c29738e-aae8-44c8-8314-40b8073e91c9/image.JPG" alt=""></p>
</blockquote>
<hr>
<h2 id="2️⃣sys-module">2️⃣sys module</h2>
<p>sys 모듈은 파이썬의 내장 모듈 중 하나로, <strong>시스템 관련 기능에 접근하고 제어하는 데 사용</strong>됩니다. 이 모듈은 파이썬 인터프리터와 상호작용하며, 시스템과 관련된 정보에 접근하고 파이썬 프로그램의 실행을 제어하는 기능을 제공합니다.</p>
<p>sys 모듈의 몇 가지 주요 기능은 다음과 같습니다:</p>
<table>
<thead>
<tr>
<th></th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td>sys.argv</td>
<td align="left">커맨드 라인 인자에 접근</td>
</tr>
<tr>
<td>sys.exit()</td>
<td align="left">프로그램 종료</td>
</tr>
<tr>
<td>sys.stdin</td>
<td align="left">입출력 스트림 제어:표준 입력</td>
</tr>
<tr>
<td>sys.stdout</td>
<td align="left">입출력 스트림 제어:표준 출력</td>
</tr>
<tr>
<td>sys.stderr</td>
<td align="left">입출력 스트림 제어:표준 오류</td>
</tr>
<tr>
<td>sys.path</td>
<td align="left">모듈 및 경로 관리</td>
</tr>
<tr>
<td>sys.platform</td>
<td align="left">현재 실행 중인 시스템의 플랫폼을 반환</td>
</tr>
<tr>
<td>sys.version</td>
<td align="left">현재 사용 중인 파이썬 버전 정보</td>
</tr>
</tbody></table>
<pre><code class="language-python">import sys

print(sys.argv)
print(&quot;--------&quot;)

# 컴퓨터 환경과 관련된 정보를 출력합니다 ( ･ิ ͜ʖ ･ิ)
print(&quot;getwindowsversion:()&quot;,sys.getwindowsversion())
print(&quot;--------&quot;)
print(&quot;copyright:&quot;,sys.copyright)
print(&quot;--------&quot;)
print(&quot;version:&quot;,sys.version)

# 프로그램을 강종합니다 ( ･ิ ͜ʖ ･ิ)
sys.exit()</code></pre>
<ul>
<li><code>sys.argv</code>: 이는 _명령줄에서 전달된 인자들을 담고 있는 리스트_입니다. 프로그램 실행 시 커맨드 라인에 전달된 인자들을 확인할 수 있습니다. 예를 들어, python script.py arg1 arg2와 같이 실행하면 sys.argv는 [&#39;script.py&#39;, &#39;arg1&#39;, &#39;arg2&#39;]와 같은 리스트를 반환합니다.</li>
</ul>
<ul>
<li><code>sys.getwindowsversion()</code>: 이 함수는 현재 Windows 운영 체제의 버전 정보를 반환합니다. Windows 운영 체제에서만 사용 가능하며, sys.getwindowsversion().major, sys.getwindowsversion().minor, sys.getwindowsversion().build, sys.getwindowsversion().platform 등의 속성을 사용하여 세부 정보를 알 수 있습니다.</li>
</ul>
<ul>
<li><code>sys.copyright</code>: 이는 현재 사용 중인 파이썬 인터프리터의 저작권 정보를 나타냅니다. 일반적으로 파이썬 버전과 저작권 정보가 출력됩니다.</li>
</ul>
<ul>
<li><code>sys.version</code>: 이는 현재 사용 중인 파이썬 인터프리터의 버전 정보를 반환합니다. 버전 번호와 빌드 정보가 포함된 문자열로 출력됩니다.</li>
</ul>
<ul>
<li><code>sys.exit()</code>: 이 함수는 프로그램을 강제로 종료합니다. 일반적으로 프로그램 실행 중에 조건을 만족하는 경우에 사용됩니다. sys.exit()를 호출하면 프로그램이 즉시 종료됩니다.</li>
</ul>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/9922832b-4e14-434e-9194-401fd9ec06cd/image.JPG" alt=""></p>
</blockquote>
<hr>
<h2 id="3️⃣os-module">3️⃣os module</h2>
<p>os 모듈은 파이썬의 내장 모듈 중 하나로, <strong>운영 체제와 상호작용</strong>하기 위한 기능을 제공합니다. 이 모듈을 사용하면 _파일 및 디렉토리 관리, 프로세스 제어, 환경 변수 액세스 등과 같은 운영 체제 관련 작업_을 수행할 수 있습니다.</p>
<p>os 모듈의 주요 기능은 다음과 같습니다:</p>
<table>
<thead>
<tr>
<th></th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td>os.getcwd()</td>
<td align="left">현재 작업 디렉토리의 경로를 반환</td>
</tr>
<tr>
<td>os.listdir(path)</td>
<td align="left">주어진 경로에서 파일 및 디렉토리 목록을 반환</td>
</tr>
<tr>
<td>os.environ</td>
<td align="left">현재 시스템의 환경 변수에 접근할 수 있는 딕셔너리 객체입니다. 환경 변수를 읽거나 설정하는 데 사용</td>
</tr>
<tr>
<td>os.system(command)</td>
<td align="left">주어진 명령을 실행</td>
</tr>
<tr>
<td>os.kill(pid, signal)</td>
<td align="left">특정 프로세스에 시그널을 보냄</td>
</tr>
<tr>
<td>os.path</td>
<td align="left">파일 경로와 관련된 작업을 수행하는 함수들을 제공: 경로를 조작하고, 파일 확장자 추출, 경로 구성, 파일명 분리 등</td>
</tr>
<tr>
<td>os.name</td>
<td align="left">현재 운영 체제의 이름을 반환</td>
</tr>
<tr>
<td>os.sep</td>
<td align="left">운영 체제에서 사용하는 디렉토리 구분자를 나타냄</td>
</tr>
</tbody></table>
<pre><code class="language-python">import os

# 기본정보 ( ^∇^)✎
print(&quot;현재 운영체제:&quot;,os.name)
print(&quot;현재 폴더:&quot;,os.getcwd())
print(&quot;현재 폴더 내부요소:&quot;,os.listdir())

# 폴더를 만들고, 제거하기 
# 폴더가 &#39;비어있을때만&#39; 제거가능! ( ^∇^)✎
os.mkdir(&quot;hello&quot;)
os.rmdir(&quot;hello&quot;)

# 파일을 생성하고 + 파일 이름 변경하기 ( ^∇^)✎
with open(&quot;original.txt&quot;,&quot;w&quot;) as file:
    file.write(&quot;hello&quot;)
os.rename(&quot;original.txt&quot;,&quot;new.txt&quot;)


# 파일을 제거합니다 ( ^∇^)✎
os.remove(&quot;new.txt&quot;)
#os.unlink(&quot;new.txt&quot;)

# 시스템 명령어 실행 ( ^∇^)✎
os.system(&quot;dir&quot;)</code></pre>
<ul>
<li><code>os.name</code>: os.name은 현재 운영 체제의 이름을 반환합니다. 위의 코드에서는 os.name을 출력하여 현재 운영 체제를 확인할 수 있습니다.</li>
</ul>
<ul>
<li><code>os.getcwd()</code>: os.getcwd() 함수는 현재 작업 디렉토리의 경로를 반환합니다. 현재 실행 중인 스크립트 파일이 위치한 디렉토리를 확인할 수 있습니다.</li>
</ul>
<ul>
<li><code>os.listdir()</code>: os.listdir() 함수는 현재 폴더 내의 파일 및 폴더 목록을 반환합니다. 인자로 경로를 전달하지 않으면 기본적으로 현재 작업 디렉토리의 내용을 반환합니다.</li>
</ul>
<ul>
<li><code>os.mkdir(&quot;hello&quot;)</code>: os.mkdir() 함수는 새로운 폴더를 생성합니다. 위의 코드에서는 &quot;hello&quot;라는 이름의 폴더를 생성합니다.</li>
</ul>
<ul>
<li><code>os.rmdir(&quot;hello&quot;)</code>: os.rmdir() 함수는 비어 있는 폴더를 제거합니다. 위의 코드에서는 &quot;hello&quot; 폴더를 제거합니다.</li>
</ul>
<ul>
<li><code>with open(&quot;original.txt&quot;,&quot;w&quot;) as file</code>: file.write(&quot;hello&quot;): &quot;original.txt&quot;라는 파일을 생성하고 &quot;hello&quot;라는 내용을 파일에 씁니다. with 문을 사용하여 파일을 자동으로 닫습니다.</li>
</ul>
<ul>
<li><code>os.rename(&quot;original.txt&quot;,&quot;new.txt&quot;)</code>: &quot;original.txt&quot; 파일의 이름을 &quot;new.txt&quot;로 변경합니다.</li>
</ul>
<ul>
<li><code>os.remove(&quot;new.txt&quot;)</code>: os.remove() 함수는 파일을 제거합니다. 위의 코드에서는 &quot;new.txt&quot; 파일을 제거합니다. 주석 처리된 os.unlink() 함수는 동일한 작업을 수행하는 다른 방법입니다.</li>
</ul>
<ul>
<li><code>os.system(&quot;dir&quot;)</code>: os.system() 함수를 사용하여 시스템 명령어를 실행합니다. 위의 코드에서는 &quot;dir&quot; 명령어를 실행하여 현재 디렉토리의 파일 목록을 출력합니다.</li>
</ul>
<p>위의 코드 예시에서는 os 모듈을 사용하여 현재 운영 체제 정보, 작업 디렉토리, 파일 및 폴더 관리, 시스템 명령어 실행 등의 작업을 수행하는 방법을 보여주고 있습니다.</p>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/27744069-a069-48c3-b107-4efaaceeb78d/image.JPG" alt=""></p>
</blockquote>
<h3 id="🐰💭-filedirectory-구분하기-❗">🐰💭 File/Directory 구분하기 ❗</h3>
<pre><code class="language-python">import os

# 현재 폴더의 파일/폴더를 출력합니다.
output=os.listdir(&quot;.&quot;)
print(&quot;os.listdir():&quot;,output)
print()

# 현재 폴더의 파일/폴더를 구분합니다.
print(&quot;# 폴더와 파일 구분하기&quot;)
for path in output:
    if os.path.isdir(path):
        print(&quot;폴더:&quot;,path)
    else:
        print(&quot;파일&quot;,path)</code></pre>
<p><code>output = os.listdir(&quot;.&quot;)</code>은 <strong>현재 작업 디렉토리</strong>에서 파일과 디렉토리의 리스트를 가져와서 output 변수에 할당하는 코드입니다.</p>
<p><code>os.listdir()</code>: 지정된 디렉토리 내의 파일과 디렉토리를 나타내는 리스트를 반환하는 함수입니다.
<code>&quot;.&quot;</code>: 현재** 작업 디렉토리를 나타내는 경로**입니다. <code>&quot;.&quot;</code>은 현재 스크립트가 실행되고 있는 디렉토리를 가리킵니다.</p>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/7aee04e4-cebf-4b95-8e21-2c2fbdb38e25/image.JPG" alt=""></p>
</blockquote>
<hr>
<h2 id="4️⃣-datetime-module">4️⃣ datetime module</h2>
<p>datetime 모듈은 파이썬의 내장 모듈 중 하나로, 날짜(date), 시간(time), 날짜 및 시간(datetime)에 관련된 작업을 수행하는 데 사용됩니다. 이 모듈은 날짜와 시간을 표현하고 조작하는 클래스와 함수를 제공하여 날짜 및 시간 관련 작업을 쉽게 처리할 수 있게 해줍니다.</p>
<p>datetime 모듈에서 자주 사용되는 클래스와 함수에는 다음과 같은 것들이 있습니다:</p>
<table>
<thead>
<tr>
<th></th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td><strong>datetime.datetime</strong></td>
<td align="left">날짜와 시간을 함께 표현하는 클래스</td>
</tr>
<tr>
<td><strong>datetime.date</strong></td>
<td align="left">날짜 정보를 표현하는 클래스</td>
</tr>
<tr>
<td><strong>datetime.time</strong></td>
<td align="left">시간 정보를 표현하는 클래스</td>
</tr>
<tr>
<td><strong>datetime.timedelta</strong></td>
<td align="left">시간 간격을 나타내는 클래스</td>
</tr>
<tr>
<td><strong>datetime.now()</strong></td>
<td align="left">현재 날짜와 시간을 반환하는 함수</td>
</tr>
<tr>
<td><strong>datetime.strptime()</strong></td>
<td align="left">주어진 형식에 맞춰 문자열을 해석하여 해당하는 날짜나 시간 객체로 변환</td>
</tr>
</tbody></table>
<p>위의 클래스와 함수들을 사용하여 날짜와 시간을 _생성, 조작, 비교하거나 포맷팅_하는 등 다양한 작업을 수행할 수 있습니다. datetime 모듈은 날짜 및 시간 관련 작업을 처리하는데 유용한 도구이며, 파이썬에서 날짜와 시간을 다루는 일반적인 요구사항을 충족시켜줍니다.</p>
<h3 id="1현재시간-구하기">(1)현재시간 구하기</h3>
<pre><code class="language-python">import datetime

# 현재 시각 구하고 출력하기 ＿〆(。╹‿ ╹ 。)

print(&quot;# 현재 시각 출력하기&quot;)
now = datetime.datetime.now()
print(now.year, &quot;년&quot;)
print(now.month, &quot;월&quot;)
print(now.day, &quot;일&quot;)
print(now.hour, &quot;시&quot;)
print(now.minute, &quot;분&quot;)
print(now.second, &quot;초&quot;)
print()

# 시간 출력 방법 ＿〆(。╹‿ ╹ 。)

print(&quot;# 시간을 포맷에 맞춰 출력하기&quot;)
output_a = now.strftime(&quot;%Y.%m.%D, %H:%M:%S&quot;)
print(now.strftime(&quot;%Y.%m.%d, %H:%M:%S&quot;))
output_b = &quot;{}년 {}월 {}일 {}시 {}분 {}초&quot;.format(
    now.year, now.month, now.day, now.hour, now.minute, now.second)
output_c = now.strftime(&quot;%Y{} %m{} %d{}, %H{} %M{} %S{}&quot;).format(*&quot;년월일시분초&quot;)
print(output_a)
print(output_b)
print(output_c)</code></pre>
<p> now.strftime(&quot;%Y.%m.%d, %H:%M:%S&quot;):<code>strftime()</code> 메서드를 사용하여 <strong>현재 시각을 지정된 포맷에 맞춰 출력</strong>합니다.** %Y, %m, %d, %H, %M, %S**와 같은 형식 지시자를 사용하여 날짜 및 시간 요소를 포맷팅합니다. 예시에서는 &quot;연-월-일, 시:분:초&quot; 형식으로 출력되도록 지정하였습니다.</p>
<p>output_b = &quot;{}년 {}월 {}일 {}시 {}분 {}초&quot;.format(now.year, now.month, now.day, now.hour, now.minute, now.second): format() 메서드를 사용하여 형식화된 문자열을 생성합니다. 중괄호 {}를 사용하여 <code>format()</code>메서드에 전달된 인자들을 순서대로 삽입하여 문자열을 생성합니다.</p>
<p>output_c = now.strftime(&quot;%Y{} %m{} %d{}, %H{} %M{} %S{}&quot;).format(*&quot;년월일시분초&quot;): 위의 예시와 마찬가지로 strftime() 메서드를 사용하여 현재 시각을 형식에 맞춰 출력합니다. 이때 format() 메서드를 활용하여 포맷 문자열 내의 중괄호 {}에 인자들을 삽입합니다. <code>format()</code> 메서드의 *****을 사용하여 &quot;년월일시분초&quot; 문자열을 개별 문자들로 전달하였습니다.</p>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/6d07d737-1648-487b-9a71-76a096cc1129/image.JPG" alt=""></p>
</blockquote>
<h3 id="🐰💭-m-🆚-m--❗">🐰💭 %m 🆚 %M  ❗</h3>
<p>%m과 %M은 모두 strftime() 메서드에서 날짜와 시간을 포맷팅할 때 사용되는 형식 지시자입니다. 하지만 두 지시자는 서로 다른 의미를 가지고 있습니다.</p>
<p><code>%m</code>: %m은 strftime() 메서드에서 <strong>월(month)</strong>을 나타내는 형식 지시자입니다. 0으로 패딩된 두 자리 숫자 형태로 월을 나타냅니다. 예를 들어, 06은 6월을 나타냅니다.</p>
<p><code>%M</code>: %M은 strftime() 메서드에서 <strong>분(minute)</strong>을 나타내는 형식 지시자입니다. 0으로 패딩된 두 자리 숫자 형태로 분을 나타냅니다. 예를 들어, 09는 9분을 나타냅니다.</p>
<p>아래는 각각의 형식 지시자를 사용하여 현재 시각을 포맷팅하는 예시 코드입니다:</p>
<pre><code class="language-python">import datetime

now = datetime.datetime.now()

# 월 포맷팅 (%m)
month_formatted = now.strftime(&quot;%m&quot;)
print(&quot;월:&quot;, month_formatted)  # 출력: 월: 06

# 분 포맷팅 (%M)
minute_formatted = now.strftime(&quot;%M&quot;)
print(&quot;분:&quot;, minute_formatted)  # 출력: 분: 09
</code></pre>
<p>위의 코드에서는 strftime() 메서드를 사용하여 현재 시각을 %m과 %M의 형식 지시자에 맞춰 포맷팅한 결과를 출력하고 있습니다. 06은 현재 월을, 09는 현재 분을 나타냅니다. %m과 %M은 각각 월과 분을 나타내며, 두 지시자는 출력 형식이 다르므로 주의하여 사용해야 합니다.</p>
<h3 id="🐰💭-d-🆚-d-❗">🐰💭 %d 🆚 %D ❗</h3>
<p>%d와 %D는 날짜를 포맷팅할 때 사용되는 형식 지시자입니다. 하지만 두 지시자는 서로 다른 의미와 출력 형식을 가지고 있습니다.</p>
<p><code>%d</code>: %d는 strftime() 메서드에서 <strong>일(day)</strong>을 나타내는 형식 지시자입니다. 0으로 패딩된 두 자리 숫자 형태로 일을 나타냅니다. 예를 들어, 05는 5일을 나타냅니다.</p>
<p><code>%D</code>: %D는 %m/%d/%y와 같은 <strong>날짜의 단축 형식</strong>을 나타내는 형식 지시자입니다. %m은 월을, %d는 일을, %y는 연도의 끝 두 자리를 나타냅니다. 예를 들어, 06/05/21은 2021년 6월 5일을 나타냅니다.</p>
<p>아래는 각각의 형식 지시자를 사용하여 현재 날짜를 포맷팅하는 예시 코드입니다:</p>
<pre><code class="language-python">import datetime

now = datetime.datetime.now()

# 일 포맷팅 (%d)
day_formatted = now.strftime(&quot;%d&quot;)
print(&quot;일:&quot;, day_formatted)  # 출력: 일: 19

# 날짜 단축 형식 포맷팅 (%D)
date_formatted = now.strftime(&quot;%D&quot;)
print(&quot;날짜:&quot;, date_formatted)  # 출력: 날짜: 06/19/23</code></pre>
<h3 id="🐰💭-format년월일시분초-">🐰💭 .format(*&quot;년월일시분초&quot;) :</h3>
<p>.format(*&quot;년월일시분초&quot;) : 문자열, 리스트 등 앞에 *****을 붙이면 요소 하나하나가 매개변수로 지정됩니다! </p>
<pre><code class="language-python">values = [1, 2, 3, 4, 5]

formatted_string = &quot;{} + {} + {} + {} + {} = {}&quot;.format(*values, sum(values))
print(formatted_string)
</code></pre>
<h3 id="2특정-시간-요소를-교체하기">(2)특정 시간 요소를 교체하기</h3>
<pre><code class="language-python">import datetime
now = datetime.datetime.now()

# 특정 시간 이후의 시간 구하기
print(&quot;# datetime.timedelta로 시간 더하기&quot;)
after = now+datetime.timedelta(weeks=1, days=1, hours=1, minutes=1, seconds=1)
print(after.strftime(&quot;%Y{} %m{} %d{} %H{} %M{} %S{}&quot;).format(*&quot;년월일시분초&quot;))
print()

# 특정 시간 요소 교체하기
print(&quot;#now.replace()로 1년 더하기&quot;)
output = now.replace(year=(now.year+1))
print(output.strftime(&quot;%Y{} %m{} %d{} %H{} %M{} %S{}&quot;).format(*&quot;년월일시분초&quot;))
</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/76d3f047-38ab-458f-b93f-3f0fdf7e6ad4/image.JPG" alt=""></p>
</blockquote>
<ul>
<li><code>datetime.timedelta()</code>:
datetime.timedelta() 함수는 두 날짜 또는 시간 간격을 나타내는 클래스인 timedelta 객체를 생성합니다.
timedelta 객체는_ 일(day), 시간(hour), 분(minute), 초(second), 마이크로초(microsecond)_ 등의 시간 간격을 다룰 수 있습니다.
timedelta 객체를 사용하여 날짜나 시간에 특정 시간 간격을 <em>더하거나 빼는 등의 연산을 수행할 수 있습니다.</em> 1년후,2년 후 등의 몇년 후를 구하는 기능은 없습니당. <strong>1년후를 구할 때는 replace()함수를 사용하여 아예 날짜 값을 교체하는 것이 일반적</strong>입니다!  </li>
</ul>
<pre><code class="language-python">import datetime

# 현재 시간
now = datetime.datetime.now()

# 1주일, 1일, 1시간, 1분, 1초를 더한 시간 구하기
after = now + datetime.timedelta(weeks=1, days=1, hours=1, minutes=1, seconds=1)
print(after)  # 예시 출력: 2023-06-27 19:42:08.288347
</code></pre>
<p>위의 예시 코드에서는 datetime.timedelta() 함수를 사용하여 현재 시간 now에 1주일, 1일, 1시간, 1분, 1초를 더한 after 변수를 계산하고 출력합니다. timedelta() 함수의 인수로 시간 간격을 지정하여 더할 수 있으며, 이를 통해 특정 시간 이후 또는 이전의 시간을 계산할 수 있습니다.</p>
<ul>
<li><code>replace()</code> 메서드는 datetime 객체의 특정 시간 요소를 교체한 새로운 datetime 객체를 반환합니다.
교체할 시간 요소를 인수로 전달하여, 해당 시간 요소만 변경된 객체를 생성합니다. 다른 시간 요소는 유지됩니다.
.replace() 메서드는 연도(year), 월(month), 일(day), 시(hour), 분(minute), 초(second), 마이크로초(microsecond) 등의 시간 요소를 변경할 수 있습니다.</li>
</ul>
<p>예시 코드:</p>
<pre><code class="language-python">import datetime

# 현재 시간
now = datetime.datetime.now()

# 연도를 1년 뒤로 변경
output = now.replace(year=now.year + 1)
print(output)  # 예시 출력: 2024-06-19 18:41:23.615268
</code></pre>
<hr>
<h2 id="5️⃣-time-module">5️⃣ time module</h2>
<p>time 모듈은 파이썬의 내장 모듈 중 하나로, <strong>시간과 관련된 기능</strong>을 제공합니다. 이 모듈은 시간을 측정하고 제어하는 함수와 클래스를 포함하고 있으며, 시간 기반의 작업을 수행하는 데 유용합니다.</p>
<p>자주 사용되는 time 모듈의 클래스와 함수에는 다음과 같은 것들이 있습니다:</p>
<table>
<thead>
<tr>
<th></th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td><strong>time.time()</strong></td>
<td align="left">현재 시간을 실수로 반환하는 함수. 반환 값은 1970년 1월 1일 0시 0분 0초(UTC) 이후로 경과한 시간을 <strong>초 단위</strong>로 나타냄.</td>
</tr>
<tr>
<td><strong>time.sleep(seconds)</strong></td>
<td align="left">주어진 시간(초)만큼 프로그램의 실행을 멈춥니다. 이 함수를 사용하여 프로그램의 실행을 지연시키거나 일시 정지시킬 수 있다.</td>
</tr>
<tr>
<td><strong>time.localtime([seconds])</strong></td>
<td align="left">주어진 시간(초)에 대한 로컬 시간</td>
</tr>
<tr>
<td><strong>time.strftime(format[, struct_time])</strong></td>
<td align="left">time.struct_time 객체를 지정된 형식 문자열로 변환</td>
</tr>
<tr>
<td><strong>time.gmtime([seconds])</strong></td>
<td align="left">주어진 시간(초)에 대한 UTC(협정 세계시) 시간</td>
</tr>
<tr>
<td><strong>time.mktime(struct_time)</strong></td>
<td align="left">time.struct_time 객체를 주어진 시간의 초 단위로 변환</td>
</tr>
<tr>
<td><strong>time.process_time()</strong></td>
<td align="left">현재 프로세스의 CPU 시간</td>
</tr>
</tbody></table>
<p>위의 함수들은 time 모듈에서 자주 사용되는 함수 중 일부입니다. 이외에도 더 다양한 함수와 기능이 제공되며, 시간 관련 작업에 유용하게 사용할 수 있습니다.</p>
<h3 id="🐰💭-datetime-모듈🆚time-모듈-❗">🐰💭 datetime 모듈🆚time 모듈 ❗</h3>
<p>datetime 모듈과 time 모듈은 모두 파이썬의 내장 모듈이며, 시간과 관련된 작업을 처리하는 데 사용됩니다. 두 모듈은 비슷한 기능을 가지고 있지만 _목적_과 _사용법_에서 약간의 차이가 있습니다.</p>
<ul>
<li>날짜와 시간 표현: <ul>
<li>datetime 모듈: datetime 모듈은 날짜(date)와 시간(time)을 함께 표현하는 datetime 클래스를 제공합니다. 이 클래스는 날짜와 시간을 조작하고 비교하는 메서드를 포함하고 있습니다. datetime 클래스는 년, 월, 일, 시, 분, 초, 마이크로초 등의 시간 구성 요소를 다룰 수 있습니다.</li>
<li>time 모듈: time 모듈은 시간(time)을 주로 다루는 함수와 클래스를 제공합니다. time 모듈에서는 시간을 초(second) 단위로 표현하며, 시, 분, 초를 다루는 메서드를 제공합니다.</li>
</ul>
</li>
</ul>
<ul>
<li><p>시간 정보의 표현 방식:</p>
<ul>
<li>datetime 모듈: datetime 모듈에서는 날짜와 시간을 각각의 클래스로 나타내고 조작합니다. 날짜와 시간을 함께 다루는 datetime 클래스를 사용하여 표현하고 조작합니다.</li>
<li>time 모듈: time 모듈에서는 주로 시간을 초 단위로 표현하고 다룹니다. 시, 분, 초를 각각의 메서드로 다루며, 시간 간격을 나타내는 timedelta 클래스를 사용하여 표현하고 조작합니다.</li>
</ul>
</li>
<li><p>용도:</p>
<ul>
<li>datetime 모듈: datetime 모듈은 주로 날짜와 시간을 다루는 작업에 사용됩니다. 날짜와 시간의 <strong>생성, 조작, 포맷팅, 비교</strong> 등에 유용합니다.</li>
<li>time 모듈: time 모듈은 주로 시간 관련 작업에 사용됩니다. <strong>시간 측정, 지연, 형식화, 로컬 및 UTC 시간 변환</strong> 등을 다룹니다.
요약하자면, _datetime 모듈은 날짜와 시간을 함께 다루는 데 사용되고, time 모듈은 시간을 초 단위로 다루는 데 사용_됩니다. 두 모듈은 비슷한 작업을 수행하지만 목적과 사용법에서 약간의 차이가 있으므로 적절한 모듈을 선택하여 시간 관련 작업을 수행하면 됩니다.</li>
</ul>
</li>
</ul>
<pre><code class="language-python">import time

print(&quot;지금부터 5초동안 정지합니다!&quot;)
time.sleep(5)
print(&quot;프로그램을 종료합니다&quot;)</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/d29fcdef-446c-40af-b263-db388815c421/image.JPG" alt=""></p>
</blockquote>
<pre><code class="language-python">import time

print(&quot;지금부터 5초동안 정지합니다!&quot;)

for second in range(1, 6):
    time.sleep(1)
    print(second, &quot;초&quot;)



print(&quot;프로그램을 종료합니다!!&quot;)</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/f9ecb399-ddee-4855-919a-2009bb9df965/image.JPG" alt=""></p>
</blockquote>
<hr>
<h2 id="6️⃣-urllib-module">6️⃣ urllib module</h2>
<p>urllib 모듈은 파이썬에서 URL(Uniform Resource Locator)을 다루는 데 사용되는 라이브러리입니다. 이 모듈은 HTTP, HTTPS, FTP 등의 프로토콜을 사용하여 웹 서버와 통신하고 데이터를 다운로드하거나 업로드하는 기능을 제공합니다. urllib 모듈은 파이썬의 표준 라이브러리로 제공되며, urllib.request, urllib.parse, urllib.error, urllib.robotparser 등의 모듈로 구성됩니다.</p>
<p>urllib 모듈의 주요 기능은 다음과 같습니다:</p>
<table>
<thead>
<tr>
<th></th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td><strong>urlopen()</strong></td>
<td align="left">URL을 열고 웹 서버로부터 데이터를 읽기</td>
</tr>
<tr>
<td><strong>urllib.request.urlretrieve()</strong></td>
<td align="left">파일 다운로드</td>
</tr>
<tr>
<td><strong>urllib.request.urlopen()</strong></td>
<td align="left">데이터를 POST 또는 PUT 메서드를 사용하여 서버로 업로드</td>
</tr>
<tr>
<td><strong>urllib.parse</strong></td>
<td align="left">URL을 구문 분석, 조작</td>
</tr>
<tr>
<td><strong>urllib.error</strong></td>
<td align="left">URL 열기 중 발생하는 오류를 처리</td>
</tr>
<tr>
<td><strong>urllib.robotparser</strong></td>
<td align="left">웹 사이트의 로봇 제어 규약(Robots.txt) 파일을 파싱</td>
</tr>
</tbody></table>
<p>urllib 모듈은 <em>웹 스크래핑, 웹 데이터 수집, 웹 API와의 상호 작용</em> 등 다양한 웹 관련 작업에 유용하게 사용될 수 있습니다.</p>
<pre><code class="language-python">from urllib import request

target=request.urlopen(&quot;http://google.com&quot;)
output=target.read()

print(output)</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/d2bd6304-7dae-42b4-af9d-7965b31c753b/image.JPG" alt=""></p>
</blockquote>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/fb2d4009-14d0-4565-a954-02155ed50534/image.JPG" alt=""></p>
</blockquote>
<p>실행결과를 보면 앞에 <strong>&quot;b&quot;</strong>라는 글자는 <code>binary data</code>를 의미하는 것입니다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌘textfile1️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/0603textfile</link>
            <guid>https://velog.io/@gamja-kawaii/0603textfile</guid>
            <pubDate>Mon, 19 Jun 2023 09:51:55 GMT</pubDate>
            <description><![CDATA[<h2 id="1️⃣read-readlinereadlines">1️⃣read()/ readline()/readlines()</h2>
<h3 id="💛1-read">💛(1) read()</h3>
<pre><code class="language-python">f=open(&#39;/Users/choa/Desktop/5674-734/stockcode.txt&#39;,&#39;r&#39;,encoding=&#39;cp949&#39;)
data=f.read()
print(data)
f.close()</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/6d851f72-ce07-43ae-b2ea-966a288ac738/image.png" alt=""></p>
</blockquote>
<h3 id="💛2-readline">💛(2) readline()</h3>
<pre><code class="language-python">f=open(&#39;/Users/choa/Desktop/5674-734/stockcode.txt&#39;,&#39;r&#39;,encoding=&#39;cp949&#39;)
line_num=1
line=f.readline()
while line:
    print(&quot;%d %s&quot;%(line_num,line),end=&#39;&#39;)
    line=f.readline()
    line_num+=1

f.close()</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/31d3b0af-29aa-4829-a99a-1468e06bab32/image.png" alt=""></p>
</blockquote>
<h3 id="💛3-readlines">💛(3) readlines()</h3>
<pre><code class="language-python">f=open(&#39;/Users/choa/Desktop/5674-734/stockcode.txt&#39;,&#39;r&#39;,encoding=&#39;cp949&#39;)
lines=f.readlines()
for line_num,line in enumerate(lines):
    print(&#39;%d_%s&#39;%(line_num+1,line))
f.close()</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/8d49bb9b-a75e-4332-82b4-18d923b9fa53/image.png" alt=""></p>
</blockquote>
<h4 id="readline-🆚-readlines">readline() 🆚 readlines()</h4>
<ul>
<li>🐰💭 <code>readline()</code>: readline() 함수는 파일에서 <code>한 줄씩</code> 읽어옵니다. 읽어온 줄은 <strong>문자열로 반환</strong>됩니다. 읽어온 줄에는 개행 문자 <code>\n</code>이 포함되어 있으며, 반환된 문자열도 개행 문자를 포함합니다. 따라서, readline() 함수로 한 줄을 읽을 때 개행 문자까지 포함하여 출력됩니다.</li>
<li>🐰💭<code>readlines()</code>: readlines() 함수는 파일의 <code>모든 줄</code>을 읽어와 <strong>리스트로 반환</strong>합니다. 각 줄은 리스트의 요소로 저장되며, 개행 문자 <code>\n</code>은 각 요소의 끝에 포함됩니다. 따라서, readlines() 함수로 모든 줄을 읽을 때 개행 문자까지 포함하여 출력됩니다.
예를 들어, 다음과 같은 파일이 있다고 가정합니다:<pre><code class="language-python">Hello
World</code></pre>
</li>
</ul>
<p>readline() 함수로 한 줄을 읽으면 개행 문자를 포함한 <code>문자열</code>이 반환됩니다❗:</p>
<pre><code class="language-poython">f = open(&#39;file.txt&#39;, &#39;r&#39;)
line = f.readline()
print(line)  # &#39;Hello\n&#39;
f.close()</code></pre>
<p>readlines()함수로 모든 줄을 읽으면 개행 문자를 포함한 <code>리스트</code>가 반환됩니다❗:</p>
<pre><code class="language-python">f = open(&#39;file.txt&#39;, &#39;r&#39;)
lines = f.readlines()
print(lines)  # [&#39;Hello\n&#39;, &#39;World\n&#39;]
f.close()</code></pre>
<p>개행 문자를 포함하여 출력되는 것은 readline() 함수와 readlines() 함수의 동작 방식에 따른 결과입니다.</p>
<hr>
<h2 id="2️⃣writewritelines">2️⃣write()/writelines()</h2>
<h3 id="💛1-write">💛(1) write()</h3>
<pre><code class="language-python">text=input(&quot;파일에 저장할 내용을 입력하세요@^@&quot;)
f=open(&#39;mydata.txt&#39;,&#39;w&#39;)
f.write(text)
f.close()</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/07d7454e-5a50-4a54-9775-c94c7c45263c/image.png" alt=""></p>
</blockquote>
<h3 id="💛2-writelines">💛(2) writelines()</h3>
<pre><code class="language-python">count=1
data=[]
print(&#39;파일에 내용을 저장하려면 내용을 입력하지 말고 [Enter]키를 누르세요&#39;)
while True:
    text=input(&quot;[%d]파일에 저장할 내용을 입력하세요.&quot;%count)
    if text==&#39;&#39;:
        break
    data.append(text+&#39;\n&#39;)
    count+=1

f=open(&#39;mydata.txt&#39;,&#39;w&#39;)
f.writelines(data)
f.close()</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/fd1032d2-c792-4c2a-a449-c41a995baaef/image.png" alt=""></p>
</blockquote>
<p>write()와 writelines()는 모두 파일에 데이터를 쓰는 함수입니다. 그러나 사용 방식과 동작에 차이가 있습니다.</p>
<h4 id="write-🆚-writelines">write() 🆚 writelines()</h4>
<ul>
<li>🐰💭<code>write()</code>: write() 함수는 인자로 전달된 문자열을 파일에 씁니다. 이 함수는<code>단일한 문자열</code>만을 받을 수 있으며, 개행 문자를 자동으로 추가하지 않습니다. 따라서, 개행 문자를 직접 추가해주어야 합니다.</li>
</ul>
<p>예시:</p>
<pre><code class="language-python">f = open(&#39;file.txt&#39;, &#39;w&#39;)
f.write(&#39;Hello&#39;)
f.write(&#39;World&#39;)
f.close()</code></pre>
<p>위의 코드는 &#39;file.txt&#39; 파일에 &quot;HelloWorld&quot;라는 내용을 씁니다.</p>
<ul>
<li>🐰💭<code>writelines()</code>: writelines() 함수는<code>여러 줄의 문자열</code>을 파일에 씁니다. 인자로 전달된 문자열의 리스트나 이터러블 객체를 받아들여 각 요소를 파일에 씁니다. writelines() 함수는 개행 문자를 추가하지 않으므로, 각 문자열 요소가 개행 문자로 구분된다면 개행 문자도 직접 포함해야 합니다.</li>
</ul>
<p>예시:</p>
<pre><code class="language-python">f = open(&#39;file.txt&#39;, &#39;w&#39;)
lines = [&#39;Hello\n&#39;, &#39;World\n&#39;]
f.writelines(lines)
f.close()</code></pre>
<p>위의 코드는 &#39;file.txt&#39; 파일에 &quot;Hello&quot;와 &quot;World&quot;를 개행하여 씁니다.</p>
<p>따라서, write() 함수는 _단일 문자열_을 파일에 쓸 때 사용하고, writelines() 함수는 _여러 줄의 문자열_을 파일에 쓸 때 사용합니다.</p>
<hr>
<h2 id="3️⃣텍스트-파일바이너리-파일-복사하기">3️⃣텍스트 파일/바이너리 파일 복사하기</h2>
<h3 id="💛1-텍스트-파일-복사하기">💛(1) 텍스트 파일 복사하기</h3>
<pre><code class="language-python">f=open(&#39;/Users/choa/Desktop/5674-734/stockcode.txt&#39;,&#39;r&#39;,encoding=&#39;cp949&#39;)
h=open(&#39;/Users/choa/Documents/python/stockcode_copy.txt&#39;,&#39;w&#39;)

data=f.read()
h.write(data)

f.close()
h.close()</code></pre>
<h3 id="💛2-바이너리-파일-복사하기">💛(2) 바이너리 파일 복사하기</h3>
<pre><code class="language-python">bufsize=1024
f=open(&#39;/Users/choa/Desktop/5674-734/img_sample.jpg&#39;,&#39;rb&#39;)
h=open(&#39;img_sample_copy.jpg&#39;,&#39;wb&#39;)

data=f.read(bufsize)
while data:
    h.write(data)
    data=f.read(bufsize)

f.close()
h.close()</code></pre>
<p>바이너리 파일은 텍스트 파일과 달리 <em>인코딩을 지정할 필요가 없습니다.</em> <strong>바이너리 파일은 텍스트가 아닌 이진 데이터로 구성되어 있기 때문에 인코딩이나 디코딩 과정이 필요하지 않습니다</strong>.</p>
<p>바이너리 파일을 열 때는 파일을 바이너리 모드(<code>&#39;rb&#39;</code> 또는 <code>&#39;wb&#39;</code>)로 열어야 합니다. <code>&#39;rb&#39; 모드는 바이너리 파일을 읽기 모드</code>로 열고, <code>&#39;wb&#39; 모드는 바이너리 파일을 쓰기 모드</code>로 엽니다.</p>
<p>예를 들어, 바이너리 파일을 읽고 복사하는 코드는 다음과 같습니다:</p>
<pre><code class="language-python">with open(&#39;input.bin&#39;, &#39;rb&#39;) as f:
    data = f.read()

with open(&#39;output.bin&#39;, &#39;wb&#39;) as h:
    h.write(data)</code></pre>
<p>위의 코드에서 &#39;input.bin&#39;은 읽을 바이너리 파일의 경로이고, &#39;output.bin&#39;은 쓸 바이너리 파일의 경로입니다. rb 모드로 파일을 열어 데이터를 읽고, wb 모드로 파일을 열어 데이터를 씁니다. <strong>인코딩 매개변수를 사용하지 않는 것에 유의해 주세요.</strong></p>
<ul>
<li>🐰💭 컴퓨터에서 파일 크기를 표현하는 단위인 <code>킬로바이트(KB)는 1024 바이트를 의미</code>합니다. 따라서, <strong>1KB는 1024 바이트</strong>를 의미합니다.</li>
</ul>
<p>만약 파일을 256KB 단위로 읽고 싶은경우에는 _bufsize를 256*1024로 정의_하면 됩니다! </p>
<hr>
<h2 id="4️⃣-파일을-열고-자동으로-닫기-withas">4️⃣ 파일을 열고 자동으로 닫기 (with~as)</h2>
<pre><code class="language-python">with open(&#39;/Users/choa/Desktop/5674-734/stockcode.txt&#39;,&#39;r&#39;,encoding=&#39;cp949&#39;)as f:
    for line_num,line in enumerate(f.readlines()):
        print(&quot;%d_%s&quot;%(line_num,line),end=&#39;&#39;)</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/042b0d03-e878-47b1-b482-a3c82ad52a98/image.png" alt=""></p>
</blockquote>
<ul>
<li>🐰💭<code>with~as</code>문은 파일이나 리소스와 같은 객체를 사용한 후에 자동으로 정리(clean-up)하기 위해 사용되는 구문입니다. with문을 사용하면 파일을 열거나 다른 리소스를 <em>사용한 후에 별도의 close() 함수를 호출하지 않아도 됩니다.</em></li>
</ul>
<p>일반적으로 파일을 다룰 때 open() 함수로 파일을 열고, 작업을 마친 후에 close() 함수로 파일을 닫아야 합니다. 그러나 with문을 사용하면 파일을 열고 사용한 후에 자동으로 파일을 닫아줍니다. 이렇게 함으로써 파일을 열고 닫는 과정을 명시적으로 처리하지 않아도 되므로 코드가 더 간결해집니다.</p>
<p>with문은 다음과 같은 구문으로 사용됩니다:</p>
<pre><code class="language-python">with open(&#39;파일경로&#39;, &#39;모드&#39;) as 파일객체:
    # 파일을 사용하는 코드
    # 파일객체를 통해 파일을 읽거나 쓰는 작업을 수행</code></pre>
<p>with문은 파일객체를 생성하고 해당 블록 내에서 사용한 후에 자동으로 파일을 닫아줍니다. 파일 객체를 파일객체라는 변수에 할당하고, 해당 변수를 통해 파일을 읽거나 쓰는 작업을 수행합니다. with문을 빠져나오면 파일 객체가 자동으로 닫힙니다.</p>
<hr>
<h2 id="5️⃣ㅍㅏ일의-특정-부분만-복사하기seekreadwrite">5️⃣ㅍㅏ일의 특정 부분만 복사하기(seek,read,write)</h2>
<pre><code class="language-python">spos=105
size=500

f=open(&#39;/Users/choa/Desktop/5674-734/stockcode.txt&#39;,&#39;r&#39;,encoding=&#39;cp949&#39;)
h=open(&#39;/Users/choa/Documents/python/stockcode_2.txt&#39;,&#39;w&#39;)

f.seek(spos)
data=f.read(size) # ?? 
h.write(data)

h.close()
f.close()</code></pre>
<p><strong>🐰💭 특정 위치에서부터 일정 크기만큼 데이터를 읽어와서 다른 파일에 쓰는 예시</strong></p>
<ol>
<li>spos 변수는 파일에서 데이터를 _읽을 시작 위치를 지정하는 변수_입니다. 이 값은 파일 내에서의 오프셋(offset)을 나타냅니다.</li>
<li>size 변수는 읽어올 데이터의 _크기를 지정하는 변수_입니다. 이 값은 바이트 단위로 지정됩니다.</li>
</ol>
<pre><code class="language-python">f.seek(spos)
data = f.read(size)</code></pre>
<p>위의 코드는<code>seek()</code> 메서드를 사용하여 파일 포인터를 spos 위치로 이동시킵니다. 파일 포인터는 파일 내에서 현재의 위치를 가리키는 역할을 합니다. seek() 메서드를 사용하여 파일 포인터를 이동시킨 후,<em>해당 위치에서부터 size만큼의 데이터를 읽어옵니다. _ _read() 메서드를 사용하여 읽어온 데이터는 data 변수에 저장됩니다.</em></p>
<pre><code class="language-python">h.write(data)</code></pre>
<p>어온 데이터인 data를 다른 파일에 씁니다. <code>write()</code>메서드를 사용하여 데이터를 파일에 씁니다.</p>
<p>마지막으로 h.close()와 f.close()를 사용하여 파일 객체를 닫아줍니다. 파일을 사용한 후에는 항상 파일을 닫아 리소스를 해제하는 것이 좋습니다.</p>
<p>따라서, 주어진 코드는 stockcode.txt 파일에서 spos 위치부터 size 크기만큼의 데이터를 읽어와서 stockcode_2.txt 파일에 쓰는 기능을 수행합니다.</p>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/45edba82-e5b8-4057-83a7-25be6ee517f2/image.png" alt=""></p>
</blockquote>
<hr>
<h2 id="6️⃣파일-크기-구하기">6️⃣파일 크기 구하기</h2>
<pre><code class="language-python">from os.path import getsize

file1=&#39;/Users/choa/Desktop/5674-734/stockcode.txt&#39;
file2=&#39;/Users/choa/Desktop/5674-734/img_sample.jpg&#39;
file_size1=getsize(file1)
file_size2=getsize(file2)

print(&#39;File Name:%s\tFile Size:%d&#39;%(file1,file_size1))
print(&#39;File Name:%s\tFile Size:%d&#39;%(file2,file_size2))</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/131a5848-6589-46c8-a4da-128f3a260980/image.png" alt=""></p>
</blockquote>
<p><code>os.path 모듈</code>의 <code>getsize()</code> 함수를 사용하여 <strong>파일의 크기</strong>를 가져옵니다.</p>
<p>os.path 모듈은 파일 경로와 관련된 작업을 수행하기 위한 함수들을 제공하는 파이썬 내장 모듈입니다. 몇 가지 os.path 모듈의 주요 함수와 속성을 살펴보겠습니다:</p>
<table>
<thead>
<tr>
<th>경로관련</th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td>os.path.abspath(path)</td>
<td align="left">주어진 경로의 절대 경로를 반환합니다.</td>
</tr>
<tr>
<td>os.path.basename(path)</td>
<td align="left">주어진 경로의 기본 파일 이름을 반환합니다.</td>
</tr>
<tr>
<td>os.path.dirname(path)</td>
<td align="left">주어진 경로의 디렉토리 이름을 반환합니다.</td>
</tr>
<tr>
<td>os.path.exists(path)</td>
<td align="left">주어진 경로가 존재하는지 여부를 확인합니다.</td>
</tr>
<tr>
<td>os.path.isfile(path)</td>
<td align="left">주어진 경로가 파일인지 여부를 확인합니다.</td>
</tr>
<tr>
<td>os.path.isdir(path)</td>
<td align="left">주어진 경로가 디렉토리인지 여부를 확인합니다.</td>
</tr>
<tr>
<td>os.path.join(path1, path2, ...)</td>
<td align="left">주어진 경로 요소들을 연결하여 새로운 경로를 생성합니다.</td>
</tr>
<tr>
<td>os.path.split(path)</td>
<td align="left">주어진 경로를 디렉토리 부분과 파일 부분으로 나누어 튜플로 반환합니다.</td>
</tr>
<tr>
<td>os.path.splitext(path)</td>
<td align="left">주어진 경로의 확장자를 포함하지 않은 파일 이름과 확장자를 튜플로 반환합니다.</td>
</tr>
<tr>
<td>os.path.getsize(path)</td>
<td align="left">주어진 경로의 파일 크기를 반환합니다.</td>
</tr>
<tr>
<td>os.path.isabs(path)</td>
<td align="left">주어진 경로가 절대 경로인지 여부를 확인합니다.</td>
</tr>
<tr>
<td>os.path.normpath(path)</td>
<td align="left">주어진 경로를 정규화하여 반환합니다.</td>
</tr>
</tbody></table>
<hr>
<h2 id="7️⃣파일삭제하기-osremove">7️⃣파일삭제하기 os.remove</h2>
<pre><code class="language-pythom">from os import remove

target_file=&#39;/Users/choa/Documents/python/stockcode_2.txt&#39;
k=input(&#39;[%s]파일을 삭제하겠습니까?(y/n)&#39;%target_file)
if k==&#39;y&#39;:
    remove(target_file)
    print(&#39;[%s]를 삭제했습니다&#39;%target_file)</code></pre>
<blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/34489c58-71ba-4874-a339-15403cf36eaf/image.png" alt=""></p>
</blockquote>
<p>os 모듈은 파이썬의 표준 라이브러리 중 하나로, 운영 체제와 상호 작용하기 위한 다양한 기능을 제공합니다. 몇 가지 주요한 os 모듈의 기능은 다음과 같습니다:</p>
<table>
<thead>
<tr>
<th>파일 및 디렉토리 작업</th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td>os.remove(path)</td>
<td align="left">파일을 삭제합니다.</td>
</tr>
<tr>
<td>os.rename(src, dst)</td>
<td align="left">파일 또는 디렉토리의 이름을 변경합니다.</td>
</tr>
<tr>
<td>os.mkdir(path)</td>
<td align="left">디렉토리를 생성합니다.</td>
</tr>
<tr>
<td>os.rmdir(path)</td>
<td align="left">디렉토리를 삭제합니다.</td>
</tr>
</tbody></table>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌘문자열&리스트1️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/05241</link>
            <guid>https://velog.io/@gamja-kawaii/05241</guid>
            <pubDate>Wed, 31 May 2023 15:16:04 GMT</pubDate>
            <description><![CDATA[<h2 id="♨_♨">♨_♨</h2>
<h2 id="1️⃣-포맷문자열x02x">1️⃣ 포맷문자열(%x)(%02x)</h2>
<p>포맷 문자열 <code>%x</code>와 <code>%02x</code>는 모두 <strong>정수를 16진수</strong>로 표현하는 데 사용됩니다. 그러나 이들의 차이점은 출력 결과의 형식입니다.</p>
<p>%x는 주어진 정수를 16진수로 변환하고 출력하는데, 만약 변환된 16진수가 한 자리 수라면 그대로 출력됩니다. 예를 들어, 정수 10은 16진수로 &#39;a&#39;로 표현되며, %x 포맷 문자열을 사용하면 &#39;a&#39;가 출력됩니다.</p>
<p>반면에 %02x는 주어진 정수를 16진수로 변환하고 출력하는데, 변환된 16진수가 한 자리 수라면 앞에 0을 붙여 두 자리로 표현합니다. 따라서, 정수 10은 16진수로 &#39;0a&#39;로 표현되며, %02x 포맷 문자열을 사용하면 &#39;0a&#39;가 출력됩니다.</p>
<ul>
<li>example  <pre><code class="language-python">number = 10
print(&quot;%x&quot; % number)   # 출력: a
print(&quot;%02x&quot; % number) # 출력: 0a</code></pre>
따라서, %x와 %02x는 동일한 값을 16진수로 표현하지만 _출력 결과의 자릿수가 다르다는 점에서 차이_가 있습니다.</li>
</ul>
<hr>
<pre><code class="language-python">b1=bin(97)
b2=bin(98)
ret1=b1+b2
print(ret1)
print(type(ret1))


a=int(b1,2)
b=int(b2,2)
ret2=a+b
print(ret2)
print(bin(ret2))</code></pre>
<h3 id="🧡--aintb12-가뭐야-">🧡  <code>a=int(b1,2) 가뭐야 ?</code></h3>
<p>a=int(b1,2)는 문자열로 표현된 이진수인 b1을 십진수로 변환하는 과정입니다.</p>
<p>bin(97)은 정수 97을 이진수로 표현한 <strong>문자열을 반환</strong>합니다. <em>따라서 b1의 값은 &#39;0b1100001&#39;입니다.</em> 여기서 &#39;0b&#39;는 이진수를 나타내는 접두사입니다.</p>
<p>int(b1, 2)는 문자열 b1을 이진수로 해석하여 해당하는 십진수 값을 반환합니다. <strong>두 번째 인자로 2를 전달하여 이진수임을 명시</strong>합니다. 이 경우 int(b1, 2)는 문자열 &#39;0b1100001&#39;을 이진수로 해석하여 정수 값 97을 반환합니다.</p>
<p>따라서, a=int(b1,2)는 이진수 문자열인 b1을 십진수로 변환하여 변수 a에 할당하는 것을 의미합니다.</p>
<hr>
<pre><code class="language-python">bnum = 0b11110000  # 이진수 (2진수)
bstr = &#39;0b111100000&#39;  # 이진수 문자열 (2진수)

onum = 0o360  # 8진수
ostr = &#39;0o360&#39;  # 8진수 문자열

hnum = 0xf0  # 16진수
hstr = &#39;0xf0&#39;  # 16진수 문자열

b1 = int(bnum)  # 이진수를 십진수로 변환
b2 = int(bstr, 2)  # 이진수 문자열을 십진수로 변환

o1 = int(onum)  # 8진수를 십진수로 변환
o2 = int(ostr, 8)  # 8진수 문자열을 십진수로 변환

h1 = int(hnum)  # 16진수를 십진수로 변환
h2 = int(hstr, 16)  # 16진수 문자열을 십진수로 변환

print(b1)  # 출력: 240
print(b2)  # 출력: 480
print(o1)  # 출력: 240
print(o2)  # 출력: 240
print(h1)  # 출력: 240
print(h2)  # 출력: 240</code></pre>
<p>각 변수에 할당된 값을 int() 함수를 사용하여 해당 진법에 맞게 십진수로 변환할 수 있습니다. int() 함수의 두 번째 인자로 진법을 지정하면 해당 진법으로 해석됩니다. 예를 들어, int(bstr, 2)에서 두 번째 인자로 2를 전달하여 이진수임을 명시했습니다. 따라서 &#39;0b111100000&#39;은 이진수로 해석되어 십진수 값 480을 반환합니다.</p>
<p>마지막으로, 각 변수의 값을 출력하면 해당 값을 십진수로 변환한 결과가 출력됩니다.</p>
<hr>
<h2 id="2️⃣filter">2️⃣<code>filter()</code></h2>
<h3 id="🧡소수-구하기1">🧡소수 구하기(1)</h3>
<pre><code class="language-python">def getPrime(x):
    if x % 2 == 0:
        return

    for i in range(3, int(x/2), 2):
        if x % i == 0:
            break
    else:
        return x

listdata = [117, 119, 1113, 11113, 11119]
ret = filter(getPrime, listdata)
print(list(ret))  # 출력: [11113, 11119]</code></pre>
<p>getPrime 함수는 주어진 숫자 x가 _소수인지 확인하는 함수_입니다. 함수 내부에서는 다음과 같은 절차를 따릅니다:</p>
<p>x가 짝수인 경우, 즉 x % 2 == 0인 경우 함수에서 바로 리턴합니다. 짝수는 소수가 될 수 없기 때문입니다.
x가 홀수인 경우, for 루프를 사용하여_ 3부터 x/2까지 홀수만 확인_합니다. 이 범위에서 숫자를 나누어 나머지가 0인지 확인합니다.
만약 어떤 숫자 i로 x를 나누었을 때 나머지가 0인 경우, x는 소수가 아니므로 루프를 중단합니다.
소수인 경우, 루프를 모두 거치고 else 절에 도달하여 x를 반환합니다.
listdata 리스트의 각 요소에 대해 getPrime 함수를 적용하여 <strong>소수인 요소만 필터링</strong>하여 결과 리스트를 생성합니다. <code>filter()</code>함수를 사용하여 getPrime 함수를 listdata의 각 요소에 적용하고, list() 함수를 사용하여 필터링된 결과를 리스트로 변환합니다.</p>
<p>최종적으로, listdata에서 소수인 요소들만 출력합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">[11113, 11119]</code></pre>
<h3 id="🧡소수-구하기2">🧡소수 구하기(2)</h3>
<pre><code class="language-python">def getPrime(n):
    ret=[2]
    if n&lt;=2:
        return ret

    for i in range(3,n+1,2):
        for k in range(3,int(i/2),2):
            a=i%k
            if a==0:
                break
        else:
            ret.append(i)
    return ret

ret=getPrime(10)
print(ret)
</code></pre>
<p>3부터 n까지의 홀수에 대해 소수를 판별하는 for 루프입니다. range(3, n + 1, 2)는 3부터 n까지 2씩 증가하는 홀수 범위를 나타냅니다.
내부 for 루프에서는 3부터 i/2까지의 홀수에 대해 i를 나누어 나머지를 계산합니다.
a가 0인 경우, 즉 i가 k로 나누어 떨어진다면 i는 소수가 아니므로 내부 for 루프를 break하여 종료합니다.
내부 for 루프가 정상적으로 종료되었다면, i는 소수로 판별되어 ret.append(i)를 통해 ret 리스트에 i 값을 추가합니다.</p>
<h3 id="🧡-짝수-확인하기">🧡 짝수 확인하기</h3>
<pre><code class="language-python">def is_even(n):
    return n % 2 == 0

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

filtered_numbers = filter(is_even, numbers)
even_numbers = list(filtered_numbers)

print(even_numbers)</code></pre>
<p>위의 예시 코드에서 is_even 함수는 주어진 숫자가 짝수인지 확인하는 함수입니다. <code>filter()</code>함수를 사용하여 is_even 함수를 numbers 리스트의 각 요소에 적용합니다. filter() 함수는 is_even 함수의 결과가 True인 요소들로 이루어진 이터레이터를 반환합니다.</p>
<p>filter() 함수의 결과를 리스트로 변환하기 위해 list() 함수를 사용하여 filtered_numbers를 리스트인 even_numbers로 변환합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">[2, 4, 6, 8, 10]</code></pre>
<hr>
<h2 id="3️⃣--연산자">3️⃣ <code>&amp; 연산자</code></h2>
<pre><code class="language-python">a=107
b=a&amp;0x0f
print(b)

c=(a&gt;&gt;4)&amp;0x0f
print(c)</code></pre>
<p><code>&amp; 연산자</code>를 사용하여 a와 0x0f (16진수로 표현된 15)를 <strong>비트 단위</strong>로 <strong>논리 AND 연산</strong>합니다.
0x0f는 4비트에서 하위 4비트가 1로 설정된 값입니다.
a의 이진 표현과 0x0f의 이진 표현에서 같은 위치의 비트를 비교하고, 둘 다 1인 경우에만 결과의 해당 비트는 1이 됩니다.
따라서, b는 a의 하위 4비트에 해당하는 값이 됩니다.</p>
<p>a 변수를 오른쪽으로 4비트 시프트하여 값을 계산합니다.
 연산자는 이진수를 오른쪽으로 지정된 비트 수만큼 이동시킵니다.
이동된 비트는 버려지고, 왼쪽에는 0이 추가됩니다.
(a &gt;&gt; 4)는 a의 이진 표현을 오른쪽으로 4비트 이동시킨 값을 나타냅니다.
그 다음, &amp; 연산자를 사용하여 이동된 결과와 0x0f를 비트 단위로 논리 AND 연산합니다.
결과적으로 c는 a의 상위 4비트에 해당하는 값이 됩니다.
c를 출력합니다.</p>
<p>따라서, 위의 코드는 107를 이진수로 표현했을 때의 하위 4비트인 11을 b에 저장하고 출력하며, 상위 4비트인 0110을 c에 저장하고 출력합니다.</p>
<hr>
<h2 id="4️⃣-문자열-슬라이싱">4️⃣ 문자열 슬라이싱</h2>
<h3 id="🧡-2vs2">🧡 [::2]vs[:2]</h3>
<p><code>문자열의 슬라이싱</code>에서 <code>::2</code>와 <code>:2</code>는 서로 다른 동작을 합니다.</p>
<p><code>::2</code>: 이 표현은 <strong>문자열의 처음부터 끝까지 전체 문자열을 선택하되, 스텝(step) 값을 2로 설정하여 2칸씩 건너뛰며 선택하는 것을 의미</strong>합니다. 즉, 문자열에서 홀수 인덱스(0을 기준으로 홀수 번째)에 해당하는 문자들만 선택하여 반환합니다.
<code>:2</code>: 이 표현은 문자열의 <strong>시작부터 1번 인덱스(두 번째 문자)까지 선택하는 것을 의미</strong>합니다. 슬라이싱의 끝 인덱스가 포함되지 않으므로, 0번 인덱스와 1번 인덱스에 해당하는 두 개의 문자가 선택되어 반환됩니다.</p>
<p>예를 들어, 문자열이 &#39;Hello, World!&#39;인 경우:</p>
<p>&#39;Hello, World!&#39;[::2]는 <code>&#39;Hlo ol!&#39;</code>를 반환합니다. 시작부터 끝까지 스텝 2로 선택하므로 홀수 인덱스에 해당하는 문자들이 선택됩니다.
&#39;Hello, World!&#39;[:2]는 <code>&#39;He&#39;</code>를 반환합니다. 시작부터 1번 인덱스까지 선택하므로 0번 인덱스와 1번 인덱스에 해당하는 &#39;H&#39;와 &#39;e&#39;가 선택됩니다.
따라서, ::2와 :2는 문자열의 슬라이싱 동작에서 서로 다른 결과를 반환합니다.</p>
<hr>
<h3 id="🧡-1">🧡[::-1]</h3>
<pre><code class="language-python">txt = &#39;abcdefghikklmnop&#39;
ret = txt[::-1]</code></pre>
<p><code>txt[::-1]</code>은 문자열을 뒤집는 슬라이싱 기법을 사용합니다. [::-1]은 문자열의 처음부터 끝까지 전체 문자열을 선택하되, 스텝(step) 값을 -1로 설정하여 역순으로 선택하는 것을 의미합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">&#39;ponmlkkikjhgfedcba&#39;</code></pre>
<h3 id="🧡-2">🧡[::-2]</h3>
<pre><code class="language-python">txt = &#39;abcdefghikklmnop&#39;
ret = txt[::-1]</code></pre>
<p><code>txt[::-2]</code>는 문자열을 역순으로 선택하되, 스텝(step) 값을 -2로 설정하여 2칸씩 건너뛰며 선택하는 것을 의미합니다.
따라서, txt의 모든 문자를 역순으로 선택하면서 2칸씩 건너뛰어 선택합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">&#39;pomkmigeca&#39;</code></pre>
<h3 id="🧡-2-2">🧡[-2::-2]</h3>
<pre><code class="language-python">txt = &#39;abcdefghikklmnop&#39;
ret = txt[::-1]</code></pre>
<p><code>txt[-2::-2]</code>는 문자열을 뒤에서 2번째 문자부터 역순으로 선택하되, 스텝(step) 값을 -2로 설정하여 2칸씩 건너뛰며 선택하는 것을 의미합니다.
즉, -2 인덱스부터 시작하여 문자열을 뒤로 이동하면서 2칸씩 건너뛰어 선택합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">&#39;oljifdb&#39;</code></pre>
<hr>
<h2 id="5️⃣-문자열-공백-지우기-lstriprstripstrip">5️⃣ 문자열 공백 지우기: lstrip(),rstrip(),strip()</h2>
<pre><code class="language-python">txt = &quot; 양쪽에 공백이 있는 문자열입니다. &quot;
ret1 = txt.lstrip()
ret2 = txt.rstrip()
ret3 = txt.strip()

print(&#39;&lt;&#39; + ret1 + &#39;&gt;&#39;)
print(&#39;&lt;&#39; + ret2 + &#39;&gt;&#39;)
print(&#39;&lt;&#39; + ret3 + &#39;&gt;&#39;)</code></pre>
<p><code>lstrip()</code> 메서드를 사용하여 문자열의** 왼쪽<strong>에 있는 공백을 제거합니다.
<code>rstrip()</code> 메서드를 사용하여 문자열의 **오른쪽</strong>에 있는 공백을 제거합니다.
<code>strip()</code>메서드를 사용하여 문자열 <strong>양쪽</strong>에 있는 공백을 제거합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">&lt;양쪽에 공백이 있는 문자열입니다. &gt;
&lt; 양쪽에 공백이 있는 문자열입니다.&gt;
&lt;양쪽에 공백이 있는 문자열입니다.&gt;</code></pre>
<p>각 결과 문자열 앞 뒤에 &lt;, &gt;가 추가되었고, lstrip()는 왼쪽의 공백을 제거하고, rstrip()는 오른쪽의 공백을 제거하며, strip()은 양쪽의 공백을 제거한 것을 확인할 수 있습니다.</p>
<p>문자열의 모든 공백을 없애기 위해서는 replace() 메서드를 사용할 수 있습니다. replace() 메서드는 문자열 내의 특정 패턴을 다른 문자열로 대체하는 역할을 합니다.</p>
<h3 id="🧡-문자열-모든-공백을-없애려면">🧡 문자열 모든 공백을 없애려면?~?</h3>
<pre><code class="language-python">txt = &quot; 양쪽에 공백이 있는 문자열입니다. &quot;
ret = txt.replace(&quot; &quot;, &quot;&quot;)

print(ret)</code></pre>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code>&quot;양쪽에공백이있는문자열입니다.&quot;</code></pre><p><code>replace(&quot; &quot;, &quot;&quot;)</code>에서 첫 번째 인자로는 대체할 패턴을 지정하고, 두 번째 인자로는 대체할 문자열을 지정합니다. 위의 예시에서는 공백을 빈 문자열 &quot;&quot;로 대체하였습니다.</p>
<p>따라서, <code>replace()</code> 메서드를 활용하여 모든 공백을 제거할 수 있습니다.</p>
<hr>
<h2 id="6️⃣-문자열-조합하기">6️⃣ 문자열 조합하기</h2>
<h3 id="🧡-분리하기--split">🧡 분리하기 : split()</h3>
<pre><code class="language-python">url = &quot;http://www.naver.com/news/today=20230524&quot;
log = &#39;name:이감자 age:8 sex:남자 nation:한국&#39;

ret1 = url.split(&#39;/&#39;)
print(ret1)

ret2 = log.split()
print(type(ret2))
for data in ret2:
    d1, d2 = data.split(&#39;:&#39;)
    print(&#39;%s -&gt; %s&#39; % (d1, d2))</code></pre>
<p><code>split()</code> 메서드를 사용하여 url 문자열을 /을 기준으로 <strong>분리한 결과</strong>를 ret1 변수에 할당합니다. ret1은 분리된 문자열들을 원소로 갖는 <strong>리스트가 됩니다.</strong>
print(ret1)을 통해 ret1 리스트를 출력하면 분리된 각 부분은 _리스트의 원소로 출력_됩니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code>[&#39;http:&#39;, &#39;&#39;, &#39;www.naver.com&#39;, &#39;news&#39;, &#39;today=20230524&#39;]
&lt;class &#39;list&#39;&gt;
name -&gt; 이감자
age -&gt; 8
sex -&gt; 남자
nation -&gt; 한국</code></pre><hr>
<h3 id="🧡-결합하기-join">🧡 결합하기 :join()</h3>
<pre><code class="language-python">loglist = [&quot;2023/05/24 14:43:??&quot;, &#39;500&#39;, &quot;no&quot;, &#39;이 또한 지나가리라~_~&#39;]
bond = &#39;;&#39;
log = bond.join(loglist)
print(log)
print(type(log))</code></pre>
<p><code>join()</code> 메서드를 사용하여 loglist의 각 요소들을 bond 구분자로 결합한 결과를 log 변수에 할당합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code>2023/05/24 14:43:??;500;no;이 또한 지나가리라~_~
&lt;class &#39;str&#39;&gt;</code></pre><p>log 변수에는 loglist의 요소들이 &quot;;&quot;로 구분되어 결합된 문자열이 저장되어 있습니다.
type(log)를 통해 log의 데이터 타입을 확인하면 &lt;class &#39;str&#39;&gt;로 문자열임을 알 수 있습니다.</p>
<hr>
<h2 id="7️⃣-encode">7️⃣ encode()</h2>
<pre><code class="language-python">a_txt = &quot;I love Gamja&quot;
b_txt = a_txt.encode()

print(a_txt)
print(b_txt)
print(type(b_txt))
ret1 = &#39;I&#39; == a_txt[0]
ret2 = &#39;I&#39; == b_txt[0]
print(ret1)
print(ret2)</code></pre>
<p><code>encode()</code> 메서드를 사용하여 a_txt 문자열을 바이트로 인코딩한 결과를 b_txt 변수에 할당합니다.
print(type(b_txt))를 통해 b_txt의 데이터 타입을 출력합니다. b_txt는 바이트 객체이므로 <strong>&lt;class &#39;bytes&#39;&gt;</strong> 가 출력됩니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code>I love Gamja
b&#39;I love Gamja&#39;
&lt;class &#39;bytes&#39;&gt;
True
False</code></pre><p>&#39;I&#39; == b_txt[0]는 b_txt의 첫 번째 바이트가 &#39;I&#39;인지를 비교하여 False를 반환합니다. <em>이는 &#39;I&#39;가 바이트 형태로 인코딩되었기 때문입니다.</em></p>
<hr>
<h2 id="8️⃣-문자열-정렬하기">8️⃣ 문자열 정렬하기</h2>
<h3 id="🧡-sorted">🧡 sorted()</h3>
<pre><code class="language-python">strdata=input(&quot;정렬할 문자를 입력하세요&gt;&quot;)
ret1=sorted(strdata)
ret2=sorted(strdata,reverse=True)

print(ret1)
print(ret2)

ret1=&#39;&#39;.join(ret1)
ret2=&#39;&#39;.join(ret2)
print(&quot;오름차순으로 정렬된 문자열은 &lt;&quot;+ret1+&quot;&gt; 입니다.&quot;)
print(&quot;내림차순으로 정렬된 문자열은 &lt;&quot;+ret2+&quot;&gt; 입니다.&quot;) </code></pre>
<p><code>sorted()</code> 함수를 사용하여 strdata 문자열을 _오름차순_으로 정렬한 결과를 ret1 변수에 저장합니다. 이때, sorted() 함수의 reverse 매개변수를 기본값인 False로 설정하여 오름차순 정렬을 수행합니다.
sorted() 함수를 사용하여 strdata 문자열을 _내림차순_으로 정렬한 결과를 ret2 변수에 저장합니다. 이때, reverse 매개변수를 True로 설정하여 내림차순 정렬을 수행합니다.</p>
<p><code>join() 메서드</code>를 사용하여 정렬된 문자열 리스트를 다시 하나의 문자열로 결합합니다. </p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-pythoon">예시 입력: &quot;openai&quot;
[&#39;a&#39;, &#39;e&#39;, &#39;i&#39;, &#39;n&#39;, &#39;o&#39;, &#39;p&#39;]
[&#39;p&#39;, &#39;o&#39;, &#39;n&#39;, &#39;i&#39;, &#39;e&#39;, &#39;a&#39;]
오름차순으로 정렬된 문자열은 &lt;aeinop&gt; 입니다.
내림차순으로 정렬된 문자열은 &lt;poniea&gt; 입니다.</code></pre>
<hr>
<h2 id="9️⃣-index">9️⃣ index()</h2>
<pre><code class="language-python">solarsys=[&quot;화성&quot;,&#39;태양&#39;,&quot;지구&quot;,&#39;금성&#39;,&quot;목성&quot;,&#39;토성&#39;]
planet=&quot;지구&quot;
pos=solarsys.index(planet)
solarsys[pos]=&quot;천왕성&quot;
print(solarsys)</code></pre>
<p><code>index()</code> 메서드를 사용하여 solarsys 리스트에서 &quot;지구&quot;의 위치를 찾습니다. index() 메서드는 해당 원소가 리스트에서 처음으로 등장하는 인덱스를 반환합니다. 이 인덱스를 pos 변수에 저장합니다.
pos 변수를 사용하여 solarsys 리스트에서 &quot;지구&quot;를 &quot;천왕성&quot;으로 _변경_합니다. 리스트의 해당 위치에 새로운 값을 대입하여 변경합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">  [&#39;화성&#39;, &#39;태양&#39;, &#39;천왕성&#39;, &#39;금성&#39;, &#39;목성&#39;, &#39;토성&#39;]</code></pre>
<hr>
<h2 id="🔟-리스트-슬라이싱">🔟 리스트 슬라이싱</h2>
<h3 id="🧡-리스트12">🧡 리스트[1::2]</h3>
<h3 id="🧡-리스트12-1">🧡 리스트[1:2]</h3>
<pre><code class="language-python">listdata=list(range(1,21))
evenlist=listdata[1::2]
eeeelist=listdata[1:2]
print(evenlist)
print(eeeelist)</code></pre>
<p>listdata는_ 1부터 20까지의 숫자로 구성된 리스트_입니다.
evenlist는 listdata에서 짝수 인덱스에 해당하는 원소들로 이루어진 새로운 리스트입니다. 이를 위해 슬라이싱을 활용하였는데, <code>listdata[1::2]</code>는 <strong>인덱스 1부터 끝까지의 원소들을 2의 간격으로 선택하는 것을 의미</strong>합니다. 따라서 evenlist에는 listdata의 1, 3, 5, ..., 19번 인덱스에 해당하는 원소들이 저장됩니다.
eeeelist는 listdata에서 인덱스 1부터 2까지의 원소들로 이루어진 새로운 리스트입니다. 슬라이싱을 활용하여 <code>listdata[1:2]</code>를 선택하였는데, 이는 인덱스 1부터 1번 인덱스까지의 원소를 선택하는 것입니다. 따라서 eeeelist에는 listdata의 1번 인덱스에 해당하는 원소가 저장됩니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[2]</code></pre>
<p>  evenlist에는 listdata의 짝수 번째 원소들이 저장되어 있고, eeeelist에는 listdata의 1번 인덱스에 해당하는 원소만 저장되어 있음을 확인할 수 있습니다.</p>
<hr>
<h2 id="🔟--1️⃣-리스트-순서-뒤집기">🔟 + 1️⃣ 리스트 순서 뒤집기</h2>
<h3 id="🧡-reverse-🆚-reversed">🧡 reverse 🆚 reversed</h3>
<p>  reverse와 reversed는 리스트의 순서를 뒤집는 데에 사용되는 기능이지만 사용 방식과 동작 방식에서 차이가 있습니다.</p>
<p><code>reverse</code>는 <strong>리스트의 메서드</strong>로, 리스트를** 원본을 변경**하며 역순으로 뒤집습니다. reverse 메서드는 리스트를 직접 수정하여 뒤집는 것이기 때문에 원본 리스트가 변경됩니다. 따라서 reverse 메서드를 호출한 후에는 해당 리스트의 원소들이 역순으로 변경되며 반환값은 없습니다. </p>
<ul>
<li><code>예시</code>: list.reverse()</li>
</ul>
<p><code>reversed</code>는 <strong>내장 함수</strong>로, 리스트를 변경하지 않고 <strong>새로운 이터레이터를 반환</strong>합니다. 이 이터레이터는 원본 리스트의 역순으로 순회할 수 있도록 합니다. reversed 함수를 사용하여 리스트를 역순으로 순회하려면 list 함수로 변환하여 사용하거나, for 루프 등에서 직접 이터레이터를 활용해야 합니다. </p>
<ul>
<li><code>예시</code>: reversed_list = list(reversed(my_list)) 또는 for item in reversed(my_list):</li>
</ul>
<p>요약하면, reverse는 원본 리스트를 직접 변경하고 반환값이 없으며, reversed는 원본 리스트를 변경하지 않고 역순으로 순회할 수 있는 이터레이터를 반환합니다. 따라서 사용 목적과 상황에 맞게 선택하여 사용해야 합니다.</p>
<pre><code class="language-python">listdata1=list(range(5))
listdata1.reverse()

listdata2=list(range(5))
ret1=reversed(listdata2)
print(&quot;원본 리스트&quot;,end=&quot;&quot;)
print(listdata2)
print(&quot;역순 리스트&quot;,end=&#39;&#39;);print(list(ret1))

ret2=listdata2[::-1]
print(&#39;슬라이싱 이용&#39;,end=&#39;&#39;);print(ret2)</code></pre>
<p>  listdata1은_ 0부터 4까지의 숫자로 구성된 리스트_입니다.
<code>reverse()</code>메서드를 사용하여 원본 리스트를 역순으로 뒤집습니다. listdata1.reverse()를 호출하면 listdata1 리스트가 원본을 변경하며 역순으로 저장됩니다.
listdata2는 0부터 4까지의 숫자로 구성된 리스트입니다.
<code>reversed()</code> 함수를 사용하여 리스트를 역순으로 순회하는 이터레이터를 반환합니다. 이를 ret1 변수에 저장합니다.
list(ret1)을 사용하여 이터레이터를 리스트로 변환합니다. 이때 역순으로 뒤집힌 리스트가 생성됩니다.</p>
<h3 id="🧡-리스트-1">🧡 리스트[::-1]</h3>
<p>ret2는 슬라이싱을 사용하여 리스트를 역순으로 뒤집은 결과입니다.
<code>listdata2[::-1]</code>을 사용하여 리스트의 모든 원소를 역순으로 선택합니다. 이를 ret2 변수에 저장합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">원본 리스트[0, 1, 2, 3, 4]
역순 리스트[4, 3, 2, 1, 0]
슬라이싱 이용[4, 3, 2, 1, 0]</code></pre>
<ul>
<li><p>reverse() 메서드, reversed() 함수, 슬라이싱을 이용한 방법 모두 원본 리스트의 순서를 역순으로 바꾸는 역할을 수행합니다.</p>
<hr>
</li>
</ul>
<h2 id="🔟--2️⃣-리스트-값-추가하기">🔟 + 2️⃣ 리스트 값 추가하기</h2>
<h3 id="🧡-append">🧡 append()</h3>
<pre><code class="language-python">listdata=[]
for i in range(3):
    txt=input(&#39;리스트에 추가할 값을 입력하세요[%d/3]:&#39;%(i+1))
    listdata.append(txt)
    print(listdata)</code></pre>
<p>listdata는 빈 리스트로 초기화됩니다.
반복문을 통해 3번의 입력을 받습니다.
input() 함수를 사용하여 사용자로부터 값을 입력받습니다. 입력된 값은 txt 변수에 저장됩니다.
listdata.append(txt)를 사용하여 입력받은 값을 리스트에 추가합니다.
현재까지의 리스트 상태를 출력하기 위해 print(listdata)를 사용하여 리스트를 출력합니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">리스트에 추가할 값을 입력하세요[1/3]:Hello
[&#39;Hello&#39;]
리스트에 추가할 값을 입력하세요[2/3]:World
[&#39;Hello&#39;, &#39;World&#39;]
리스트에 추가할 값을 입력하세요[3/3]:OpenAI
[&#39;Hello&#39;, &#39;World&#39;, &#39;OpenAI&#39;]</code></pre>
<p>  반복문을 통해 사용자로부터 입력받은 값들이 순차적으로 리스트에 추가되는 것을 확인할 수 있습니다.</p>
<hr>
<h3 id="🧡-index">🧡 index()</h3>
<pre><code class="language-python">solarsys=[&quot;지구&quot;,&#39;태양&#39;,&#39;금성&#39;,&quot;목성&quot;,&#39;화성&#39;,&quot;해왕성&quot;]
pos=solarsys.index(&#39;목성&#39;)
solarsys.insert(pos,&quot;소행성&quot;)
print(solarsys)</code></pre>
<p><code>index()</code>메서드를 사용하여 &#39;목성&#39; 원소의 위치를 찾습니다. pos 변수에 해당 위치가 저장됩니다.
insert() 메서드를 사용하여 &#39;목성&#39; 원소의 위치에 &#39;소행성&#39;을 삽입합니다. solarsys.insert(pos, &quot;소행성&quot;)을 호출하면 &#39;목성&#39; 앞에 &#39;소행성&#39;이 추가됩니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code class="language-python">  [&#39;지구&#39;, &#39;태양&#39;, &#39;금성&#39;, &#39;소행성&#39;, &#39;목성&#39;, &#39;화성&#39;, &#39;해왕성&#39;]</code></pre>
<hr>
<h2 id="🔟--3️⃣-리스트-값-빼기">🔟 + 3️⃣ 리스트 값 빼기</h2>
<h3 id="🧡-del">🧡 del()</h3>
<pre><code class="language-python">solarsys=[&quot;지구&quot;,&#39;태양&#39;,&#39;금성&#39;,&quot;목성&quot;,&#39;화성&#39;,&quot;해왕성&quot;]
del solarsys[0]
print(solarsys)
del solarsys[-2]
print(solarsys)


solarsys=[&quot;지구&quot;,&#39;태양&#39;,&#39;금성&#39;,&quot;목성&quot;,&#39;화성&#39;,&quot;해왕성&quot;]
solarsys.remove(&quot;지구&quot;)
print(solarsys)</code></pre>
<p><code>del 키워드</code>를 사용하여 인덱스를 지정하여 원소를 제거하는 방법:
del solarsys[0]를 호출하여 첫 번째 원소를 삭제합니다.
결과를 출력합니다.
del 키워하여드를 사용 음수 인덱스를 지정하여 원소를 제거하는 방법:
del solarsys[-2]를 호출하여 뒤에서 두 번째 원소를 삭제합니다.
결과를 출력합니다.</p>
<h3 id="🧡-remove">🧡 remove()</h3>
<p>remove() 메서드를 사용하여 값을 기준으로 원소를 제거하는 방법:
solarsys.remove(&quot;지구&quot;)를 호출하여 &quot;지구&quot; 원소를 삭제합니다.
결과를 출력합니다.</p>
<blockquote>
<p>output: </p>
</blockquote>
<pre><code class="language-python">[&#39;태양&#39;, &#39;금성&#39;, &#39;목성&#39;, &#39;화성&#39;, &#39;해왕성&#39;]
[&#39;태양&#39;, &#39;금성&#39;, &#39;목성&#39;, &#39;화성&#39;]
[&#39;태양&#39;, &#39;금성&#39;, &#39;목성&#39;, &#39;화성&#39;, &#39;해왕성&#39;]</code></pre>
<p>  세 가지 방법을 사용하여 리스트에서 원소를 제거한 결과를 확인할 수 있습니다. 첫 번째 방법과 두 번째 방법은 <strong>인덱스를 기준</strong>으로 원소를 삭제하고, 세 번째 방법은 <strong>값을 기준</strong>으로 원소를 삭제합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌘클래스1️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/0522</link>
            <guid>https://velog.io/@gamja-kawaii/0522</guid>
            <pubDate>Wed, 31 May 2023 14:02:57 GMT</pubDate>
            <description><![CDATA[<h2 id="◉_◉">   ◉_◉? </h2>
<h2 id="1️⃣-클래스class">1️⃣ 클래스(Class)</h2>
<pre><code class="language-python">class MyClass:
    var=&quot;hi&quot;
    def sayHello(self):
        print(self.var)

obj=MyClass()
print(obj.var)
obj.sayHello()</code></pre>
<p> MyClass 클래스의 생성자를 사용하여 obj라는 객체를 생성합니다. obj.var을 사용하여 obj의 var 속성에 접근하고 출력합니다. 마지막으로 obj.sayHello()를 호출하여 obj의 sayHello() 메서드를 실행하면 &quot;hi&quot;가 콘솔에 출력됩니다.</p>
<p>위 코드를 실행하면 다음과 같은 결과가 출력됩니다:</p>
<blockquote>
<p>output :</p>
</blockquote>
<pre><code>hi
hi</code></pre><hr>
<h2 id="2️⃣-클래스-멤버-vs-인스턴스-멤버">2️⃣ 클래스 멤버 vs 인스턴스 멤버</h2>
<p><code>클래스 멤버</code>와 <code>인스턴스 멤버</code>는 클래스 내에서 사용되는 <strong>변수 **또는</strong> 속성**을 나타냅니다.</p>
<h3 id="💛클래스-멤버class-member">💛<code>클래스 멤버(Class Member)</code>:</h3>
<p><strong>클래스 멤버는 클래스 자체에 속하는 변수</strong>이며, 모든 인스턴스에서 공유됩니다. 클래스 정의 _내부에서 선언_되며, 모든 인스턴스에 의해 공유되어 동일한 값을 가지게 됩니다. 클래스 멤버는 <code>클래스명.멤버명</code>으로 접근할 수 있습니다.</p>
<p>예시:</p>
<pre><code class="language-python">class MyClass:
    class_variable = &quot;I am a class variable&quot;

obj1 = MyClass()
obj2 = MyClass()

print(obj1.class_variable)  # 출력: I am a class variable
print(obj2.class_variable)  # 출력: I am a class variable</code></pre>
<h3 id="💛인스턴스-멤버instance-member">💛<code>인스턴스 멤버(Instance Member)</code>:</h3>
<p><strong>인스턴스 멤버는 클래스의 각 인스턴스마다 개별적으로 소유하는 변수</strong>입니다. 즉, 인스턴스마다 고유한 값을 가질 수 있습니다. 인스턴스 멤버는 인스턴스 생성 후 <code>self.멤버명</code>으로 접근할 수 있습니다.</p>
<p>예시: </p>
<pre><code class="language-python">class MyClass:
    def __init__(self):
        self.instance_variable = &quot;I am an instance variable&quot;

obj1 = MyClass()
obj2 = MyClass()

print(obj1.instance_variable)  # 출력: I am an instance variable
print(obj2.instance_variable)  # 출력: I am an instance variable</code></pre>
<p>클래스는 <strong>특정 속성(attribute)</strong>과** 메서드(method)**를 가지며, 이러한 속성과 메서드는 해당 클래스의 인스턴스에 의해 공유됩니다. 클래스의 인스턴스를 생성하면 해당 인스턴스는 클래스의 속성과 메서드를 갖게 되고, 이를 통해 데이터를 저장하고 기능을 실행할 수 있습니다.</p>
<p>예를 들어, MyClass라는 클래스를 정의하면 MyClass는 특정 속성과 메서드를 가지게 됩니다. 이후 obj = MyClass()와 같이 클래스의 인스턴스를 생성하면 obj는 MyClass의 속성과 메서드를 가진 개별 객체가 됩니다. 이 인스턴스는 클래스의 정의에 따라 데이터를 저장하고 메서드를 실행할 수 있습니다.</p>
<p>따라서, 클래스는 객체를 생성하기 위한 템플릿이며, 인스턴스는 실제로 생성된 개별 객체를 의미합니다. 인스턴스는 클래스의 속성과 메서드를 공유하면서 독립적인 데이터와 상태를 가질 수 있습니다.</p>
<pre><code class="language-python">class MyClass:
    var=&quot;hi&quot;
    def sayHello(self):
        print(self.var)

obj=MyClass()
print(obj.var)
obj.sayHello()</code></pre>
<ul>
<li><code>self 가 뭐야 ?</code> </li>
</ul>
<p>self는 파이썬에서 인스턴스 메서드를 정의할 때 사용되는 특별한 매개변수입니다. self는 현재 객체(인스턴스) 자신을 참조하는데 사용되며, 해당 객체의 속성이나 메서드에 접근할 수 있게 해줍니다.</p>
<p>예를 들어, MyClass 클래스의 sayHello 메서드에서 self.var을 사용하면 해당 메서드를 호출한 인스턴스의 var 속성에 접근할 수 있습니다. self는 호출된 인스턴스를 가리키므로, 각 인스턴스마다 고유한 var 값을 사용할 수 있습니다.</p>
<p>따라서, obj=MyClass()으로 인스턴스를 생성하고 obj.sayHello()를 호출하면 sayHello 메서드 내에서 self.var은 obj의 var 속성을 의미하게 됩니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code>hi
hi</code></pre><hr>
<pre><code class="language-python">class MyClass:
    def sayHello():
        print(&quot;안녕하세요!&quot;)

    def sayBye(name):
        print(&quot;%s! 다음에 또 보자!!&quot;%name)

obj=MyClass()
obj.sayHello()
obj.sayBye(묭시리)</code></pre>
<ul>
<li><code>에러가 난 이유</code> </li>
</ul>
<p>위의 코드에서 오류가 발생하는 이유는 메서드 정의 시 첫 번째 매개변수로 <strong>self를 명시하지 않았기 때문</strong>입니다. <em>파이썬에서 클래스의 메서드는 첫 번째 매개변수로 항상 self를 가지는데</em>, 이를 통해 메서드가 호출된 인스턴스를 참조할 수 있습니다.</p>
<p>올바른 코드는 다음과 같이 self를 사용하여 메서드를 정의해야 합니다:</p>
<pre><code class="language-python">class MyClass:
    def sayHello(self):
        print(&quot;안녕하세요!&quot;)

    def sayBye(self, name):
        print(&quot;%s! 다음에 또 보자!!&quot; % name)

obj = MyClass()
obj.sayHello()
obj.sayBye(&quot;묭시리&quot;)</code></pre>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code>안녕하세요!
묭시리! 다음에 또 보자!!</code></pre><hr>
<pre><code class="language-python">class MyClass:
    def __init__(self):
        self.var=&quot;안뇽&quot;
        print(&#39;MyClass 인스턴스 객체가 생성됨 ~_~&#39;)

obj=MyClass()
print(obj.var) </code></pre>
<p><code>__init__</code> 메서드는 파이썬에서 클래스의 생성자로 사용되며, 인스턴스가 생성될 때 자동으로 호출됩니다. 위 코드에서 MyClass 클래스의 <strong>init</strong> 메서드는 인스턴스가 생성될 때 실행되어 self.var 속성을 &quot;안뇽&quot;으로 초기화하고, &quot;MyClass 인스턴스 객체가 생성됨 _&quot;을 출력합니다.</p>
<p>다음으로 obj=MyClass()을 통해 MyClass의 인스턴스인 obj를 생성하고, obj.var을 출력합니다. 이때 obj.var은 MyClass 인스턴스의 var 속성에 접근하는 것이며, <strong>init</strong> 메서드에서 초기화된 &quot;안뇽&quot;이 출력됩니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code>MyClass 인스턴스 객체가 생성됨 ~_~
안뇽</code></pre><hr>
<h2 id="3️⃣-클래스-생성자__init__">3️⃣ 클래스 생성자(<code>__init__()</code>)</h2>
<p>클래스의 생성자는 클래스의 인스턴스가 생성될 때 호출되는 특별한 메서드입니다. 생성자 메서드는 <strong>init</strong>()으로 정의되며, 클래스 내부에서 정의됩니다.</p>
<p>생성자는 인스턴스가 생성될 때 초기화 작업을 수행하는 역할을 합니다. 주로 인스턴스의 속성(attribute)을 초기화하거나, 필요한 설정을 수행하는 등의 작업을 담당합니다. 생성자는 인스턴스 객체가 생성될 때 자동으로 호출되며, 인스턴스를 초기화하는데 사용됩니다.</p>
<p>일반적으로 생성자는 다음과 같이 정의됩니다:</p>
<pre><code>def __init__(self, 매개변수1, 매개변수2, ...):
    # 초기화 작업 수행
    # self를 통해 인스턴스의 속성을 설정</code></pre><p>self는 생성되는 인스턴스 자체를 나타내는 매개변수입니다. 이를 통해 생성자 내부에서 인스턴스의 속성을 설정하거나, 다른 메서드를 호출할 수 있습니다. 생성자에서 정의된 속성은 인스턴스의 다른 메서드에서도 접근할 수 있습니다.</p>
<p>예를 들어, 다음과 같이 MyClass 클래스에 생성자를 정의할 수 있습니다:</p>
<pre><code class="language-python">class MyClass:
    def __init__(self, name):
        self.name = name
        print(&quot;인스턴스가 생성되었습니다.&quot;)

# MyClass의 인스턴스 생성
obj = MyClass(&quot;John&quot;)</code></pre>
<p>위 코드에서 <strong>init</strong> 메서드는 self와 name이라는 매개변수를 가지고 있습니다. 이 생성자는 인스턴스 객체가 생성될 때 호출되어 self.name 속성을 name 매개변수로 초기화합니다. 마지막으로 &quot;인스턴스가 생성되었습니다.&quot;라는 메시지가 출력됩니다.</p>
<p>이렇게 생성자를 사용하면 인스턴스를 생성할 때 필요한 초기화 작업을 수행할 수 있습니다. 생성자를 통해 인스턴스의 속성을 초기화하고, 인스턴스가 생성될 때 자동으로 실행되는 과정을 제어할 수 있습니다.</p>
<hr>
<p>클래스의 인스턴스 생성이란, 클래스를 기반으로하여 실제로 객체를 만드는 과정을 말합니다. 클래스는 객체를 생성하기 위한 템플릿이라고 생각할 수 있고, 인스턴스는 이 템플릿을 기반으로 구체적인 개별 객체를 만드는 것입니다.</p>
<p>예를 들어, 다음과 같이 Person이라는 클래스를 정의합니다:</p>
<pre><code class="language-python">class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age</code></pre>
<p>위의 코드에서 Person 클래스는 name과 age라는 속성을 가지고 있습니다. 이제 이 클래스를 기반으로하여 인스턴스를 생성해보겠습니다:</p>
<pre><code class="language-python">person1 = Person(&quot;John&quot;, 25)
person2 = Person(&quot;Jane&quot;, 30)</code></pre>
<p>위 코드에서 person1과 person2는 Person 클래스의 인스턴스입니다. Person 클래스의 생성자(<strong>init</strong> 메서드)를 호출하여 인스턴스를 생성하고, 해당 인스턴스는 name과 age라는 속성을 가지게 됩니다.</p>
<p>이제 각 인스턴스는 독립적인 데이터를 가지며, 해당 인스턴스의 속성에 접근할 수 있습니다. 예를 들어, person1.name은 &quot;John&quot;을 반환하고, person2.age는 30을 반환합니다.</p>
<p>클래스의 인스턴스 생성을 통해 동일한 클래스를 기반으로 여러 개의 개별 객체를 만들 수 있습니다. 각 인스턴스는 클래스의 속성과 메서드를 공유하면서 독립적인 데이터와 상태를 가질 수 있습니다.</p>
<hr>
<h2 id="4️⃣-클래스-소멸자__del__">4️⃣ 클래스 소멸자(<code>__del__()</code>)</h2>
<p><code>클래스 소멸자</code>는 객체가 메모리에서 제거되기 전에 호출되는 특별한 메서드입니다. 소멸자 메서드는 <code>__del__()</code>로 정의되며, <strong>클래스 내부에서 정의</strong>됩니다.</p>
<p>소멸자는 객체가 더 이상 필요하지 않을 때 수행해야 할 정리 작업을 처리하는 데 사용됩니다. 예를 들어, 파일이나 네트워크 연결과 같은 외부 자원을 사용하는 경우, 소멸자를 활용하여 해당 자원을 안전하게 종료하거나 해제할 수 있습니다.</p>
<p>일반적으로 소멸자는 다음과 같이 정의됩니다:</p>
<pre><code>def __del__(self):
    # 정리 작업 수행
    # 메모리 해제, 파일 닫기 등</code></pre><p>소멸자는 객체가 메모리에서 제거될 때 자동으로 호출되며, 개발자가 직접 호출하지 않습니다. 객체의 수명이 끝나면 파이썬 인터프리터가 자동으로 소멸자를 호출합니다.</p>
<p>다음은 소멸자의 예시입니다:</p>
<pre><code class="language-python">class MyClass:
    def __init__(self, name):
        self.name = name

    def __del__(self):
        print(f&quot;인스턴스 {self.name}이(가) 소멸되었습니다.&quot;)

# MyClass의 인스턴스 생성
obj1 = MyClass(&quot;인스턴스 1&quot;)
obj2 = MyClass(&quot;인스턴스 2&quot;)

# obj1과 obj2의 참조를 제거하여 메모리에서 제거
del obj1
del obj2
</code></pre>
<p>위 코드에서 <code>__del__</code> 메서드는 인스턴스가 소멸될 때 호출되어 인스턴스의 이름을 출력합니다. del 키워드를 사용하여 obj1과 obj2의 참조를 제거하면, 이후 파이썬 인터프리터가 해당 인스턴스들의 소멸자를 자동으로 호출합니다.</p>
<p>소멸자를 사용하면 객체가 소멸될 때 필요한 추가 작업을 수행할 수 있으며, 메모리 누수 등의 문제를 방지할 수 있습니다. 그러나 일반적으로는 소멸자를 직접 사용할 필요가 없으며, 파이썬의 가비지 컬렉터가 자동으로 메모리 관리를 처리해주기 때문에 명시적으로 메모리를 해제해야 할 때에만 사용하는 것이 좋습니다.</p>
<hr>
<pre><code class="language-python">class Add:
    def add(self,n1,n2):
        return n1+n2

class Calculator(Add):
    def sub(self,n1,n2):
        return n1-n2

obj=Calculator()
print(obj.add(1,2))
print(obj.sub(1,2))</code></pre>
<ul>
<li><code>self 가 없으면 ?</code></li>
</ul>
<p>self는 현재 객체를 가리키는 참조입니다. 클래스의 인스턴스 메서드를 호출할 때 self 매개변수를 통해 객체 자체를 전달합니다. self를 사용하여 클래스 내부의 속성이나 다른 메서드에 접근할 수 있습니다.</p>
<p>만약 self가 없는 경우, <strong>해당 메서드는 인스턴스 메서드가 아닌 클래스 메서드(static method)로 간주됩니다.</strong> 클래스 메서드는 특정 객체에 바인딩되지 않고 클래스 자체에 속해 있으며, self를 통한 객체 참조가 없습니다. 클래스 메서드는 @staticmethod 데코레이터를 사용하여 정의되며, 클래스의 모든 인스턴스가 공유하는 동작을 수행합니다.</p>
<p>따라서, 위의 예제에서 self가 없는 add 메서드는 클래스 메서드로 간주됩니다. 이 경우, obj.add(1, 2)와 같이 인스턴스를 통해 호출하면 오류가 발생할 수 있습니다. obj 객체를 통해 클래스 메서드를 호출하려면 클래스 이름을 사용해야 합니다.</p>
<p>아래는 add 메서드를 클래스 메서드로 수정한 예시입니다:</p>
<pre><code class="language-python">class Add:
    @staticmethod
    def add(n1, n2):
        return n1 + n2

class Calculator(Add):
    def sub(self, n1, n2):
        return n1 - n2

obj = Calculator()
print(Calculator.add(1, 2))  # 클래스 메서드 호출
print(obj.sub(1, 2))
</code></pre>
<p>add 메서드를 @staticmethod로 데코레이팅하고, obj.add(1, 2) 대신 Calculator.add(1, 2)와 같이 클래스를 통해 호출하면 올바르게 동작합니다. sub 메서드는 여전히 인스턴스 메서드이므로 obj.sub(1, 2)와 같이 인스턴스를 통해 호출할 수 있습니다.</p>
<hr>
<h2 id="5️⃣-상속">5️⃣ 상속</h2>
<p><code>상속</code>은 객체 지향 프로그래밍에서 클래스 간의 관계를 나타내는 개념입니다. 한 클래스가 다른 클래스의 특성과 동작을 상속받아 사용할 수 있도록 해줍니다. 상속은 코드 재사용성을 높이고 클래스 간의 계층 구조를 형성하여 코드를 구조화하는 데 도움을 줍니다.</p>
<p>예를 들어, &quot;동물&quot;이라는 클래스가 있다고 가정해봅시다. 이 클래스는 모든 동물의 공통 특성과 동작을 포함할 수 있습니다. 그리고 &quot;개&quot;라는 클래스와 &quot;고양이&quot;라는 클래스가 있을 때, 이 두 클래스는 &quot;동물&quot; 클래스를 상속받을 수 있습니다. 이렇게 상속을 받은 클래스들은 &quot;동물&quot; 클래스의 특성과 동작을 자동으로 상속받아 사용할 수 있습니다.</p>
<p>다중 상속은 한 클래스가 두 개 이상의 클래스로부터 상속받는 것을 의미합니다. 예를 들어, &quot;개&quot; 클래스가 &quot;포유류&quot; 클래스와 &quot;애완동물&quot; 클래스로부터 다중 상속을 받을 수 있습니다. 이 경우 &quot;개&quot; 클래스는 &quot;포유류&quot; 클래스의 특성과 동작, 그리고 &quot;애완동물&quot; 클래스의 특성과 동작을 모두 상속받아 사용할 수 있습니다.</p>
<p>다중 상속은 유용한 기능이지만 클래스 간의 복잡한 관계를 만들 수 있고 충돌이 발생할 수도 있으므로 주의해야 합니다. 충돌이 발생하는 경우 메서드나 속성의 우선순위를 결정해야 할 필요가 있습니다. 이러한 경우에는<code>메서드 해상도 순서(Method Resolution Order, MRO)</code>라는 규칙을 따라 _우선순위를 결정_합니다.</p>
<p>다중 상속의 예시는 다음과 같습니다:</p>
<pre><code class="language-python">class Mammal:
    def walk(self):
        print(&quot;Walking&quot;)

class Pet:
    def play(self):
        print(&quot;Playing&quot;)

class Dog(Mammal, Pet):
    pass

dog = Dog()
dog.walk()  # &quot;Walking&quot; 출력
dog.play()  # &quot;Playing&quot; 출력</code></pre>
<p>위의 예시에서 &quot;Dog&quot; 클래스는 &quot;Mammal&quot; 클래스와 &quot;Pet&quot; 클래스로부터 다중 상속을 받습니다. 그래서 &quot;Dog&quot; 객체는 &quot;walk()&quot; 메서드와 &quot;play()&quot; 메서드를 모두 사용할 수 있습니다.</p>
<hr>
<pre><code class="language-python">class Add:
    def add(self,n1,n2):
        return n1+n2

class Multiply:
    def multiply(self,n1,n2):
        return n1*n2

class Calculator(Add,Multiply):
    def sub(self,n1,n2):
        return n1-n2

obj=Calculator()
print(obj.add(1,2))
print(obj.multiply(2,3))</code></pre>
<h3 id="💛-다중상속">💛 다중상속</h3>
<p>위의 예시 코드는 다중 상속을 보여줍니다. &quot;Add&quot; 클래스와 &quot;Multiply&quot; 클래스는 각각 덧셈과 곱셈 기능을 제공합니다. 그리고 &quot;Calculator&quot; 클래스는 &quot;Add&quot; 클래스와 &quot;Multiply&quot; 클래스를 다중 상속받습니다. 이렇게 &quot;Calculator&quot; 클래스는 덧셈과 곱셈, 그리고 뺄셈 기능을 모두 가지고 있습니다.</p>
<blockquote>
<p>output:</p>
</blockquote>
<pre><code>3
6</code></pre><p>첫 번째 줄은 &quot;add()&quot; 메서드를 호출하여 1과 2를 더한 결과인 3을 출력합니다. 두 번째 줄은 &quot;multiply()&quot; 메서드를 호출하여 2와 3을 곱한 결과인 6을 출력합니다.</p>
<p>이처럼 다중 상속을 사용하면 여러 개의 클래스로부터 특성과 동작을 상속받아 하나의 클래스에서 모든 기능을 사용할 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌖예외처리3️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC3</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC3</guid>
            <pubDate>Fri, 19 May 2023 15:45:25 GMT</pubDate>
            <description><![CDATA[<h4 id="🌥ˋ-_-ˊ">🌥(•ˋ _ ˊ•)</h4>
<h2 id="1️⃣-예외-객체-exception-object">1️⃣ 예외 객체 (Exception object)</h2>
<p>예외 객체 (Exception object)는 파이썬에서 예외가 발생할 때 생성되는 객체입니다. <strong>예외가 발생하면 해당 예외의 종류에 따라 예외 객체가 생성되고 예외 정보를 담고 있습니다.</strong> 이 예외 객체에는 예외의 유형, 메시지, 발생 위치 등과 같은 정보가 포함됩니다.</p>
<p>예외 객체는 try-except 블록에서 예외 처리를 위해 사용될 수 있습니다. 예외가 발생하면 프로그램 흐름이 try 블록에서 except 블록으로 이동하게 되고, 이때 예외 객체가 except 블록의 매개변수로 전달됩니다. 이를 통해 개발자는 예외 객체를 사용하여 예외 정보를 확인하고 적절한 조치를 취할 수 있습니다.</p>
<p>예를 들어, ValueError 예외가 발생한 경우 <code>except ValueError as e</code>:와 같이 as 키워드를 사용하여 예외 객체를 e와 같은 변수에 할당할 수 있습니다. 그러면 e 변수를 통해 예외 객체의 속성에 접근하고 예외 정보를 확인할 수 있습니다. 일반적으로 예외 객체의 속성으로는 예외 메시지를 나타내는 args, 예외가 발생한 파일과 라인 정보를 담고 있는 filename 및 lineno 등이 있습니다.</p>
<p>예외 객체를 사용하면 예외 처리 과정에서 발생한 문제를 진단하고 디버깅하는 데 도움이 됩니다. 예외 객체의 속성을 검사하거나 예외 객체를 다시 발생시키는 등의 작업을 수행할 수 있습니다.</p>
<h3 id="🟡예외가-발생하면-예외-정보가-생기고-예외-정보는-예외-객체에-저장된다❗">🟡예외가 발생하면 예외 정보가 생기고 예외 정보는 예외 객체에 저장된다❗</h3>
<h3 id="🟡exception-object">🟡Exception object</h3>
<pre><code>try: 
    number_input_a=int(input(&quot;정수 입력&gt;&quot;))

    print(&quot;원의 반지름:&quot;,number_input_a)
    print(&quot;원의 둘레:&quot;,number_input_a*3.14*2)
    print(&quot;원의 넓이:&quot;,number_input_a**2*3.14)
except Exception as exception:

    print(&quot;type(exception):&quot;,type(exception))
    print(&quot;exception:&quot;,exception)</code></pre><p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/b67716be-baa4-469b-add5-3ad4202a55b1/image.JPG" alt=""></p>
<p><code>except Exception as exception:</code> : 예외가 발생했을 때 처리하기 위한 except 블록을 시작합니다. Exception은 모든 예외 클래스의 기본 클래스이며, 모든 예외를 처리할 수 있습니다. as exception은 발생한 예외 객체를 exception 변수에 할당합니다.
<code>print(&quot;type(exception):&quot;, type(exception))</code> : 예외 객체의 타입을 출력합니다. 이는 어떤 종류의 예외가 발생했는지를 확인하는 데 도움이 됩니다.
<code>print(&quot;exception:&quot;, exception)</code> : 예외 객체의 내용을 출력합니다. 이는 예외에 관련된 메시지 또는 정보를 확인하는 데 도움이 됩니다.
<code>invalid literal for int() with base 10</code>은 int() 함수에 잘못된 형식의 문자열이 전달되었을 때 발생하는 예외 메시지입니다. </p>
<hr>
<h2 id="2️⃣-예외-구분하기">2️⃣ 예외 구분하기</h2>
<p>예외 객체를 ㅅ ㅏ용하면 except 구문을 if 조건문처럼 사용해서 예외를 구분할 수 있습니다. </p>
<h3 id="🟡-여러가지-예외가-발생할-수-있는-code">🟡 여러가지 예외가 발생할 수 있는 code</h3>
<pre><code>list_number=[1,2,3,4,5]

try:
    number_input=int(input(&quot;정수 입력:&quot;))
    print(&quot;{}번째 요소:{}&quot;.format(number_input,list_number[number_input]))
except Exception as exception:
    print(&quot;type(exception):&quot;,type(exception))
    print(&quot;exception:&quot;,exception)</code></pre><p><em>정상적으로 정수를 입력한 경우:</em>
<img src="https://velog.velcdn.com/images/gamja-kawaii/post/7e205999-476a-4ad1-a983-ceae90c0365a/image.JPG" alt=""></p>
<p><em>정수로 변환될 수 없는 값을 입력한 경우:</em>
<img src="https://velog.velcdn.com/images/gamja-kawaii/post/d96782f5-3b58-4748-96f1-4c6dd02bb0fc/image.JPG" alt=""></p>
<p><em>정수를 입력했지만, 리스트 길이를 넘는 경우:</em>
<img src="https://velog.velcdn.com/images/gamja-kawaii/post/2de0b852-4ff4-4e2d-8dac-15e4ddcd8f6f/image.JPG" alt=""></p>
<h3 id="🟡-예외-구분하기">🟡 예외 구분하기</h3>
<pre><code>list_number=[52,273,13,62,803]

try:
    number_input=int(input(&quot;정수 입력:&quot;))

    print(&quot;{}번째 요소: {}&quot;.format(number_input,list_number[number_input]))
except ValueError:
    print(&quot;정수를 입력하세요!!&quot;)
except IndexError:
    print(&quot;리스트 인덱스를 벗어 났어요!!&quot;)</code></pre><p>예외 객체는 except 블록에서 예외가 발생하면 생성되는 객체입니다. except 키워드 뒤에 예외의 종류를 지정한 후 <code>as 키워드</code>를 사용하여 예외 객체를 받을 변수를 지정할 수 있습니다. </p>
<pre><code>try:
    number_input=int(input(&quot;정수 입력:&quot;))

    print(&quot;{}번째 요소: {}&quot;.format(number_input,list_number[number_input]))
except ValueError as ve:
    print(&quot;정수를 입력하세요!!&quot;)
    print(&quot;exception:&quot;,ve)
except IndexError as ie:
    print(&quot;리스트 인덱스를 벗어 났어요!!&quot;)
    print(&quot;exception:&quot;,ie)</code></pre><p> <img src="https://velog.velcdn.com/images/gamja-kawaii/post/58c660c5-2038-4902-ab14-3a0ad2bca22d/image.JPG" alt="">
<img src="https://velog.velcdn.com/images/gamja-kawaii/post/fc30bb4b-9af9-475b-bb15-cc19f6d39c98/image.JPG" alt=""></p>
<hr>
<h2 id="3️⃣-모든-예외-잡기">3️⃣ 모든 예외 잡기</h2>
<pre><code> list_number=[52,273,13,62,803]

try:
    number_input=int(input(&quot;정수 입력:&quot;))

    print(&quot;{}번째 요소: {}&quot;.format(number_input,list_number[number_input]))
    예외.발생()
except ValueError as exception:
    print(&quot;정수를 입력하세요!!&quot;)
    print(type(exception),exception)
except IndexError as exception:
    print(&quot;리스트 인덱스를 벗어 났어요!!&quot;)
    print(type(exception),exception)
except Exception as exception:
    print(&quot;미리 파악하지 못한 예외발생!&quot;)
    print(type(exception),exception)</code></pre><p> <img src="https://velog.velcdn.com/images/gamja-kawaii/post/13f535d3-08b1-4fa6-acb7-55e73a257b75/image.JPG" alt=""></p>
<h3 id="🟡-raise-구문">🟡 raise 구문</h3>
<pre><code>number=input(&quot;정수 입력:&quot;)
number=int(number)

if number&gt;0:
    raise NotImplementedError
else:
    raise NotImplementedError</code></pre><p>파이썬에서 <code>raise 구문</code>은 <strong>예외를 발생시키는 데 사용</strong>됩니다. 예외는 프로그램 실행 중에 발생하는 오류나 예외적인 상황을 나타냅니다. raise 구문은 개발자가 명시적으로 예외를 발생시켜 특정 상황에 대한 처리를 수행하거나, 오류를 전파하여 예외 처리 메커니즘을 통해 오류를 처리할 수 있도록 합니다.</p>
<pre><code>def divide(a, b):
    if b == 0:
        raise ValueError(&quot;0으로 나눌 수 없습니다.&quot;)
    return a / b

try:
    result = divide(10, 0)
except ValueError as e:
    print(e)</code></pre><p>위의 예제에서 divide 함수는_ b가 0일 때 ValueError 예외를 발생_시킵니다. 호출자는 try-except 구문을 사용하여 이 예외를 처리하고, 해당 예외의 메시지를 출력합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌗예외처리2️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC2</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC2</guid>
            <pubDate>Mon, 15 May 2023 07:49:37 GMT</pubDate>
            <description><![CDATA[<h3 id="1️⃣-파일-처리-중간에-예외-발생">1️⃣ 파일 처리 중간에 예외 발생</h3>
<pre><code>try:
    file=open(&#39;info&#39;,&#39;w&#39;)
    예외.발생해라()
    file.close()

except Exception as e:
    print(e)

print(&quot;#파일이 제대로 닫혔는지 확인하기&quot;)
print(&quot;file.close:&quot;,file.closed)</code></pre><blockquote>
<p>결과</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/8175b237-0671-42b0-af88-3315be586ce2/image.JPG" alt=""></p>
<p>🌊🌊🌊
<code>except Exception as e</code>: 구문은 <strong>예외 처리를 위해 사용되는 구문</strong>입니다. 이 구문은 다음과 같은 의미를 가지고 있습니다. try 블록 안에서 예외가 발생하면, 해당 예외를 Exception 클래스의 인스턴스로 생성합니다. as e는 생성된 예외 인스턴스를 변수 e에 할당합니다. except 블록 안의 코드가 실행되며, 예외 처리 로직이 구현됩니다.예외 처리가 완료되면 프로그램의 흐름은 except 블록 다음의 코드로 이동합니다. 
따라서, <code>except Exception as e</code>: 구문은 예외가 발생했을 때 해당 예외를 잡고, e라는 변수에 할당하여 추가적인 처리를 수행할 수 있도록 합니다. 이 변수를 활용하여 예외의 정보를 출력하거나 처리하는 등의 작업을 수행할 수 있습니다.</p>
<hr>
<h3 id="2️⃣-finally-구문-사용해서-파일-닫기">2️⃣ finally 구문 사용해서 파일 닫기</h3>
<pre><code>try:
    file=open(&#39;infp.txt&#39;,&#39;w&#39;)
    예외.발생해라()

except Exception as e:
    print(e)
finally:
    file.close()

print(&quot;#파일이 제대로 닫혔는지 확인하기&quot;)
print(&quot;file.close:&quot;,file.closed)</code></pre><blockquote>
<p>결과</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/49323f70-59fc-40d0-8267-7f20f3c25dfd/image.JPG" alt=""></p>
<hr>
<h3 id="3️⃣try-구문-내부에서-return-키워드-사용하는-경우">3️⃣try 구문 내부에서 return 키워드 사용하는 경우</h3>
<pre><code>def test():
    print(&quot;test() 함수의 첫 줄입니다.&quot;)
    try:
        print(&quot;try 구문이 실행되었습니다.&quot;)
        return
        print(&quot;try 구문의 return 키워드 뒤입니다.&quot;)
    except:
        print(&quot;except 구문이 실행되었습니다.&quot;)
    else:
        print(&quot;else 구문이 실행되었습니다.&quot;)
    finally:
        print(&quot;finally 구문이 실행되었습니다.&quot;)
    print(&quot;test() 함수의 마지막 줄입니다.&quot;)

test()    </code></pre><blockquote>
<p>결과</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/17e4d937-707a-4363-ad36-4373c0647a3c/image.JPG" alt=""></p>
<p>finally 구문이 실행됩니다. <strong>finally 블록은 예외 발생 여부에 상관없이 항상 실행됩니다.</strong> 따라서 &quot;finally 구문이 실행되었습니다.&quot;라는 문자열을 출력합니다.
<strong>&quot;test() 함수의 마지막 줄입니다.&quot;라는 문자열은 출력되지 않습니다.</strong> 이미 return 문에 의해 함수가 <code>종료</code>되었기 때문입니다. ㄟ( ▔, ▔ )ㄏ</p>
<hr>
<pre><code>def write_text_file(filename,text):
    try:
        file=open(filename,&quot;w&quot;)
        return
        file.write(text)
    except Exception as e:
        print(e)
    finally:
        file.close()

write_text_file(&quot;test.txt&quot;,&quot;hi!&quot;)</code></pre><p>finally 구문에 close() 함수를 호출하도록 코드를 작성하면 코드가 깔끄매집니다. ㄟ( ▔, ▔ )ㄏ</p>
<hr>
<h3 id="4️⃣반복문과-함께-사용하는-경우">4️⃣반복문과 함께 사용하는 경우</h3>
<p>finally 구문은 무조건 실행됩니다. 따라서 반복문에서 break로 빠져나갈 때도 마찬가지입니당.</p>
<pre><code>while True:
    try:
        print(&quot;try 구문이 실행되었습니다.&quot;)
        break
        print(&quot;try 구문의 break 키워드 뒤입니다.&quot;)
    except:
        print(&quot;excep 구문이 실행되었습니다.&quot;)
    finally:
        print(&quot;finally 구문이 실행되었습니다.&quot;)
    print(&quot;while 반복문의 마지막 줄입니다.&quot;)
print(&quot;프로그램이 종료 되었습니다.&quot;)</code></pre><blockquote>
<p>결과</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/d6a01364-f411-48e7-a27e-b8a47e2c9822/image.JPG" alt=""></p>
<p>finally 구문이 실행됩니다.** finally 블록은 예외 발생 여부에 상관없이 항상 실행됩니다.** 
따라서 &quot;finally 구문이 실행되었습니다.&quot;라는 문자열을 출력합니다. &quot;while 반복문의 마지막 줄입니다.&quot;라는 문자열은 출력되지 않습니다. 이미 break 문에 의해 while 반복문이 종료되었기 때문입니다. &quot;프로그램이 종료되었습니다.&quot;라는 문자열이 출력됩니다.</p>
<hr>
<h3 id="5️⃣-index함수">5️⃣ index()함수</h3>
<pre><code>number=[52,373,4,62,845,91,20]
print(number.index(52))   #결과 0
print(number.index(4))    #결과 2</code></pre><p><code>index()</code> 함수는 문자열이나 리스트와 같은 _시퀀스 타입_에서 특정 요소의 <strong>인덱스를 반환하는 함수</strong>입니다.ㄟ( ▔, ▔ )ㄏ</p>
<p>문자열에서 index() 함수를 사용하면 특정 문자열 또는 문자의 인덱스를 반환합니다. 예를 들어, &quot;Hello, World!&quot;.index(&quot;o&quot;)와 같이 호출하면 문자열 &quot;Hello, World!&quot;에서 첫 번째로 나타나는 문자 &#39;o&#39;의 인덱스인 4를 반환합니다.</p>
<p>리스트에서 index() 함수를 사용하면 특정 요소의 인덱스를 반환합니다. 예를 들어, my_list = [1, 2, 3, 4, 5]라는 리스트가 있다고 가정하면, my_list.index(3)과 같이 호출하면 요소 3의 인덱스인 2를 반환합니다.</p>
<p>index() 함수는 찾고자 하는 요소가 시퀀스에 없을 경우** ValueError** 예외를 발생시킵니다. 따라서, index() 함수를 사용할 때는 예외 처리를 고려해야 합니다.</p>
<pre><code>my_string = &quot;Hello, World!&quot;
index = my_string.index(&quot;o&quot;)
print(index)  # 출력: 4

my_list = [1, 2, 3, 4, 5]
index = my_list.index(3)
print(index)  # 출력: 2

# 예외 처리
try:
    index = my_string.index(&quot;z&quot;)
    print(index)
except ValueError:
    print(&quot;찾는 요소가 시퀀스에 없습니다.&quot;)
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌘예외처리1️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC1</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC1</guid>
            <pubDate>Wed, 10 May 2023 07:14:02 GMT</pubDate>
            <description><![CDATA[<p>(⊙ˍ⊙)❓</p>
<p>💜 오류는 크게 실행 전에 발생하는 &#39;구문 오류(syntax error)&#39;와 실행 후에 발생하는 &#39;예외(exception)&#39;로 구분할 수 있습니당. 이때 예외는 프로그램이 정상적으로 실행되는 것처럼 보이다가 중간에 프로그램을 죽게 만들어 버립니다! 따라서 &quot;예외 처리 (exception handling)&quot;로 예외를 처리해야합니다 ❗</p>
<p>프로그래밍에서 오류(Error)는 크게 두 가지 종류가 있습니당.</p>
<ul>
<li>프로그램 실행 전에 발생하는 오류 
  : <code>구문 오류(syntax error)</code></li>
<li>프로그램 실행 중에 발생하는 오류 
  : <code>예외(exception)</code> 또는 <code>런타임 오류(Runtime Error)</code></li>
</ul>
<p><code>구문 오류</code>는 코드가 컴파일되는 과정에서 발견되며, 보통 컴파일러나 인터프리터가 이를 바로 알려줍니다. 이러한 오류는 프로그래머가 코드를 작성하는 중에 발생하며, <strong>코드의 오타, 잘못된 문법</strong> 등으로 인해 발생합니다.</p>
<p>반면, 실행 시간 오류는 코드가 실행되는 과정에서 발생합니다. 이러한 오류는 보통 예상치 못한 입력값이나 연산 등으로 인해 발생합니다. 예를 들어, 0으로 나누기 오류(Division by Zero Error), 인덱스 범위 초과(Index Out of Range Error) 등이 있습니다.</p>
<p><code>예외(Exception)</code>는 오류와는 다른 개념으로, 실행 시간에 예기치 않은 상황이 발생하여 프로그램이 중단되는 것을 말합니다. 예를 들어, 파일을 열고 읽는 도중 파일이 없거나 접근 권한이 없는 경우 등이 있습니다. 이러한 예외 상황은 프로그램에서 적절히 처리되지 않으면 프로그램이 강제 종료될 수 있습니다.</p>
<p>파이썬에서는 예외 처리를 위해 <code>try-except</code>문을 제공합니다. try 블록 안에는 예외가 발생할 가능성이 있는 코드를 넣고, except 블록 안에는 예외를 처리하는 코드를 넣습니다. 만약 try 블록 안에서 예외가 발생하면, 해당 예외를 처리하기 위해 except 블록이 실행됩니다.</p>
<p>예를 들어, 다음 코드에서는 try 블록 안에서 1/0이라는 연산을 수행하면 ZeroDivisionError 예외가 발생합니다. 이 예외는 except 블록에서 처리되어 프로그램이 강제 종료되지 않습니다.</p>
<pre><code>try:
    result = 1/0
except ZeroDivisionError:
    print(&quot;0으로 나눌 수 없습니다.&quot;)</code></pre><p>또한, except 블록에서 예외를 처리한 후에는 finally 블록이 실행됩니다. finally 블록 안에는 예외와 상관없이 반드시 실행되어야 하는 코드를 넣습니다.</p>
<pre><code>try:
    result = 1/0
except ZeroDivisionError:
    print(&quot;0으로 나눌 수 없습니다.&quot;)
finally:
    print(&quot;프로그램 종료&quot;)
</code></pre><hr>
<h3 id="1️⃣-구문-오류syntax-error">1️⃣ 구문 오류(Syntax error)</h3>
<p>구문 오류는 괄호의 개수, 들여쓰기 문제 등으로 인해 프로그램 실행되기도 전에 발생하는 오류입니다.</p>
<pre><code>print(&quot;안녕하세요)</code></pre><p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/cef2e701-2e44-49ed-96c9-1fa4833000d7/image.JPG" alt=""></p>
<hr>
<h3 id="2️⃣-예외exception-or-런타임-오류runtime-error">2️⃣ 예외(exception) or 런타임 오류(Runtime Error)</h3>
<p> 실행 중에 발생하는 오류 </p>
<hr>
<h3 id="3️⃣-예외-처리exception-handling">3️⃣ 예외 처리(exception handling)</h3>
<ul>
<li>조건문을 사용하는 방법 (= <code>기본 예외 처리</code>)</li>
<li>try except 구문을 사용하는 방법</li>
</ul>
<p>💜 조건문으로 예외 처리하기 </p>
<pre><code>user_input_a=input(&quot;정수입력&gt;&quot;)

if user_input_a.isdigit():
    number_input_a=int(user_input_a)

    print(&quot;원의 반지름:&quot;,number_input_a)
    print(&quot;원의 둘레:&quot;,number_input_a*3.14*2)
    print(&quot;원의 넓이:&quot;,number_input_a**2*3.14)
else:
    print(&quot;정수를 입력하지 않았습니당~ &quot;)</code></pre><p><code>isdigit()</code>은 문자열이 숫자인지 아닌지를 판별하는 파이썬 내장 함수입니다. 문자열의 모든 문자가 숫자인 경우에만 True를 반환하며, 아니면 False를 반환합니다.<code>isdigit()</code> 함수는** 문자열이 숫자로 이루어져 있는지 검사할 때 자주 사용**되며, 예를 들어 사용자로부터 입력받은 값이 숫자인지 아닌지를 판별할 때 유용하게 사용할 수 있습니다.</p>
<p>💜 try except 구문을 사용하는 방법</p>
<ol>
<li><p><code>try -except</code></p>
<pre><code>try:
 number_input_a=int(input(&quot;정수입력&gt;&quot;))
 print(&quot;원의 반지름:&quot;,number_input_a)
 print(&quot;원의 둘레:&quot;,number_input_a*3.14*2)
 print(&quot;원의 넓이:&quot;,number_input_a**2*3.14)
except:
 print(&quot;무언가 잘못되어잇움&quot;)</code></pre></li>
<li><p><code>try -except pass</code></p>
<pre><code>list_input_a=[&quot;23&quot;,&quot;4&quot;,&quot;666&quot;,&quot;감자&quot;,&quot;쿠키&quot;,&quot;111&quot;]
</code></pre></li>
</ol>
<p>list_number=[]
for item in list_input_a:
    try:
        float(item)
        list_number.append(item)
    except:
        pass</p>
<p>print(&quot;{} 내부에 있는 숫자는&quot;.format(list_input_a))
print(&quot;{} 입니다.&quot;.format(list_number))</p>
<pre><code>```pass```는 파이썬에서 **아무런 동작도 하지 않는 구문**입니다. 일반적으로 아무런 작업을 하지 않아야 하지만, 문법적으로 구문이 필요하다면 pass 구문을 사용합니다.

try-except 구문에서 pass를 함께 사용하는 경우는, 예외가 발생했을 때 처리해야 할 작업이 없는 경우입니다. 이런 경우 except 블록에서 pass 구문을 사용하여 아무런 작업을 하지 않고 그냥 넘어갈 수 있습니다.


3. ```try -except -else```
</code></pre><p>try:
     number_input_a=int(input(&quot;정수입력&gt;&quot;))
except:
    print(&quot;정수를 입력하지 않았습니다/&quot;)
else:
    print(&quot;원의 반지름:&quot;,number_input_a)
    print(&quot;원의 둘레:&quot;,number_input_a<em>3.14</em>2)
    print(&quot;원의 넓이:&quot;,number_input_a*<em>2</em>3.14)</p>
<pre><code> ![](https://velog.velcdn.com/images/gamja-kawaii/post/12f58f7f-5ec1-46ef-b610-14452b33dfd5/image.JPG)

4. ```try- except -else -finally```</code></pre><p>try:
    number_input_a=int(input(&quot;정수입력&gt;&quot;))
    print(&quot;원의 반지름:&quot;,number_input_a)
    print(&quot;원의 둘레:&quot;,number_input_a<em>3.14</em>2)
    print(&quot;원의 넓이:&quot;,number_input_a*<em>2</em>3.14)
except :
    print(&quot;정수를 입력하지 않앗움&quot;)
else: 
    print(&quot;예외가 발생하지 않앗움&quot;)
finally:
    print(&quot;일단 프로그램이 끝낫움&quot;)  </p>
<pre><code>![](https://velog.velcdn.com/images/gamja-kawaii/post/2ae5a745-4572-445e-a86a-e77ba428970f/image.JPG)


---------
### 4️⃣ close()
```closed```는 파일 객체의 속성 중 하나로, 파일 객체가 현재 닫혀있는지 여부를 나타냅니다.

파일 객체를 열었다면, 이 파일 객체는 반드시 언젠가는 닫혀야 합니다. 만약 파일 객체가 닫혀있지 않으면, 파일을 계속 사용할 수 없게 됩니다.

closed 속성은 True나 False 값을 가지며, 파일 객체가 닫혀있을 경우 True, 닫혀있지 않을 경우 False를 반환합니다. 파일 객체를 닫을 때는```close()``` 메서드를 호출하여 닫을 수 있으며, 파일 객체를 닫은 후에는 closed 속성 값이 True가 됩니다.

아래는 파일 객체를 생성하고, 파일을 닫은 후 closed 속성 값을 출력하는 예시 코드입니다.</code></pre><p>f = open(&#39;example.txt&#39;, &#39;r&#39;)</p>
<h1 id="파일-작업-수행">파일 작업 수행</h1>
<p>f.close()
print(f.closed)  # True</p>
<pre><code>
_파일이 제대로 닫혔는지 확인하기 ❗_</code></pre><p>try:
    file=open(&quot;info,txt&quot;,&quot;w&quot;,encoding=&quot;utf-8&quot;)
    file.close()
except Exception as e:
    print(e)</p>
<p>print(&quot;# 파일이 제대로 닫혔는지 확인하기&quot;)
print(&quot;file.closed:&quot;,file.closed)</p>
<p><code></code>except Exception as e``` : 구문은 예외 처리를 위한 파이썬의 문법 중 하나입니다. 이 구문은 try 블록에서 예외가 발생했을 때, 발생한 예외의 종류에 상관없이 모든 예외를 처리합니다.</p>
<p>Exception은 모든 예외의 부모 클래스입니다. 즉, 모든 예외 클래스들은 Exception 클래스를 상속받으므로, except Exception 구문은 모든 예외를 처리할 수 있습니다.</p>
<p>as e는 예외 객체를 변수 e에 할당하는 것을 의미합니다. 이를 통해 예외 객체의 속성을 확인하거나 출력할 수 있습니다. 이를 이용하면 예외 처리 과정에서 발생한 오류를 정확하게 파악하고, 디버깅할 수 있습니다.</p>
<p>💜 항상 켜져 있는 프로그램을 데몬(demon) 또는 서비스(service)라고 부릅니다. 예를들어, 컴퓨터의 성능을 감시하는 프로그램, 파일의 변경을 감시하는 프로그램, 사용자에게 웹 페이지를 제공해 주는 웹 서버 등</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌗파일처리(file handling)2️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%ED%8C%8C%EC%9D%BC%EC%B2%98%EB%A6%ACfile-handling2</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%ED%8C%8C%EC%9D%BC%EC%B2%98%EB%A6%ACfile-handling2</guid>
            <pubDate>Wed, 10 May 2023 05:45:31 GMT</pubDate>
            <description><![CDATA[<p>😐🙄🍤🍧🍓🔥💧💧💛💛💛</p>
<h3 id="💛-텍스트-한줄씩-읽기">💛 텍스트 한줄씩 읽기</h3>
<p>텍스트를 사용해 데이터를 구조적으로 표현할 수 있는 방법으로 CSV,XML,JSON등이 있습니당! </p>
<ol>
<li><code>CSV</code>: CSV는 쉼표로 구분된 값(Comma Separated Values)을 의미합니다. 이는 표 형식으로 데이터를 저장하기 위한 파일 형식입니다. <strong>CSV 파일에서 각 줄은 하나의 레코드를 나타내며, 쉼표로 구분된 각 열은 해당 레코드의 속성을 나타냅니다.</strong> 예를 들어, 이름, 성별, 나이와 같은 정보를 각 열에 저장하여 CSV 파일에 저장할 수 있습니다.</li>
</ol>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/a16c11fd-6a4d-4b63-a41d-cd665baa6f9c/image.JPG" alt=""></p>
<p>첫 번째 줄에 header를 넣어 각 데이터가 무엇을 나타내는지 설명해 줄 수 있습니다! 🔥 최근 기계 학습등에는 이러한 형태로 수십만 명의 데이터를 저장하고 활용하는 경우가 많습니다.</p>
<ol start="2">
<li><p><code>XML</code>: XML은 확장 가능한 마크업 언어(Extensible Markup Language)를 의미합니다. 이는 데이터를 구조화하고 전송하기 위한 파일 형식입니다. XML 파일에서 각 요소는 해당 데이터의 속성을 나타내며, 중첩된 요소는 데이터의 계층 구조를 나타냅니다. XML은 데이터를 사람이 이해하기 쉽게 표현할 수 있으며, 다양한 용도로 사용됩니다.</p>
</li>
<li><p><code>JSON</code>: JSON은 JavaScript 객체 표기법(JavaScript Object Notation)을 의미합니다. 이는 데이터를 저장하고 전송하기 위한 파일 형식으로, JavaScript 객체와 유사한 구조를 가지고 있습니다. JSON 파일에서 데이터는 중괄호로 묶인 키-값 쌍으로 표현됩니다. 이러한 구조는 데이터를 효율적으로 전송하고 해석할 수 있으며, 웹 애플리케이션에서 자주 사용됩니다.</p>
</li>
</ol>
<h3 id="💛-랜덤하게-1000명의-키와-몸무게-만들기">#💛 랜덤하게 1000명의 키와 몸무게 만들기</h3>
<pre><code>import random
hanguls=list(&quot;가나다라마바사아자차카타파하&quot;)
with open(&quot;info.txt&quot;,&quot;w&quot;,encoding=&#39;utf-8&#39;) as file:
    for i in range(1000):
        name=random.choice(hanguls)+random.choice(hanguls)
        weight=random.randrange(40,100)
        height=random.randrange(140,200)

        file.write(&quot;{},{},{}\n&quot;.format(name,weight,height))
</code></pre><p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/e992eeea-6585-4a9c-aba7-ff6de1dd904f/image.JPG" alt=""></p>
<p><code>import random</code>은 파이썬에서 무작위 숫자를 생성하기 위한 모듈인 random을 가져오는 구문입니다. random 모듈은 난수 생성 및 무작위 선택과 같은 다양한 기능을 제공합니다.</p>
<p>예를 들어, random 모듈을 사용하여 0부터 1 사이의 난수를 생성하려면 random.random()을 호출합니다. 이 외에도, random.randint(a, b)를 사용하여 a와 b 사이의 정수 난수를 생성하거나, random.choice(seq)를 사용하여 시퀀스(seq) 중에서 무작위로 하나의 요소를 선택할 수 있습니다.</p>
<p>따라서 import random 구문을 사용하면 이러한 무작위 숫자 생성 함수를 사용할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/89a7d4f7-d5ad-4adc-8f58-aaa2f49f2953/image.JPG" alt="">
위 코드를 실행하면 0부터 9까지의 임의의 정수가 출력됩니다 ❗ random.randint(a, b) 함수는 a와 b 사이의 정수를 무작위로 선택하여 반환합니다.</p>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/edbeb5fc-9d2f-472a-9730-2dfc877fe3d2/image.JPG" alt="">
위 코드를 실행하면 my_list에서 임의로 하나의 요소가 선택되어 출력됩니다. random.choice(seq) 함수는 시퀀스(seq)에서 임의의 요소를 선택하여 반환합니다.</p>
<p>🍓 파일에 쓰는 데이터가 한글이 포함된 경우, 파일을 작성할 때 인코딩 방식을 지정해야 합니다. 예를 들어, 파일을 UTF-8 인코딩으로 작성하려면 다음과 같이 코드를 수정할 수 있습니다.</p>
<pre><code>with open(&#39;output.txt&#39;, &#39;w&#39;, encoding=&#39;utf-8&#39;) as file:
    file.write(&quot;{},{},{}\n&quot;.format(name,weight,height))
</code></pre><p>위 코드에서 <code>encoding=&#39;utf-8&#39;</code> 매개변수를 사용하여 파일을 UTF-8 인코딩으로 작성하도록 설정하였습니다. 따라서 한글 데이터가 포함되어 있어도 파일을 정상적으로 작성할 수 있습니다.</p>
<hr>
<h3 id="💛-join">💛 join()</h3>
<p><code>join()</code>은 <strong>문자열 메서드</strong> 중 하나로, 문자열 리스트를 하나의 문자열로_ 결합_하는 기능을 제공합니다.</p>
<p><code>.join()</code>메서드는 문자열을 구성하는 리스트에 적용되며, 각 문자열 사이에 구분자(delimiter)를 추가하여 하나의 문자열로 결합합니다! </p>
<pre><code>fruits = [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;]
result = &quot;, &quot;.join(fruits)
print(result)        # 結果 ：  &quot;apple, banana, cherry&quot;</code></pre><pre><code>number=[1,2,3,4,5,6]
print(&quot;::&quot;.join(str(num) for num in number))</code></pre><p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/a87b3118-6825-4c64-bc45-28c62254ab9c/image.JPG" alt=""></p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌗와나전기본중의기본2️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%99%80%EB%82%98%EC%A0%84%EA%B8%B0%EB%B3%B8%EC%A4%91%EC%9D%98%EA%B8%B0%EB%B3%B82</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%99%80%EB%82%98%EC%A0%84%EA%B8%B0%EB%B3%B8%EC%A4%91%EC%9D%98%EA%B8%B0%EB%B3%B82</guid>
            <pubDate>Thu, 04 May 2023 16:29:16 GMT</pubDate>
            <description><![CDATA[<h3 id="💖-복소수형-자료구조">💖 <strong>복소수형 자료구조</strong></h3>
<ul>
<li><code>complex 함수</code>를 사용하여 직접 생성하기:</li>
</ul>
<pre><code> a = complex(2, 3)  # 2 + 3j
 b = complex(0, -1) # -j</code></pre><ul>
<li><code>수식</code>으로 생성하기:<pre><code>c = 1 + 2j
d = 4j - 3</code></pre>복소수형 자료는 <strong>실수부</strong>와 <strong>허수부</strong>로 이루어져 있으며, 허수부 뒤에 &quot; <strong>j</strong> &quot; 를 붙여서 나타냅니다. 예를 들어, 2 + 3j는 실수부가 2이고 허수부가 3인 복소수형 자료입니다. 복소수형 자료는 산술 연산도 가능합니다.</li>
</ul>
<p><code>real</code>과 <code>imag</code>은 파이썬 복소수형 자료의 속성(attribute)으로, 각각 해당 복소수형 자료의 실수부(real part)와 허수부(imaginary part)를 반환합니다.</p>
<p>예를 들어, z = 2 + 3j라는 복소수형 자료가 있을 때, z.real은 2를 반환하고, z.imag은 3을 반환합니다.</p>
<pre><code>z = 2 + 3j
print(z.real) # 출력 결과: 2.0
print(z.imag) # 출력 결과: 3.0
</code></pre><hr>
<h3 id="🙄💭-true-and-false">🙄💭 true and false</h3>
<pre><code>
a=True
b=False
print(a==1)  # 출력 결과: True
print(a!=1)  # 출력 결과: False
print(b==0)  # 출력 결과: True
print(b!=0)  # 출력 결과: False</code></pre><blockquote>
<ul>
<li>true and false:코드에 무한루프 로직 구현할때 🙄💭</li>
</ul>
</blockquote>
<pre><code>
while True:
    (무한반복 실행코드)
    ...
    if 조건==True:
        break
</code></pre><hr>
<h3 id="💘-문자열-관계연산자">💘 문자열 관계연산자</h3>
<pre><code>str1=&#39;chips&#39;;str2=&#39;orange&#39;
print(str1&lt;str2)        # 출력 결과: True


if len(&quot;apple&quot;) &lt; len(&quot;banana&quot;):
    print(&quot;apple is shorter than banana&quot;)
else:
    print(&quot;banana is shorter than apple&quot;)

print(&quot;chips&quot;&lt;&quot;apple&quot;)  # 출력 결과: False
print(&#39;Age&#39;&lt;&#39;age&#39;)      # 출력 결과: True
print(&#39;age&#39;&lt;&#39;Bag&#39;)      # 출력 결과: False
print(&#39;alle&#39;&lt;=&#39;alla&#39;)   # 출력 결과: False
print(&#39;한글&#39;&gt;&#39;english&#39;)  # 출력 결과: True
</code></pre><p>Python에서 문자열 크기 비교 연산자는 일반적으로 문자열의 사전 <strong>순서를 기반으로</strong> :알파벳 순서(사전에서 단어가 정렬되는 순서) 비교를 수행합니다. 즉, 두 문자열이 사전에서 어떻게 정렬되는지를 비교하여 크기를 결정합니다. 예를 들어, &quot;apple&quot;은 &quot;banana&quot;보다 작지만 &quot;ant&quot;는 &quot;apple&quot;보다 크다는 것입니다. 
<code>ant &lt; apple &lt; banana</code></p>
<p>사전순서는 알파벳의 순서에 따라 단어를 정렬합니다. 알파벳 순서는 A, B, C, ..., Z의 순서로 구성되어 있으며, 대문자와 소문자를 구분합니다. 따라서, 대문자 A는 소문자 a보다 앞서며, Z는 a보다 앞서게 됩니다. 예를 들어, &quot;Apple&quot;은 &quot;apple&quot;보다 앞서게 됩니당.</p>
<p>⚠ <em>문자열의 길이만을 기준으로 비교하는 것은 아닙니다.</em> 문자열 길이를 비교하려면 Python의 <code>len() 함수</code>를 사용하여 각 문자열의 길이를 비교할 수 있습니다. 예를 들어, &quot;apple&quot;과 &quot;banana&quot;의 길이를 비교하려면 다음과 같이 하면 됩니다:</p>
<pre><code>if len(&quot;apple&quot;) &lt; len(&quot;banana&quot;):
    print(&quot;apple is shorter than banana&quot;)
else:
    print(&quot;banana is shorter than apple&quot;)</code></pre><hr>
<h3 id="💖-비트-연산자-">💖 비트 연산자 (&amp;,|,~,^,&gt;&gt;,&lt;&lt;)</h3>
<pre><code>#(&amp;,|,~,^,&gt;&gt;,&lt;&lt;)
bit1=0x61  
bit2=0x62
print(hex(bit1&amp;bit2))  # 출력 결과: 0x60
print(hex(bit1|bit2))  # 출력 결과: 0x63
print(hex(~bit1))      # 출력 결과: -0x62
print(hex(bit1^bit2))  # 출력 결과: 0x3
print(hex(bit1&gt;&gt;1))    # 출력 결과: 0x30
print(hex(bit1&lt;&lt;2))    # 출력 결과: 0x184</code></pre><p>파이썬에서 비트 연산자는 다양한 상황에서 사용될 수 있습니다. 주로 아래와 같은 경우에 사용합니다.</p>
<ul>
<li><p>비트 단위로 데이터를 처리해야 하는 경우: </p>
<p>이진수로 표현된 데이터를 비트 연산자를 사용하여 처리할 수 있습니다. 예를 들어, 비트 AND(&amp;) 연산자를 사용하여 두 이진수의 각 자릿수에서 1이 모두 있는 경우에만 1을 반환하고, 그 외에는 0을 반환할 수 있습니다.</p>
</li>
<li><p>암호화와 보안 분야에서 사용: 
암호화와 보안 분야에서 비트 연산자는 데이터를 암호화하고, 보안을 강화하는 데 사용됩니다. 예를 들어, 데이터를 XOR 연산자로 암호화하거나, 암호화된 데이터를 다시 복호화할 때 비트 연산자를 사용할 수 있습니다.</p>
</li>
<li><p>하드웨어 제어: 
하드웨어를 제어할 때 비트 연산자를 사용하는 경우가 있습니다. 예를 들어, 특정 비트를 ON 또는 OFF 상태로 설정하여 하드웨어를 제어할 수 있습니다.</p>
</li>
<li><p>게임 프로그래밍: 
게임 프로그래밍에서는 비트 연산자를 사용하여 게임 오브젝트의 위치와 상태 등을 처리할 수 있습니다. 예를 들어, 게임 오브젝트의 이동 방향을 비트 연산자를 사용하여 결정할 수 있습니다.</p>
</li>
</ul>
<p>파이썬에서 사용하는 비트 연산자의 종류와 사용 방법은 다음과 같습니다.</p>
<p>(1) <code>비트 AND(&amp;) 연산자</code>: 두 비트가 모두 1인 경우에만 1을 반환합니다.</p>
<pre><code>a = 0b1101
b = 0b1011
c = a &amp; b
print(bin(c))  # 출력값: 0b1001</code></pre><p>(2) <code>비트 OR(|) 연산자</code>: 두 비트 중에 하나 이상이 1인 경우에 1을 반환합니다.</p>
<pre><code>a = 0b1101
b = 0b1011
c = a | b
print(bin(c))  # 출력값: 0b1111</code></pre><p>(3) <code>비트 XOR(^) 연산자</code>: 두 비트가 서로 다른 경우에만 1을 반환합니다.</p>
<pre><code>a = 0b1101
b = 0b1011
c = a ^ b
print(bin(c))  # 출력값: 0b0110</code></pre><p>(4) <code>비트 NOT(~) 연산자</code>: 모든 비트를 반전합니다. 0은 1로, 1은 0으로 변환됩니다.</p>
<pre><code>a = 0b1101
b = ~a
print(bin(b))  # 출력값: -0b1110</code></pre><p>(5) <code>왼쪽 시프트(&lt;&lt;) 연산자</code>: 모든 비트를 왼쪽으로 이동시킵니다. <strong>이동한 빈 자리는 0으로 채워집니다.</strong></p>
<pre><code>a = 0b1101
b = a &lt;&lt; 2
print(bin(b))  # 출력값: 0b110100</code></pre><p>(6) <code>오른쪽 시프트(&gt;&gt;) 연산자</code>: 모든 비트를 오른쪽으로 이동시킵니다. 이동한 빈 자리는 원래 비트 값과 동일한 값으로 채워집니다.</p>
<pre><code>a = 0b1101
b = a &gt;&gt; 2
print(bin(b))  # 출력값: 0b0011
</code></pre><p>비트 연산자는 주로 <strong>이진수로 표현된 데이터를 다룰 때 사용</strong>됩니다. 이진수를 다룰 때는 <strong>0b 접두어</strong>를 사용하여 이진수임을 나타냅니다. 예를 들어, 0b1101은 이진수로 13을 나타냅니다.</p>
<h3 id="🙄💭-비트-연산자-와">🙄💭 비트 연산자 &lt;&lt;와 &gt;&gt;</h3>
<blockquote>
</blockquote>
<p> <code>&lt;&lt;</code>는 왼쪽 시프트(Left Shift) 연산자이며, 모든 비트를 왼쪽으로 이동시킵니다. 이동한 빈 자리는 0으로 채워집니다. 예를 들어, 0b0010 &lt;&lt; 1 연산을 수행하면 0b0100이 됩니다.</p>
<blockquote>
</blockquote>
<p> <code>&gt;&gt;</code>는 오른쪽 시프트(Right Shift) 연산자이며, 모든 비트를 오른쪽으로 이동시킵니다. 이동한 빈 자리는 원래 비트 값과 동일한 값으로 채워집니다. 예를 들어, 0b0100 &gt;&gt; 1 연산을 수행하면 0b0010이 됩니다.</p>
<p>즉, &lt;&lt;와 &gt;&gt;의 차이점은 <strong>이동 방향</strong>과 <strong>이동한 빈 자리를 채우는 값</strong>입니다 ❗❗</p>
<hr>
<h3 id="💖-시퀀스-자료형">💖 시퀀스 자료형</h3>
<p>파이썬에서 시퀀스(Sequence) 자료형은 데이터 요소들을 일렬로 나열한 형태의 자료형입니다. 시퀀스 자료형은 다음과 같은 특징을 가집니다.</p>
<ul>
<li>인덱싱(Indexing): 각 요소에 대해 인덱스를 통해 접근할 수 있습니다. 인덱스는 0부터 시작하며, 음수 인덱스를 사용하여 끝에서부터 요소에 접근할 수 있습니다.</li>
<li>슬라이싱(Slicing): 일부 요소들을 잘라서 가져올 수 있습니다. 슬라이싱은 시작 인덱스, 끝 인덱스, 그리고 스텝(step) 값으로 구성됩니다.</li>
<li>연결(Concatenation): 두 개 이상의 시퀀스 자료형을 연결할 수 있습니다.+연산자 이용 
반복(Repetition): 시퀀스 자료형의 요소들을 여러 번 반복할 수 있습니다. *연산자 사용 </li>
<li>멤버체크 : in 키워드 사용 -&gt;특정값이 시퀀스자료의 요소로 속해 있는지 확인 할수있다.</li>
<li>길이 확인: 시퀀스 자료형의 길이(요소의 개수)를 확인할 수 있습니다. 
[ len()이용 시퀀스자료형 크기는 문자열의 경우 문자의 개수, 리스트와 튜플의 경우에는 멤버의 개수 ]</li>
</ul>
<blockquote>
<p>&lt; 파이썬에서의 시퀀스 자료형&gt;</p>
<blockquote>
<p>문자열(String): 문자들의 시퀀스입니다.
리스트(List): 임의의 객체들의 시퀀스입니다.
튜플(Tuple): 리스트와 유사하지만 변경이 불가능한(immutable) 시퀀스입니다.
range: 정수들의 시퀀스입니다. range() 함수를 사용하여 생성할 수 있습니다.
바이트(Byte): 0부터 255까지의 정수들의 시퀀스입니다. 바이트 리터럴(b&#39;hello&#39;)이나 bytes() 함수를 사용하여 생성할 수 있습니다.
바이트 배열(Bytearray): 바이트와 유사하지만 변경이 가능한(mutable) 시퀀스입니다. bytearray() 함수를 사용하여 생성할 수 있습니다.
문자열 포맷팅(String Formatting)은 문자열 안에 변수나 값의 정보를 삽입하기 위해 사용되는 기술입니다. 문자열 포맷팅은 파이썬에서 간편하게 사용할 수 있습니다.</p>
</blockquote>
</blockquote>
<pre><code>strdata=&#39;abcde&#39;  # 문자열 
listdata=[1,[2,3],&quot;hi&quot;] # 리슽
tupledata=(100,200,300) # 튶플</code></pre><blockquote>
<p> (1) 기호를 사용하는 방법</p>
</blockquote>
<p>가장 간단한 문자열 포맷팅 방법은 <code>% 기호</code>를 사용하는 것입니다. 이 방법은 C 언어에서 사용되는 방법과 유사합니다.</p>
<ul>
<li>정수 값 포맷팅<pre><code>x = 10
print(&quot;x 값은 %d 입니다.&quot; % x)</code></pre></li>
<li>문자열 포맷팅<pre><code>name = &quot;Alice&quot;
print(&quot;내 이름은 %s 입니다.&quot; % name)</code></pre></li>
<li>믹수 포맷팅<pre><code>age = 25
print(&quot;%s의 나이는 %d살입니다.&quot; % (name, age))</code></pre></li>
</ul>
<pre><code>txt1=&quot;java&quot;;txt2=&#39;Python&#39;
num1=5;num2=10
print(&quot;나는%s보다%s이 더 좋!&quot;%(txt1,txt2))
print(&quot;내 기준 : %s가 %s보다 %d배 어려운거같엉 ㅠㅠ..&quot;%(txt1,txt2,num1))
print(&#39;%d + %d = %d&#39;%(num1,num2,num1+num2))
print(&quot;작년 세계 경재 성장률은 전년에 비해 %d%%포인트 증가했다&quot;%num1)</code></pre><blockquote>
<p> (2) format() 함수를 사용하는 방법</p>
</blockquote>
<p><code>format() 함수</code>를 사용하여 문자열 포맷팅을 할 수도 있습니다. 이 방법은 % 기호를 사용하는 방법보다 <strong>더 유연하고 가독성이 좋습니다.</strong></p>
<ul>
<li><p>정수 값 포맷팅</p>
<pre><code>x = 10
print(&quot;x 값은 {} 입니다.&quot;.format(x))</code></pre></li>
<li><p>문자열 포맷팅</p>
<pre><code>name = &quot;Alice&quot;
print(&quot;내 이름은 {} 입니다.&quot;.format(name))</code></pre></li>
<li><p>여러 값 포맷팅</p>
<pre><code>age = 25
print(&quot;{}의 나이는 {}살입니다.&quot;.format(name, age))</code></pre><blockquote>
<p>(3) f-string을 사용하는 방법</p>
</blockquote>
<p>f-string을 사용하여 문자열 포맷팅을 할 수도 있습니다. </p>
</li>
</ul>
<ul>
<li>정수 값 포맷팅<pre><code>x = 10
print(f&quot;x 값은 {x} 입니다.&quot;)</code></pre></li>
<li>문자열 포맷팅<pre><code>name = &quot;Alice&quot;
print(f&quot;내 이름은 {name} 입니다.&quot;)</code></pre></li>
<li>여러 값 포맷팅<pre><code>age = 25
print(f&quot;{name}의 나이는 {age}살입니다.&quot;)</code></pre></li>
</ul>
<hr>
<h3 id="💚-시퀀스-자료형--indexing">💚 시퀀스 자료형 : indexing</h3>
<pre><code>strdata=&quot;I want money!&quot;
listdata=[1,[2,3],4,5]
print(strdata[5])
print(strdata[-2])
print(listdata[0])
print(listdata[-3])
print(listdata[1][-1])</code></pre><h3 id="💚-시퀀스-자료형--슬라이싱">💚 시퀀스 자료형 : 슬라이싱</h3>
<pre><code>strdata=&quot;우리집_고양이_이감자&quot;
print(strdata[1:5])
print(strdata[:7])
print(strdata[9:])
print(strdata[:-3])
print(strdata[-3:])
print(strdata[:])
print(strdata[::2])</code></pre><h3 id="💚-시퀀스-자료형--연결">💚 시퀀스 자료형 : 연결</h3>
<pre><code>strdata1=&#39;diamond&#39;;strdata2=&quot;ruby&quot;
strdata3=&#39;gold&#39;
listdata1=[1,2,3];listdata2=[2,3,4,5]
print(strdata1+strdata2)
print(strdata1+strdata3)
print(listdata1+listdata2)
print(listdata2+listdata1)</code></pre><h3 id="💚-시퀀스-자료형--반복">💚 시퀀스 자료형 : 반복</h3>
<pre><code>a=&#39;감자&#39;
b=&quot;차오츄르&quot;
data=a+&quot;가 외칩니다:&quot;+b*3
print(data)</code></pre><h3 id="💚-시퀀스-자료형--크기">💚 시퀀스 자료형 : 크기</h3>
<pre><code>strdata1=&quot;I Love You~&quot;
strdata2=&quot;You Love Me!&quot;
listdata=[&quot;choco&quot;,&#39;vanilla&#39;,&quot;peanut&quot;,strdata1,strdata2]
print(len(strdata1))
print(len(strdata2))
print(len(listdata))
print(len(listdata[3]))</code></pre><h3 id="💚-멤버체크-in">💚 멤버체크 in</h3>
<pre><code>listdata=[1,2,3,4]
ret1=5 in listdata;ret2=4 in listdata
print(ret1);print(ret2)
strdata=&#39;abcde&#39;
ret3=&quot;c&quot; in strdata
ret4=&quot;f&quot; in strdata
print(ret3);print(ret4)</code></pre><hr>
<p> 🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭🙄💭</p>
<p><code>from time import sleep</code>은 time 모듈에서 sleep 함수를 import하는 구문입니다. <strong>sleep 함수는 프로그램을 일정 시간 동안 멈추게 해주는 함수입니다.</strong></p>
<p>sleep 함수는 float 또는 int 형태의 인자를 받아 프로그램을 해당 시간 동안 멈춥니다. 예를 들어, sleep(2)를 실행하면 프로그램이 2초 동안 멈추게 됩니다. 이 함수는 주로 프로그램이나 스크립트를 실행하는 도중 특정한 시간 간격을 두고 작업을 수행하도록 할 때 사용됩니다.</p>
<p>아래는 sleep 함수를 사용한 간단한 예시 코드입니다.</p>
<pre><code>from time import sleep

print(&quot;작업 시작&quot;)
sleep(5) # 5초 동안 멈춤
print(&quot;5초 후에 이 문장이 출력됩니다.&quot;)</code></pre><p>위 코드에서 sleep(5) 구문이 실행되면 프로그램이 5초 동안 멈추고, 이후 다음 문장이 출력됩니다.</p>
<pre><code>from time import sleep
for i in range(100):
    msg=&quot;\r 진행률 %d%%&quot;%(i+1)
    print(&quot; &quot;*len(msg),end=&quot;&quot;)
    print(msg,end=&#39;&#39;)
    sleep(0.1)</code></pre><p>해당 코드는 0부터 99까지 반복하는 for 루프 안에서 진행률을 출력하는 코드입니다.</p>
<p><code>&quot;\r&quot;</code>은 커서를 해당 줄의 맨 앞으로 이동시키는 <strong>이스케이프 시퀀스</strong>입니다. 따라서 매 반복마다 진행률을 출력하기 위해 커서를 맨 앞으로 이동시키고, 진행률 정보를 출력합니다. end=&quot;&quot;는 print 함수가 출력한 내용의 끝에 아무것도 출력하지 않도록 하는 인자입니다.</p>
<p>&quot; &quot;*len(msg) 구문은 진행률 정보를 출력하기 전에 해당 줄을 지우기 위해 진행률 정보 출력 문자열의 길이만큼 공백을 출력합니다. 이를 통해 이전에 출력한 진행률 정보가 지워지고, 새로운 진행률 정보가 출력됩니다.</p>
<p>sleep(0.1) 구문은 0.1초 동안 대기하는 함수입니다. 이를 통해 각각의 진행률 정보가 출력된 후 0.1초 동안 대기하고, 다음 진행률 정보를 출력합니다.</p>
<p>따라서 위 코드를 실행하면 총 100개의 진행률 정보가 출력되며, 각각의 정보는 0.1초 간격으로 출력됩니다. 모든 진행률 정보는 한 줄에 출력되며, 이전에 출력한 진행률 정보는 공백을 출력하여 지워지고, 새로운 진행률 정보가 출력됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌘와나전기본중의기본1️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%99%80%EB%82%98%EC%A0%84%EA%B8%B0%EB%B3%B8%EC%A4%91%EC%9D%98%EA%B8%B0%EB%B3%B81</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EC%99%80%EB%82%98%EC%A0%84%EA%B8%B0%EB%B3%B8%EC%A4%91%EC%9D%98%EA%B8%B0%EB%B3%B81</guid>
            <pubDate>Wed, 26 Apr 2023 14:53:01 GMT</pubDate>
            <description><![CDATA[<p>φ(゜▽゜*)♪헷-</p>
<h3 id="💝파이썬-예약어-확인하는-방법-💝">💝파이썬 예약어 확인하는 방법 💝</h3>
<p>파이썬 프롬프트에서 </p>
<pre><code>import keyword
keyword.kwlist </code></pre><p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/0d66be1b-3222-4be9-a274-cfee52024f90/image.png" alt=""></p>
<hr>
<p>파이썬에서 주로 다루게 되는 자료형은 5가지입니다!~!
1️⃣ 수치형 자료
2️⃣ 문자열 자료
3️⃣ 리스트 자료
4️⃣ 튜플 자료
5️⃣ 사전(dict)자료</p>
<hr>
<p>💟 수치형 자료 </p>
<ul>
<li>정수형 상수:-1,0,1,등등</li>
<li>실수형 상수: 무리수를 포함하는 실수</li>
<li>복소수형 상수: 실수부+허수부로 구성 (파이썬에서 허수부는 j로 표현하는것에 주의의으ㅣ!) <pre><code>complex_data=1+5j</code></pre>💟 리스트 자료<pre><code>list_data=[1,2,3]</code></pre>💟 튜플 자료 
리스트와 비슷하지만 요소 값을 변경 할 수 없당!<pre><code>tuple_data=(1,2,3)</code></pre>💟 사전(dict) 자료 
{&quot;키:값&quot;,...}으로 된 쌍이 요소로 구성된 순서가 없는 자료형 <pre><code>dict_data={0:&#39;false&#39;,1:&#39;true&#39;}</code></pre><pre><code>dict_data={&#39;a&#39;:97,&#39;b&#39;:98}
print(dict_data[&#39;a&#39;])        #output: 97</code></pre></li>
</ul>
<hr>
<p>🤍<code>end=&quot;&quot;</code>
print(&quot;#&quot;)
print(&quot;#&quot;)</p>
<p>print(&#39;#&#39;,end=&quot;&quot;)
print(&quot;#&quot;)
<img src="https://velog.velcdn.com/images/gamja-kawaii/post/f7f54e2d-c7ee-45c6-8489-a2228ab2f41b/image.png" alt=""></p>
<hr>
<pre><code>listdata=[1,2,3,4,5,&#39;a&#39;]
&quot;&quot;&quot;
if &#39;a&#39; in listdata:
    print(&quot;&#39;a&#39;가 리스트 안에 있습니다.&quot;)
else:
    print(&quot;&#39;a&#39;가 리스트 안에 없습니다.&quot;)
&quot;&quot;&quot;</code></pre><p>💜<code>#indentation</code> 들여쓰기 spacebar (or) tab으로 가능</p>
<p>실행코드가 한 라인일 경우는 
💜<code>if &#39;a&#39; in listdata:print(&#39;&quot;a&quot;가 리스트 안에 있습니&#39;)</code>
이렇게 쓸 수 있습니당.근데 실행코드는 한 라인 이상인 경우가 대부분이라서 콜론(:)다음에 enter를 눌러 들여쓰기를 해야합니다<del>_</del></p>
<pre><code>if &#39;1&#39; in listdata:print(&#39;1이 리스트 안에 있습니&#39;)

if &#39;2&#39; in listdata:
    print(&#39;2가 리스트 안에 있습니다&#39;)
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌘파일처리(file handling)1️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%ED%8C%8C%EC%9D%BC%EC%B2%98%EB%A6%ACfile-handling1</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%ED%8C%8C%EC%9D%BC%EC%B2%98%EB%A6%ACfile-handling1</guid>
            <pubDate>Wed, 26 Apr 2023 13:36:24 GMT</pubDate>
            <description><![CDATA[<p>🧡💚💜🖤(✿◡‿◡)
파이썬 <code>파일 처리(file handling)</code>란, 파일을 읽고 쓰는 등의 작업을 파이썬으로 수행하는 것을 말합니다. .
파일은 크게 <code>텍스트파일(text file)</code>과 <code>바이너리 파일(binary file)</code>로 나뉩니다.</p>
<ul>
<li><code>binary file</code>은 컴퓨터에서 사용되는 데이터를 이진(binary) 형태로 저장하는 파일입니다. 즉, 이진 형태로 데이터가 저장되어 있기 때문에, 일반적인 텍스트 파일과는 다르게 사람이 직접 읽을 수 없습니다.<code>binary file</code>은 <em>이미지 파일, 음악 파일, 동영상 파일 등과 같이</em>, <strong>비문자 데이터</strong>를 저장하는 데 사용됩니다. 이러한 파일들은 일반적으로 텍스트 파일과는 달리, 특정 형식으로 구성되어 있으며, 파일 내부에 있는 데이터가 특정한 규칙을 따라 구성되어 있습니다.</li>
</ul>
<h3 id="지금은-text-file-과-관련된-내용만-적겠숩니당-❗❗">지금은 text file 과 관련된 내용만 적겠숩니당 ..❗❗</h3>
<pre><code>file=open(&quot;basic.txt&quot;,&quot;w&quot;)
file.write(&quot;hello Python Prigrammming T,T&quot;)
file.close()</code></pre><p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/4a08ca2a-d05a-468a-9e2a-9226fb858508/image.JPG" alt=""></p>
<p>파이썬을 사용하여 파일을 다루는 방법에는 여러 가지가 있지만, 가장 기본적인 방법은 내장 함수 <code>open()</code>을 사용하여 파일 객체를 생성하고, 이 객체를 사용하여 파일을 읽고 쓰는 것입니다.</p>
<p>아래는 파일 처리의 기본적인 방법을 설명하는 예시입니다.</p>
<h3 id="🧡-파일-열기">🧡 파일 열기</h3>
<p>파일을 열 때에는 <code>open()</code> 함수를 사용합니다. 이 함수는 _파일 경로와 파일 모드(mode)_를 인자로 받습니다. 파일 모드에는** 읽기 모드(&#39;r&#39;), 쓰기 모드(&#39;w&#39;), 추가 모드=뒤에 이어서 쓰기 모드 (&#39;a&#39;) 등**이 있습니다.</p>
<blockquote>
<p>f = open(&#39;file.txt&#39;, &#39;r&#39;) # 파일 읽기 모드로 열기</p>
</blockquote>
<hr>
<h3 id="💚-파일-읽기">💚 파일 읽기</h3>
<p>파일 객체를 생성한 후, <code>read()</code> 메서드를 사용하여 파일을 읽을 수 있습니다. <code>read()</code> 메서드는 파일 내용 전체를 <strong>문자열</strong>로 반환합니다.</p>
<blockquote>
<p>contents = f.read() # 파일 내용 전체 읽기</p>
</blockquote>
<pre><code>with open(&quot;basic.txt&quot;,&quot;r&quot;) as file:
    contents=file.read()
print(contents)                      #output : hello Python Prigrammming T,T</code></pre><p>💚텍스트 한줄 씩 읽기 </p>
<h3 id="💜-파일-쓰기">💜 파일 쓰기</h3>
<p>파일 객체를 생성한 후, <code>write()</code> 메서드를 사용하여 파일에 데이터를 쓸 수 있습니다. <code>write()</code> 메서드는 인자로 전달된 문자열을 파일에 씁니다.</p>
<blockquote>
<p>f.write(&#39;Hello, World!&#39;) # 파일에 문자열 쓰기</p>
</blockquote>
<hr>
<h3 id="🖤-파일-닫기">🖤 파일 닫기</h3>
<p>파일 처리가 끝나면, <code>close()</code> 메서드를 사용하여 파일을 닫아줘야 합니다.</p>
<blockquote>
<p>f.close() # 파일 닫기</p>
</blockquote>
<p><code>open()</code>함수로 파일을 열면 <code>close()</code>함수로 파일을 닫아 주여야 합니당. <strong>파일을 닫지 않으면, 다른 프로그램이나 프로세스에서 해당 파일을 사용할 수 없습니다.</strong> 파일 처리를 할 때에는, 파일을 열고 처리한 후에 반드시 파일을 닫아주는 것이 좋습니다. 또한, 파일 객체를 생성할 때 <code>with 구문</code>을 사용하여, 파일 객체를 사용한 후 <strong>자동으로 파일을 닫을 수도 있습니다.</strong>
🖤<code>with 키워드</code>는 파일 처리에 매우 유용하게 사용됩니다. with 문을 사용하면 파일을 열 때 자동으로 닫아주므로, 파일을 열고 닫는 일을 개발자가 직접 처리할 필요가 없습니다. 아래는 with 키워드를 사용한 파일 처리의 예시입니다:</p>
<pre><code>with open(&#39;file.txt&#39;, &#39;r&#39;) as f:
    data = f.read()
    # 파일 내용 처리

# with 블록을 빠져나오면 파일은 자동으로 닫힘</code></pre><p>위 코드에서 <code>with 키워드</code>를 사용하여 file.txt 파일을 열었습니다. 이후 with 블록 내에서 파일을 읽거나 쓰는 작업을 수행하고, with 블록을 빠져나오면 파일이 자동으로 닫힙니다. 이렇게 함으로써 파일을 처리하는 도중 예외가 발생하더라도 파일을 안전하게 닫을 수 있습니다.</p>
<pre><code>file=open(&quot;basic.txt&quot;,&quot;w&quot;)
file.write(&quot;hello Python Prigrammming T,T&quot;)
file.close()</code></pre><p>을 with 키워드로 사용하면 👇👇</p>
<pre><code>with open(&quot;basic.txt&quot;,&quot;w&quot;) as  file:
    file.write(&quot;hello Python Prigrammming T,T&quot;)</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[혼자보기위한python🌘람다1️⃣]]></title>
            <link>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EB%9E%8C%EB%8B%A4</link>
            <guid>https://velog.io/@gamja-kawaii/%ED%98%BC%EC%9E%90%EB%B3%B4%EA%B8%B0%EC%9C%84%ED%95%9Cpython%EB%9E%8C%EB%8B%A4</guid>
            <pubDate>Wed, 26 Apr 2023 06:22:11 GMT</pubDate>
            <description><![CDATA[<h1 id="1️⃣">1️⃣</h1>
<p> 람다(lambda)는 파이썬에서 <strong>함수를 간단하게 정의하는 방법</strong> 중 하나입니다. 일반적으로 람다는 이름이 없는 익명 함수로 사용되며, 함수의 입력과 출력을 정의할 수 있습니다.</p>
<p>람다 함수는 lambda 키워드를 사용하여 정의합니다. 일반적으로 다음과 같은 구문으로 작성됩니다:</p>
<blockquote>
<p>lambda arguments: expression</p>
</blockquote>
<p>여기서 arguments는 함수의 <strong>입력 인수</strong>를 나타내며, expression은 <strong>함수의 반환값을 계산하는 식</strong>입니다.</p>
<p>예를 들어, 다음은 lambda 함수를 사용하여 두 개의 숫자를 더하는 예제입니다:</p>
<pre><code class="language-sum">result = sum(3, 4)
print(result)  # 7</code></pre>
<p>위 예제에서 lambda 함수는 x와 y라는 두 개의 입력 인수를 받으며, x + y를 계산하여 반환합니다. 이후 sum 변수에 람다 함수를 할당하고, sum 함수를 호출하여 결과를 출력합니다.</p>
<hr>
<pre><code class="language-def">    for i in range(10):
        func()

def print_hello():
    print(&quot;안녕하세여&quot;)

call_10_times(print_hello)  # 매개변수로 함수를 전달합니다.</code></pre>
<p>💛<code>func()</code>는 <strong>함수를 호출</strong>하는 방법 중 하나입니다. 함수를 정의한 후에는 <code>func()</code>와 같이 괄호를 사용하여 함수를 호출할 수 있습니다. 함수 호출은 함수 내의 코드 블록을 실행하는 것을 의미합니다.</p>
<p>함수를 호출할 때 인수(argument)를 전달할 수도 있습니다. 인수는 함수의 정의에서 지정한 매개변수(parameter)에 전달됩니다. 예를 들어, 다음과 같은 함수를 정의하고 호출할 수 있습니다:</p>
<p>(✿◡‿◡)❤</p>
<p>💛<code>greet()</code> 함수는 name 매개변수를 받아서 &quot;Hello, &quot;와 name을 조합하여 출력합니다. 이후 greet() 함수를 &quot;Alice&quot;와 &quot;Bob&quot; 인수와 함께 호출하여 각각 &quot;Hello, Alice!&quot;와 &quot;Hello, Bob!&quot;을 출력합니다.</p>
<pre><code>def greet(name):
    print(&quot;Hello, &quot; + name + &quot;!&quot;)
greet(&quot;Alice&quot;)
greet(&quot;Bob&quot;)</code></pre><hr>
<p><code>filter()</code>함수와 <code>map()</code>함수는 파이썬의 내장 함수(=표준함수)로, <strong>리스트 등의 시퀀스 자료형</strong>에 대해 특정한 연산을 적용하는 함수입니다.</p>
<blockquote>
<p>filter(function, iterable)</p>
</blockquote>
<p>💙<code>filter()</code> 함수는 시퀀스 자료형의 각 요소를 순회하면서, 특정 조건을 만족하는 요소들만 걸러내어 <strong>새로운 리스트를 반환</strong>합니다. function은 시퀀스 자료형의 각 요소에 대해_ 적용할 함수_를 나타내며, iterable은 _순회할 시퀀스 자료형_을 나타냅니다. function 함수는 각 요소를 인수로 받아, True 또는 False 값을 반환해야 합니다.</p>
<pre><code>numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # [2, 4, 6]</code></pre><p>💙<code>map()</code> 함수는 시퀀스 자료형의 각 요소에 대해 특정 함수를 적용한 결과를 <strong>새로운 리스트로 반환</strong>합니다.</p>
<blockquote>
<p>map(function, iterable)</p>
</blockquote>
<pre><code>numbers = [1, 2, 3, 4, 5, 6]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # [1, 4, 9, 16, 25, 36]</code></pre><pre><code>def power(item):
    return item*item
def under_3(item):
    return item&lt;3

list_input=[1,2,3,4,5]

output_a=map(power,list_input)
print(output_a)
output_b=list(map(power,list_input))
print(output_b)

output_c=filter(under_3,list_input)
print(output_c)
output_d=list(filter(under_3,list_input))
print(output_d)</code></pre><p> <img src="https://velog.velcdn.com/images/gamja-kawaii/post/85fdfaac-a485-4954-b7a5-6d0f8bd9542c/image.JPG" alt=""></p>
<hr>
<pre><code>def power(item):
    return item*item
def under_3(item):
    return item&lt;3</code></pre><pre><code># 위의  def 로 선언했던 함수를 lamda로 바꾸고, return 키워드를 따로  쓰지 않았다는 차이가 있습니다. 
power=lambda x:x*x
under=lambda x:x&lt;3  </code></pre><hr>
<p>🤎 인라인 람다 <strong>함수를 한 줄로 간단하게 작성하는 것을 의미</strong>합니다. 인라인 람다 함수는 주로 <code>map(), filter(), reduce()와 같은 함수와 함께 사용</code>되며, 간단한 함수를 한 줄로 작성할 때 유용합니다.</p>
<pre><code>list_input_a=[1,2,3,4,5]

output_a=list(map(lambda x:x*x,list_input_a))
print(output_a)
output_b=list(filter(lambda x:x&lt;3,list_input_a))
print(output_b)</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 기본 04]]></title>
            <link>https://velog.io/@gamja-kawaii/HTML-%EA%B8%B0%EB%B3%B8-04</link>
            <guid>https://velog.io/@gamja-kawaii/HTML-%EA%B8%B0%EB%B3%B8-04</guid>
            <pubDate>Mon, 27 Mar 2023 15:36:29 GMT</pubDate>
            <description><![CDATA[<p>1️⃣
<code>&lt;dl&gt;</code>, <code>&lt;dt&gt;</code>, <code>&lt;dd&gt;</code>는 HTML에서 <strong>정의 목록</strong>을 만들 때 사용되는 태그입니다.</p>
<ul>
<li><code>&lt;dl&gt;</code> : 정의 목록을 감싸는 태그입니다.</li>
<li><code>&lt;dt&gt;</code> : 용어(단어)를 정의할 때 사용되는 태그입니다. 일반적으로 용어를 강조하기 위해 굵은 글씨체(bold)를 사용합니다.</li>
<li><code>&lt;dd&gt;</code> : 용어에 대한 정의를 나타내는 태그입니다. 일반적으로 <code>&lt;dt&gt;</code>태그 바로 아래 위치하여 새로운 단락으로 표시됩니다.</li>
</ul>
<hr>
<pre><code>&lt;body&gt;
    &lt;dl&gt;
        &lt;dt&gt;HTML&lt;/dt&gt;
        &lt;dd&gt;웹 페이지를 만드는 데 사용되는 마크업 언어&lt;/dd&gt;

        &lt;dt&gt;CSS&lt;/dt&gt;
        &lt;dd&gt;HTML 문서의 스타일을 꾸며주는 스타일 시트 언어&lt;/dd&gt;
    &lt;/dl&gt;
&lt;/body&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/2c46a396-f3da-45f2-9c56-61df0a5d1f4b/image.JPG" alt=""></p>
</blockquote>
<p><code>&lt;dl&gt;</code> 🆚 <code>&lt;dfn&gt;</code>
<code>&lt;dl&gt;</code> 요소는 용어와 그에 대한 정의가 한 쌍으로 구성되는 목록(List)을 정의할 때 사용됩니다.<code>&lt;dt&gt;</code> 요소는 용어(Definition Term)를 나타내고,<code>&lt;dd&gt;</code> 요소는 그에 대한 정의(Definition Description)를 나타냅니다.
<code>&lt;dfn&gt;</code> 요소는 용어와 그에 대한 정의를 표시할 때 사용됩니다. <code>&lt;dfn&gt;</code> 요소는 브라우저에서 이탤릭체로 표시됩니다.
아래는 <code>&lt;dfn&gt;</code> 요소를 사용하여 용어와 정의를 정의하는 예시입니다.</p>
<pre><code>&lt;body&gt;
    &lt;p&gt;
        &lt;dfn&gt;HTML&lt;/dfn&gt;은 웹 페이지를 만들기 위한 마크업 언어입니다.
    &lt;/p&gt;
&lt;/body&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/8dbc0413-d5f9-49f0-aa02-56f5f97f6061/image.JPG" alt=""></p>
</blockquote>
<hr>
<p>2️⃣
<code>&lt;ins&gt;</code>와 <code>&lt;del&gt;</code>은 HTML에서 새로운 내용을 <strong>추가</strong>하거나 기존 내용을 <strong>삭제</strong>할 때 사용되는 태그입니다.</p>
<p><code>&lt;ins&gt;</code> : 새롭게 추가된 내용을 나타내는 태그입니다. 일반적으로 <u>밑줄</u>로 표시됩니다.
<code>&lt;del&gt;</code> : 삭제된 내용을 나타내는 태그입니다. 일반적으로 <del>가운데 선</del>으로 표시됩니다.
예를 들어, 다음과 같은 코드를 작성하면 &quot;HTML5&quot;라는 내용이 추가되고 &quot;XHTML&quot;라는 내용이 삭제된 것을 표시할 수 있습니다.</p>
<pre><code>&lt;body&gt;
    &lt;p&gt;웹 표준 문서 형식: &lt;del&gt;XHTML&lt;/del&gt; &lt;ins&gt;HTML5&lt;/ins&gt;&lt;/p&gt;
&lt;/body&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/f2ae1142-c7fa-400c-b828-86c1957b7e90/image.JPG" alt=""></p>
</blockquote>
<hr>
<p>3️⃣
<code>&lt;title&gt;</code> 태그는 HTML 문서의 <strong>제목을 정의하는 태그</strong>입니다. 이 태그는 웹 브라우저에서 문서의 제목을 표시하는 데 사용됩니다. 
<code>&lt;title&gt;</code> 태그는 일반적으로 <code>&lt;head&gt;</code> 태그 안에 위치하며, 웹 페이지의 탭 제목이나 검색 엔진에서 검색 결과의 제목으로 사용됩니다. 
예를 들어, 다음과 같은 코드를 작성하면 &quot;potato_lee&quot;라는 제목을 가진 HTML 문서가 생성됩니다.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;

&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;potato_lee&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;h1&gt;감자는 고양이&lt;/h1&gt;
    &lt;p&gt;8세&lt;/p&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/7b5f4b45-4ebf-46b0-b7bf-f3d743305d61/image.JPG" alt=""></p>
</blockquote>
<hr>
<p>4️⃣
HTML <code>엔티티 코드</code>는 HTML에서 사용되는 특수 기호를 나타내기 위해 사용되는 코드입니다. 이러한 코드를 사용하면 특수 기호를 HTML에서 사용할 수 있습니다. 일부 자주 사용되는 HTML 엔티티 코드는 다음과 같습니다.</p>
<table>
<thead>
<tr>
<th>HTML 표현법</th>
<th align="center">특수기호</th>
</tr>
</thead>
<tbody><tr>
<td><code>&amp;lt;</code></td>
<td align="center">&lt;</td>
</tr>
<tr>
<td><code>&amp;gt;</code></td>
<td align="center">&gt;</td>
</tr>
<tr>
<td><code>&amp;amp;</code></td>
<td align="center">&amp;</td>
</tr>
<tr>
<td><code>&amp;quot;</code></td>
<td align="center">&quot;</td>
</tr>
<tr>
<td><code>&amp;apos;</code></td>
<td align="center">&apos;</td>
</tr>
<tr>
<td><code>&amp;copy;</code></td>
<td align="center">&copy;</td>
</tr>
<tr>
<td><code>&amp;nbsp;</code></td>
<td align="center">&nbsp;</td>
</tr>
</tbody></table>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 기본 03]]></title>
            <link>https://velog.io/@gamja-kawaii/HTML-%EA%B8%B0%EB%B3%B8-03</link>
            <guid>https://velog.io/@gamja-kawaii/HTML-%EA%B8%B0%EB%B3%B8-03</guid>
            <pubDate>Mon, 27 Mar 2023 13:35:08 GMT</pubDate>
            <description><![CDATA[<p>1️⃣ 
<code>&lt;h1&gt;~&lt;h6&gt;</code>글자 크기 조정 할 수 있다.</p>
<ul>
<li>align = left / mille =center / right</li>
</ul>
<pre><code>&lt;body&gt;
    &lt;!-- align = left / mille =center / right --&gt;
    &lt;h1 align=&quot;middle&quot;&gt;h1 : align=middle&lt;/h1&gt;
    &lt;h2 align=&quot;center&quot;&gt;h2 : align=center&lt;/h2&gt;
    &lt;h3 align=&quot;right&quot;&gt;h3 : align=right&lt;/h3&gt;
    &lt;h4 align=&quot;left&quot;&gt;h4 : align=left&lt;/h4&gt;
    &lt;h5&gt;h5&lt;/h5&gt;
    &lt;h6&gt;h6&lt;/h6&gt;
    그냥 글씨

&lt;/body&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/bebedfcc-6c51-4348-a1e3-69df0f3e5b8b/image.JPG" alt=""></p>
</blockquote>
<hr>
<p>2️⃣
<code>&lt;font&gt;</code> : HTML 코드에서 사용되는 태그로, 텍스트의 색상, 크기, 글꼴 등을 변경하는 데 사용됩니다. size, color , face(글자체) 선택할 수 있습니다.
ex 
<code>&lt;font color=&quot;red&quot;&gt;</code><font color="red">이 텍스트는 빨간색으로 표시됩니다.</font>
<code>&lt;font color=&quot;sky blue&quot;&gt;</code><font color="skyblue"><u>이 텍스트는 하늘색+밑줄로 표시됩니다.</font></u>
<code>&lt;font color=&quot;deepblue&quot; backcolor=&quot;black&quot;&gt;</code><font color="blue"><i>이 텍스트는 파란색+이탤릭체로 표시됩니다.</font></i></p>
<ul>
<li><p><code>&lt;b&gt;</code> 태그는 텍스트를 굵게 표시(bold)합니다. </p>
</li>
<li><p><code>&lt;sub&gt;</code>태그는 텍스트를 아래 첨자로 표시합니다. 예를 들어, <code>H&lt;sub&gt;2&lt;/sub&gt;O</code> H<sub>2</sub>O와 같이 사용할 수 있습니다.</p>
</li>
<li><p><code>&lt;sup&gt;</code> 태그는 텍스트를 위 첨자로 표시합니다. 예를 들어, <code>x&lt;sup&gt;2&lt;/sup&gt;</code> x<sup>2</sup>와 같이 사용할 수 있습니다.</p>
</li>
</ul>
<hr>
<p>💚<code>&lt;font&gt;</code>vs<code>&lt;h1&gt;</code>💚
<code>&lt;font&gt;</code>와 <code>&lt;h1&gt;</code>은 모두 HTML 코드에서 사용되는 태그입니다.
<code>&lt;font&gt;</code> 태그는 텍스트의 색상, 크기 및 글꼴 등을 변경하는 데 사용됩니다. 예를 들어, <code>&lt;font color=&quot;red&quot;&gt;</code>이 텍스트는 빨간색으로 표시됩니다.<code>&lt;/font&gt;</code>와 같이 사용할 수 있습니다. 그러나 이 태그는 더 이상 권장되지 않으며, CSS 스타일 시트를 사용하여 스타일을 적용하는 것이 좋습니다.
<code>&lt;h1&gt;</code> 태그는 <strong>문서의 제목을 정의</strong>하는 데 사용됩니다. 웹 페이지에서 가장 중요한 제목으로 간주되며, 일반적으로 한 페이지에서 한 번만 사용됩니다. <code>&lt;h1&gt;</code> 태그를 사용하여 제목을 정의하면 검색 엔진에서 페이지의 내용을 인덱싱하는 데 도움이 됩니다. 또한, 이 태그는 CSS 스타일 시트를 사용하여 제목의 스타일을 변경할 수 있습니다. 예를 들어, 
<code>&lt;h1 style=&quot;color: blue;&quot;&gt;</code></p>
<h1 style="color: blue;">이 텍스트는 파란색으로 표시됩니다.</h1>

<hr>
<p>3️⃣
<code>&lt;ruby&gt;</code> 태그는 일본어와 같이 다른 언어의 문자를 표시할 때 사용됩니다. 이 태그를 사용하면 병렬적으로 다른 언어의 발음이나 뜻을 표시할 수 있습니다.</p>
<pre><code>&lt;body&gt;
    &lt;ruby&gt;
        &lt;!--
        &lt;rb&gt;주요텍스트&lt;/rb&gt;
        &lt;rt&gt;발음 또는 뜻&lt;/rt&gt;
         --&gt;
        &lt;rb&gt; 東京 &lt;/rb&gt;
        &lt;rt&gt; とうきょう&lt;/rt&gt;
    &lt;/ruby&gt;
&lt;/body&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/9152e064-7dce-4f18-a51b-026a646b4d23/image.JPG" alt=""></p>
</blockquote>
<hr>
<p>4️⃣
<code>&lt;span&gt;</code> 태그는 인라인 요소로, 텍스트나 이미지 등을 감싸 특정 스타일을 적용하거나, 자바스크립트를 사용하여 동적으로 변경할 때 사용됩니다.</p>
<p><code>&lt;span&gt;</code> 태그에는 <strong>class, id, style</strong> 속성이 있습니다. 이들 속성은 각각 아래와 같은 역할을 합니다.</p>
<ul>
<li><p>class: 여러 개의 HTML 요소에 대해 동일한 스타일을 적용하고자 할 때 사용합니다. 즉, <strong>동일한 스타일을 적용할 요소들을 하나의 클래스</strong>로 묶어놓고, CSS에서 그 클래스를 선택하여 스타일을 적용할 수 있습니다.</p>
</li>
<li><p>id: HTML 요소 중에서 단 하나의 요소에 대해서만 스타일을 적용하거나, 자바스크립트를 사용하여 해당 요소를 선택하고 조작하고자 할 때 사용합니다. id는 중복해서 사용할 수 없습니다.</p>
</li>
<li><p>style: 해당 요소에 직접 스타일을 적용하고자 할 때 사용합니다. 즉, 해당 요소에 대해 개별적으로 스타일을 적용할 때 사용합니다.</p>
</li>
</ul>
<p>이들 속성은 서로 독립적으로 사용될 수 있지만, 같이 사용될 수도 있습니다. 예를 들어, <code>&lt;span&gt;</code> 태그에 class 속성과 style 속성을 함께 사용하여 특정 스타일을 적용할 수 있습니다.</p>
<blockquote>
<p><code>&lt;span class=&quot;highlight&quot; style=&quot;color: red;&quot;&gt;</code><span class="highlight" style="color: red;">이 텍스트는 빨간색으로 스타일링되었으며, highlight 클래스를 가지고 있습니다.</span></p>
</blockquote>
<pre><code>&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Document&lt;/title&gt;
    &lt;style&gt;
        .test {
            color: blueviolet;
        }
    &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
    오늘날짜 :&lt;span class=&quot;test&quot;&gt;2023/03/27&lt;/span&gt; HTML공부 &lt;br&gt;
    내일날짜 :&lt;span class=&quot;test&quot;&gt;2023/03/28&lt;/span&gt; HTML공부
&lt;/body&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/1cc1f984-78ae-4df5-9909-ff446bdae3f4/image.JPG" alt=""></p>
</blockquote>
<hr>
<p>5️⃣
<code>&lt;ul&gt;</code> 태그는 HTML에서 <strong>&quot;unordered list&quot;</strong>를 의미하는 태그로, 순서가 없는 목록을 생성할 때 사용됩니다.</p>
<pre><code>&lt;body&gt;
    다이어트 후 먹고싶은 음식
    &lt;ul&gt;
        &lt;li&gt;훠맥&lt;/li&gt;
        &lt;li&gt;피맥&lt;/li&gt;
        &lt;li&gt;치맥&lt;/li&gt;
    &lt;/ul&gt;
&lt;/body&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/43183a0b-2cf6-46ff-80f1-80171cfb1977/image.JPG" alt=""></p>
</blockquote>
<p><code>&lt;ol&gt;</code> 태그는 HTML에서** &quot;ordered list&quot;**를 의미하는 태그로, 순서가 있는 목록을 생성할 때 사용됩니다.  </p>
<pre><code>&lt;body&gt;
    내가 좋아하는 동물은
    &lt;ol type=&quot;1&quot; start=&quot;4&quot;&gt;
        &lt;li&gt;고양이&lt;/li&gt;
        &lt;li&gt;호랭이&lt;/li&gt;
        &lt;li&gt;감자둥이&lt;/li&gt;
    &lt;/ol&gt;
&lt;/body&gt;
</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/ecd8ae2d-58fd-4397-9ca7-df318debd633/image.JPG" alt=""></p>
</blockquote>
<table>
<thead>
<tr>
<th>type</th>
<th align="center">항목초기설정</th>
<th align="right">부가설명</th>
</tr>
</thead>
<tbody><tr>
<td><strong>1</strong></td>
<td align="center">1,2,3,...</td>
<td align="right">따로 설정 안하면</td>
</tr>
<tr>
<td><strong>A</strong></td>
<td align="center">A,B,C,...</td>
<td align="right">자동으로</td>
</tr>
<tr>
<td><strong>a</strong></td>
<td align="center">a,b,c,...</td>
<td align="right">가장 먼저 인</td>
</tr>
<tr>
<td><strong>I</strong></td>
<td align="center">I,II,III,...</td>
<td align="right">(1,A,a,I,i)으로</td>
</tr>
<tr>
<td><strong>i</strong></td>
<td align="center">i,ii,iii,...</td>
<td align="right">진행</td>
</tr>
</tbody></table>
<pre><code>&lt;body&gt;
    내가 좋아하는 음식은
    &lt;ol type=&quot;A&quot;&gt;
        &lt;li&gt;훠궈&lt;/li&gt;
        &lt;li&gt;과일&lt;/li&gt;
        &lt;li&gt;쳐컬랫&lt;/li&gt;
    &lt;/ol&gt;
&lt;/body&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/75652817-58cc-4321-a523-39b12f0add4b/image.JPG" alt=""></p>
</blockquote>
<p>  🤍🖤🖤❓</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 기본 02]]></title>
            <link>https://velog.io/@gamja-kawaii/HTML-%EA%B8%B0%EB%B3%B8-02</link>
            <guid>https://velog.io/@gamja-kawaii/HTML-%EA%B8%B0%EB%B3%B8-02</guid>
            <pubDate>Mon, 27 Mar 2023 12:16:25 GMT</pubDate>
            <description><![CDATA[<p>   🤍 HTML에서 <code>&lt;p&gt;</code> 는 문단(paragraph)을 나타내는 요소입니다. 일반적으로 텍스트 콘텐츠를 구성하는 데 사용됩니다. 브라우저에서 자동으로 문단을 구분하고, 각각의 문단이 서로 다른 스타일이나 레이아웃 등을 가질 수 있도록 합니다.</p>
<hr>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;

&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Document&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;p&gt;This is the first paragraph_&lt;/p&gt;
    &lt;p&gt;This is the second paragraph_&lt;/p&gt;
    &lt;p&gt;This is the third paragraph_&lt;br&gt;
        동해물과 백두산이 마르고 닳도록&lt;br&gt;
        하느님이 보우하사 우리나라만세~~&lt;br&gt;
        무궁화아 삼천리이 화려가앙산&lt;/p&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/4234a197-f13c-410c-9858-d66de6078381/image.JPG" alt=""></p>
</blockquote>
<hr>
<p>🖤<code>&lt;blockquote&gt;,&lt;pre&gt;</code>텍스트 형식을 변경하거나 인용문을 나타내는 데 사용되는 요소입니다. <code>&lt;blockquote&gt;</code> 요소는 인용문을 나타내며, 일반적으로 인용문 안에는 다른 소스나 작업물에서 발췌한 텍스트가 들어갑니다. 
<code>&lt;pre&gt;</code> 요소는 서식이 지정된(preformatted) 텍스트를 나타냅니다. 이 요소는 텍스트가 어떻게 표시되는지에 대한 공백과 줄 바꿈을 유지합니다. <code>&lt;pre&gt;</code> 요소는 일반적으로 소스 코드나 텍스트 문서를 포함한 블록 요소를 표시하는 데 사용됩니다. </p>
<p>🖤 HTML에서 <code>&lt;hr&gt;</code>은 문서 내에 수평선(horizontal line)을 삽입하는 데 사용되는 요소입니다. <code>&lt;hr&gt;</code>요소는 단독으로 사용하며, 시작 태그와 종료 태그를 사용하지 않습니다. 기본적으로 수평선은 문서의 가로폭 전체에 걸쳐 그려지며, 색상은 브라우저 또는 문서 스타일 시트에서 정의한 값으로 표시됩니다. color, size, width, align 등의 속성을 사용하여 수평선의 색상, 높이, 너비 및 정렬 등을 변경할 수 있습니다.</p>
<pre><code>&lt;body&gt;
    &lt;blockquote&gt;
        blockquote 단락은 앞에 공간이 띄워져 있다~~
    &lt;/blockquote&gt;
    &lt;blockquote&gt;
        보통 인용문 2 (다른 소스, 작업물)
    &lt;/blockquote&gt;
    &lt;p&gt; 이건 p입니다 &lt;/p&gt;
    &lt;p&gt; 이것도 마찬가지 입니다. &lt;/p&gt;
    &lt;hr&gt;
    &lt;hr&gt;
    &lt;pre&gt;
            세칸_띄우고_쓰기
          두칸_띄우고_6쓰기
         한칸_띄우고_쓰기
    &lt;/pre&gt;
&lt;/body&gt;</code></pre><blockquote>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/f5ded620-a8a3-4160-a4bd-c8c57fd0c90c/image.JPG" alt=""></p>
</blockquote>
<pre><code>&lt;body&gt;
 &lt;!--align 따로 안적으면 가운데에 표시됨
    width = 가로 &quot;% 나 숫자로 표현가능&quot;  
    size = 세로 .--&gt;
 &lt;hr color=&quot;pink&quot; align=&quot;left&quot; width=&quot;60%&quot; size=&quot;40&quot;&gt;
 &lt;hr color=&quot;pink&quot; align=&quot;left&quot; width=&quot;600&quot; size=&quot;40&quot;&gt;
 &lt;hr color=&quot;sky blue&quot;  width=&quot;50%&quot; size=&quot;40&quot;&gt;
 &lt;hr color=&quot;#0099ff&quot; align=&quot;right&quot; width=&quot;50%&quot; size=&quot;20&quot;&gt;
&lt;/body&gt;</code></pre><blockquote>
<p>주석 <code>&lt;!----&gt;</code> 을 사용합니다<img src="https://velog.velcdn.com/images/gamja-kawaii/post/785fde88-b7b4-447f-b09d-97fbeb5b26b7/image.JPG" alt=""></p>
</blockquote>
<p> ✔🧡💛🤍🖤 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 기본 01]]></title>
            <link>https://velog.io/@gamja-kawaii/HTML-%EA%B8%B0%EB%B3%B8-01</link>
            <guid>https://velog.io/@gamja-kawaii/HTML-%EA%B8%B0%EB%B3%B8-01</guid>
            <pubDate>Sat, 25 Mar 2023 12:51:18 GMT</pubDate>
            <description><![CDATA[<h3 id="html5-기본구성">HTML5 기본구성</h3>
<p>  <img src="https://velog.velcdn.com/images/gamja-kawaii/post/2bae8277-395f-424e-b884-99465495cbf4/image.JPG" alt=""></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;

&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Document&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;header&gt;
        &lt;h1&gt;우리집 고양이 : 감자&lt;/h1&gt;
    &lt;/header&gt;
    &lt;nav&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;poem.html&quot;&gt;2023년의 감자&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;poem.html&quot;&gt;2022년의 감자&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;poem.html&quot;&gt;2021년의 감자&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/nav&gt;
    &lt;article&gt;
        &lt;p&gt; 이것은 내용입니다~ 오늘 비가 많이 오고 번개가 치고 밖이 굉장히 소란스러웠다.
            그래서 오늘 감자가 많이 긴장한거같다. 지금은 내 무릎위에서 고롱고롱거리는중. 
            굉장히 딷뜻행 사랑해 감자둥잉 &lt;/p&gt;
    &lt;/article&gt;
    &lt;footer&gt;
        &lt;p&gt;&lt;small&gt;2023/3/25 지구 어느곳에서 &lt;/small&gt;&lt;/p&gt;
    &lt;/footer&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre><h2 id="결과-">결과 :</h2>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/f63fec8a-b867-4b4a-931b-22080afafd53/image.JPG" alt=""></p>
<h3 id="nav-요소"><strong>nav</strong> 요소</h3>
<p>  문서 내비게이션 역할을 하는 요소로, 일반적으로 웹 페이지 상단에 위치하여 사용자가 사이트 내에서 필요한 정보를 쉽게 찾을 수 있도록 합니다. 
ex 웹 사이트의 메뉴 부분</p>
<h3 id="article-요소"><strong>article</strong> 요소</h3>
<p> 독립적인 콘텐츠 블록을 나타내며, 뉴스 기사, 블로그 게시물 등과 같이 하나의 주제에 대한 내용을 담고 있는 구성 요소입니다.
ex 해당 메뉴에서 선택된 항목의 내용</p>
<h3 id="section-요소"><strong>section</strong> 요소</h3>
<p>문서의 구획을 나타내는 요소입니다. 이 요소는 문서의 구성 요소 중 하나로, 동일한 주제나 목적을 가진 콘텐츠 블록을 그룹화합니다.
보통 section 요소는 헤딩 요소(h1 ~ h6)로 시작하여, 해당 섹션의 제목을 나타냅니다. 그리고 이어서 해당 섹션에 포함될 콘텐츠를 추가합니다.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;

&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Document&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;section&gt;
        &lt;p&gt; 츄르 종류별 링크&lt;/p&gt;
        &lt;nav&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href=&quot;site01.html&quot;&gt;가다랑어맛 구매처&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;site02.html&quot;&gt;닥찌찌맛 구매처&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;site03.html&quot;&gt;연어맛 구매처&lt;/a&gt;&lt;/li&gt;
                &lt;!--다른 링크도 계속 추가가능--&gt;
            &lt;/ul&gt;
        &lt;/nav&gt;
    &lt;/section&gt;
    &lt;section&gt;
        &lt;p&gt;템테이션 종류별&lt;/p&gt;
        &lt;!--이 곳은 템테이션 종류별 링크--&gt;
    &lt;/section&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre><h2 id="결과--1">결과 :</h2>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/3ffc5a79-f416-4117-b1df-0acc5d449bb3/image.JPG" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 이해하기]]></title>
            <link>https://velog.io/@gamja-kawaii/HTML-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EA%B8%B0%EB%B3%B8-01</link>
            <guid>https://velog.io/@gamja-kawaii/HTML-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EA%B8%B0%EB%B3%B8-01</guid>
            <pubDate>Fri, 24 Mar 2023 17:47:05 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/b9ad35f9-a82c-40e7-b30c-3f24e36761ea/image.JPG" alt=""></p>
<h2 id="html5의-설계-원칙은-다음과-같습니다">HTML5의 <strong>설계 원칙</strong>은 다음과 같습니다.</h2>
<p>1.<strong>호환성</strong>: HTML5은 이전 버전의 HTML과 호환됩니다. 기존의 HTML 문서는 HTML5로 업그레이드할 수 있습니다.</p>
<p>2.<strong>유연성</strong>: HTML5은 다양한 종류의 콘텐츠와 기기에서 작동할 수 있도록 설계되었습니다. 예를 들어 모바일 기기에서도 웹 페이지가 잘 작동하도록 최적화되었습니다.</p>
<p>3.<strong>접근성</strong>: HTML5은 웹 콘텐츠에 대한 접근성을 높이기 위한 다양한 기능을 제공합니다. 예를 들어, 시각 장애인이 화면 낭독기를 사용하여 콘텐츠를 이해할 수 있도록 alt 속성을 사용하여 이미지에 대한 설명을 제공할 수 있습니다.</p>
<p>4.<strong>통일성</strong>: HTML5은 새로운 요소와 표준을 추가하여 웹 페이지를 일관되게 작성할 수 있도록 하였습니다. 예를 들어, 헤더, 푸터, 내비게이션 등의 요소를 새로 추가하여 일관된 구조를 만들 수 있습니다.</p>
<p>5.<strong>성능</strong>: HTML5은 더 나은 성능을 위해 다양한 기능을 제공합니다. 예를 들어, 브라우저에서 동영상을 쉽게 재생할 수 있도록 video 요소를 제공하며, 로컬 스토리지를 사용하여 브라우저 캐시를 효과적으로 관리할 수 있습니다.</p>
<p>6.<strong>개방성</strong>: HTML5은 개방적인 표준으로 개발되었습니다. 이는 누구나 HTML5을 사용하여 웹 콘텐츠를 개발할 수 있고, 다양한 브라우저에서 작동할 수 있도록 합니다.</p>
<p><img src="https://velog.velcdn.com/images/gamja-kawaii/post/8acf221b-c8c6-4b50-84ba-b4f9d7eebfb5/image.JPG" alt=""></p>
<h3 id="html5-의-기본-구성은-doctype-header-body등-3부분으로-나뉩니다">HTML5 의 기본 구성은 DOCTYPE, HEADER, BODY등 3부분으로 나뉩니다.</h3>
<blockquote>
<p>HTML Tag list : <a href="https://www.w3schools.com/tags/">https://www.w3schools.com/tags/</a>
Online editors for learning computer language
: <a href="http://www.tutorialspoint.com/codingground.htm">http://www.tutorialspoint.com/codingground.htm</a>
HTML / CSS / JS 같이 연습할 수 있는 링크!  
CodePen : <a href="https://codepen.io/pen/">https://codepen.io/pen/</a>
Jsfiddle : <a href="https://jsfiddle.net/">https://jsfiddle.net/</a></p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>