<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>에이아이 GOGO 자동화</title>
    <link>https://umjam33.tistory.com/</link>
    <description>파이썬 프로그램 예제로 공부해요. 챗GPT, 챗GPTS, 클로드, MAKE 자동화등</description>
    <language>ko</language>
    <pubDate>Thu, 13 Aug 2026 06:11:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>＆＠■&amp;larr;※</managingEditor>
    <image>
      <title>에이아이 GOGO 자동화</title>
      <url>https://tistory1.daumcdn.net/tistory/5081459/attach/cf1588ce76ef4764907895b66296b5b2</url>
      <link>https://umjam33.tistory.com</link>
    </image>
    <item>
      <title>12. 파이썬 함수 기초부터 응용까지 한번에 끝내기.</title>
      <link>https://umjam33.tistory.com/entry/12-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%95%A8%EC%88%98-%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EC%9D%91%EC%9A%A9%EA%B9%8C%EC%A7%80-%ED%95%9C%EB%B2%88%EC%97%90-%EB%81%9D%EB%82%B4%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-함수.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z923N/btsOhjKgWDo/vLkE2hPmjdtrCkhg8ISKPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z923N/btsOhjKgWDo/vLkE2hPmjdtrCkhg8ISKPk/img.png&quot; data-alt=&quot;파이썬-함수&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z923N/btsOhjKgWDo/vLkE2hPmjdtrCkhg8ISKPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz923N%2FbtsOhjKgWDo%2FvLkE2hPmjdtrCkhg8ISKPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-함수.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-함수&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;함수의 개념 이해하기 &lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수를&amp;nbsp;배우기&amp;nbsp;전에&amp;nbsp;커피머신을&amp;nbsp;떠올려보세요.&amp;nbsp;우리가&amp;nbsp;커피머신에&amp;nbsp;원두와&amp;nbsp;물을&amp;nbsp;넣으면,&amp;nbsp;커피머신은&amp;nbsp;이를&amp;nbsp;처리해서&amp;nbsp;맛있는&amp;nbsp;커피를&amp;nbsp;만들어&amp;nbsp;줍니다.&amp;nbsp;여기서&amp;nbsp;원두와&amp;nbsp;물은&amp;nbsp;'입력값',&amp;nbsp;커피는&amp;nbsp;'출력값'이&amp;nbsp;됩니다. &lt;br /&gt;&lt;br /&gt;프로그래밍의&amp;nbsp;함수도&amp;nbsp;이와&amp;nbsp;똑같습니다.&amp;nbsp;어떤&amp;nbsp;값을&amp;nbsp;입력받아서&amp;nbsp;특정한&amp;nbsp;작업을&amp;nbsp;수행한&amp;nbsp;후,&amp;nbsp;결과를&amp;nbsp;돌려주는&amp;nbsp;것이&amp;nbsp;바로&amp;nbsp;함수의&amp;nbsp;역할입니다. &lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들어&amp;nbsp;수학&amp;nbsp;시간에&amp;nbsp;배운&amp;nbsp;y&amp;nbsp;=&amp;nbsp;2x&amp;nbsp;+&amp;nbsp;1도&amp;nbsp;함수입니다.&amp;nbsp;x값을&amp;nbsp;입력하면&amp;nbsp;그에&amp;nbsp;따라&amp;nbsp;y값이&amp;nbsp;결정되죠.&amp;nbsp;x가&amp;nbsp;3이면&amp;nbsp;y는&amp;nbsp;7이&amp;nbsp;되는&amp;nbsp;것처럼&amp;nbsp;말입니다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;왜 함수를 사용할까요? &lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래밍을&amp;nbsp;하다&amp;nbsp;보면&amp;nbsp;같은&amp;nbsp;코드를&amp;nbsp;여러&amp;nbsp;번&amp;nbsp;작성하게&amp;nbsp;되는&amp;nbsp;경우가&amp;nbsp;많습니다.&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;두&amp;nbsp;수를&amp;nbsp;더하는&amp;nbsp;계산을&amp;nbsp;프로그램&amp;nbsp;곳곳에서&amp;nbsp;해야&amp;nbsp;한다면,&amp;nbsp;매번&amp;nbsp;더하기&amp;nbsp;코드를&amp;nbsp;작성하는&amp;nbsp;것보다&amp;nbsp;함수로&amp;nbsp;만들어&amp;nbsp;두고&amp;nbsp;필요할&amp;nbsp;때마다&amp;nbsp;사용하는&amp;nbsp;것이&amp;nbsp;훨씬&amp;nbsp;효율적입니다. &lt;br /&gt;&lt;br /&gt;또한&amp;nbsp;함수를&amp;nbsp;사용하면&amp;nbsp;프로그램을&amp;nbsp;기능별로&amp;nbsp;나누어&amp;nbsp;관리할&amp;nbsp;수&amp;nbsp;있어서,&amp;nbsp;프로그램의&amp;nbsp;흐름을&amp;nbsp;이해하기&amp;nbsp;쉽고&amp;nbsp;오류를&amp;nbsp;찾기도&amp;nbsp;간편합니다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파이썬 함수의 기본 구조 &lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서&amp;nbsp;함수를&amp;nbsp;만드는&amp;nbsp;기본&amp;nbsp;형태는&amp;nbsp;다음과&amp;nbsp;같습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;함수이름(매개변수): &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;실행할_코드1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;실행할_코드2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;... &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;결과값&amp;nbsp;&amp;nbsp;#&amp;nbsp;생략&amp;nbsp;가능 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;가장&amp;nbsp;간단한&amp;nbsp;함수를&amp;nbsp;만들어보겠습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;plus(x,&amp;nbsp;y):&amp;nbsp;&amp;nbsp;#&amp;nbsp;plus라는&amp;nbsp;이름의&amp;nbsp;함수를&amp;nbsp;정의,&amp;nbsp;x와&amp;nbsp;y를&amp;nbsp;입력받음 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;=&amp;nbsp;x&amp;nbsp;+&amp;nbsp;y&amp;nbsp;&amp;nbsp;#&amp;nbsp;두&amp;nbsp;수를&amp;nbsp;더해서&amp;nbsp;result에&amp;nbsp;저장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;result&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;결과값을&amp;nbsp;돌려줌 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;함수&amp;nbsp;사용하기 &lt;br /&gt;answer&amp;nbsp;=&amp;nbsp;plus(5,&amp;nbsp;3)&amp;nbsp;&amp;nbsp;#&amp;nbsp;5와&amp;nbsp;3을&amp;nbsp;plus&amp;nbsp;함수에&amp;nbsp;전달 &lt;br /&gt;print(answer)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;8이&amp;nbsp;출력됨 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;여기서&amp;nbsp;x,&amp;nbsp;y는&amp;nbsp;'매개변수'라고&amp;nbsp;하고,&amp;nbsp;함수를&amp;nbsp;호출할&amp;nbsp;때&amp;nbsp;전달하는&amp;nbsp;5,&amp;nbsp;3은&amp;nbsp;'인수'라고&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입력값과 출력값이 모두 있는 함수 &lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;가장 일반적인 형태의 함수입니다&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;```python &lt;br /&gt;def&amp;nbsp;multiply(a,&amp;nbsp;b):&amp;nbsp;&amp;nbsp;#&amp;nbsp;두&amp;nbsp;수를&amp;nbsp;곱하는&amp;nbsp;함수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;=&amp;nbsp;a&amp;nbsp;*&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;곱셈&amp;nbsp;계산 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;result&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;결과&amp;nbsp;반환 &lt;br /&gt;&lt;br /&gt;number&amp;nbsp;=&amp;nbsp;multiply(4,&amp;nbsp;7)&amp;nbsp;&amp;nbsp;#&amp;nbsp;4와&amp;nbsp;7을&amp;nbsp;곱한&amp;nbsp;결과를&amp;nbsp;number에&amp;nbsp;저장 &lt;br /&gt;print(number)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;28이&amp;nbsp;출력됨 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;입력값이 없는 함수&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;입력값&amp;nbsp;없이도&amp;nbsp;동작하는&amp;nbsp;함수를&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;greet():&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;매개변수가&amp;nbsp;없음 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&quot;안녕하세요!&quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;항상&amp;nbsp;같은&amp;nbsp;인사말&amp;nbsp;반환 &lt;br /&gt;&lt;br /&gt;message&amp;nbsp;=&amp;nbsp;greet()&amp;nbsp;&amp;nbsp;#&amp;nbsp;괄호는&amp;nbsp;비어있지만&amp;nbsp;반드시&amp;nbsp;써야&amp;nbsp;함 &lt;br /&gt;print(message)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;&quot;안녕하세요!&quot;가&amp;nbsp;출력됨 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;출력값이 없는 함수&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;결과를&amp;nbsp;돌려주지&amp;nbsp;않고&amp;nbsp;단순히&amp;nbsp;작업만&amp;nbsp;수행하는&amp;nbsp;함수입니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;show_info(name,&amp;nbsp;age):&amp;nbsp;&amp;nbsp;#&amp;nbsp;정보를&amp;nbsp;출력만&amp;nbsp;하는&amp;nbsp;함수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(f&quot;{name}님의&amp;nbsp;나이는&amp;nbsp;{age}살입니다.&quot;)&amp;nbsp;&amp;nbsp;#&amp;nbsp;화면에&amp;nbsp;출력만&amp;nbsp;함 &lt;br /&gt;&lt;br /&gt;show_info(&quot;김철수&quot;,&amp;nbsp;12)&amp;nbsp;&amp;nbsp;#&amp;nbsp;&quot;김철수님의&amp;nbsp;나이는&amp;nbsp;12살입니다.&quot;&amp;nbsp;출력 &lt;br /&gt;#&amp;nbsp;이&amp;nbsp;함수는&amp;nbsp;return이&amp;nbsp;없으므로&amp;nbsp;결과값을&amp;nbsp;받을&amp;nbsp;수&amp;nbsp;없음 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;입력값도 출력값도 없는 함수&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;가장&amp;nbsp;단순한&amp;nbsp;형태의&amp;nbsp;함수입니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;say_hello():&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;입력값&amp;nbsp;없음 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(&quot;반갑습니다!&quot;)&amp;nbsp;&amp;nbsp;#&amp;nbsp;출력값도&amp;nbsp;없고&amp;nbsp;단순히&amp;nbsp;인사만&amp;nbsp;출력 &lt;br /&gt;&lt;br /&gt;say_hello()&amp;nbsp;&amp;nbsp;#&amp;nbsp;&quot;반갑습니다!&quot;&amp;nbsp;출력 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;함수 호출 시 매개변수 지정하기&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;함수를&amp;nbsp;호출할&amp;nbsp;때&amp;nbsp;매개변수&amp;nbsp;이름을&amp;nbsp;직접&amp;nbsp;지정할&amp;nbsp;수&amp;nbsp;있습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;subtract(first,&amp;nbsp;second):&amp;nbsp;&amp;nbsp;#&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;수에서&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;수를&amp;nbsp;빼는&amp;nbsp;함수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;first&amp;nbsp;-&amp;nbsp;second &lt;br /&gt;&lt;br /&gt;일반적인 방법 &lt;br /&gt;result1&amp;nbsp;=&amp;nbsp;subtract(10,&amp;nbsp;3)&amp;nbsp;&amp;nbsp;#&amp;nbsp;10&amp;nbsp;-&amp;nbsp;3&amp;nbsp;=&amp;nbsp;7 &lt;br /&gt;&lt;br /&gt;매개변수 이름을 지정하는 방법 &lt;br /&gt;result2&amp;nbsp;=&amp;nbsp;subtract(first=10,&amp;nbsp;second=3)&amp;nbsp;&amp;nbsp;#&amp;nbsp;같은&amp;nbsp;결과:&amp;nbsp;7 &lt;br /&gt;&lt;br /&gt;순서를 바꿔도 됨 &lt;br /&gt;result3&amp;nbsp;=&amp;nbsp;subtract(second=3,&amp;nbsp;first=10)&amp;nbsp;&amp;nbsp;#&amp;nbsp;여전히&amp;nbsp;10&amp;nbsp;-&amp;nbsp;3&amp;nbsp;=&amp;nbsp;7 &lt;br /&gt;&lt;br /&gt;print(result1,&amp;nbsp;result2,&amp;nbsp;result3)&amp;nbsp;&amp;nbsp;#&amp;nbsp;7&amp;nbsp;7&amp;nbsp;7&amp;nbsp;출력 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;입력값이 여러 개일 때 처리하기&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때로는 함수에 몇 개의 값이 들어올지 미리 알 수 없는 경우가 있습니다. 이럴 때는 `*`를 사용합니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;sum_all(*numbers):&amp;nbsp;&amp;nbsp;#&amp;nbsp;몇&amp;nbsp;개든&amp;nbsp;숫자를&amp;nbsp;받을&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total&amp;nbsp;=&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;합계를&amp;nbsp;저장할&amp;nbsp;변수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;num&amp;nbsp;in&amp;nbsp;numbers:&amp;nbsp;#&amp;nbsp;받은&amp;nbsp;모든&amp;nbsp;숫자를&amp;nbsp;하나씩&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;total&amp;nbsp;=&amp;nbsp;total&amp;nbsp;+&amp;nbsp;num&amp;nbsp;&amp;nbsp;#&amp;nbsp;합계에&amp;nbsp;더하기 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;total&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;최종&amp;nbsp;합계&amp;nbsp;반환 &lt;br /&gt;&lt;br /&gt;다양한 개수의 숫자로 테스트 &lt;br /&gt;print(sum_all(1,&amp;nbsp;2))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;3&amp;nbsp;출력 &lt;br /&gt;print(sum_all(1,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;4))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;10&amp;nbsp;출력 &lt;br /&gt;print(sum_all(5,&amp;nbsp;10,&amp;nbsp;15,&amp;nbsp;20,&amp;nbsp;25))&amp;nbsp;&amp;nbsp;#&amp;nbsp;75&amp;nbsp;출력 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;좀&amp;nbsp;더&amp;nbsp;복잡한&amp;nbsp;예제를&amp;nbsp;살펴보겠습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;calc(operation,&amp;nbsp;*nums):&amp;nbsp;&amp;nbsp;#&amp;nbsp;첫&amp;nbsp;번째는&amp;nbsp;연산&amp;nbsp;종류,&amp;nbsp;나머지는&amp;nbsp;숫자들 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;operation&amp;nbsp;==&amp;nbsp;&quot;plus&quot;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;더하기인&amp;nbsp;경우 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;=&amp;nbsp;0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;n&amp;nbsp;in&amp;nbsp;nums: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;=&amp;nbsp;result&amp;nbsp;+&amp;nbsp;n &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;operation&amp;nbsp;==&amp;nbsp;&quot;times&quot;:&amp;nbsp;&amp;nbsp;#&amp;nbsp;곱하기인&amp;nbsp;경우 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;=&amp;nbsp;1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;n&amp;nbsp;in&amp;nbsp;nums: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;=&amp;nbsp;result&amp;nbsp;*&amp;nbsp;n &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;result &lt;br /&gt;&lt;br /&gt;print(calc(&quot;plus&quot;,&amp;nbsp;2,&amp;nbsp;4,&amp;nbsp;6))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;2+4+6&amp;nbsp;=&amp;nbsp;12 &lt;br /&gt;print(calc(&quot;times&quot;,&amp;nbsp;2,&amp;nbsp;4,&amp;nbsp;6))&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;2&amp;times;4&amp;times;6&amp;nbsp;=&amp;nbsp;48 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;키워드 매개변수 활용하기&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;`**`를&amp;nbsp;사용하면&amp;nbsp;키워드&amp;nbsp;형태의&amp;nbsp;매개변수들을&amp;nbsp;딕셔너리로&amp;nbsp;받을&amp;nbsp;수&amp;nbsp;있습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;print_student_info(**info):&amp;nbsp;&amp;nbsp;#&amp;nbsp;학생&amp;nbsp;정보를&amp;nbsp;받는&amp;nbsp;함수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(&quot;===&amp;nbsp;학생&amp;nbsp;정보&amp;nbsp;===&quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;key,&amp;nbsp;value&amp;nbsp;in&amp;nbsp;info.items():&amp;nbsp;&amp;nbsp;#&amp;nbsp;딕셔너리의&amp;nbsp;모든&amp;nbsp;항목&amp;nbsp;출력 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(f&quot;{key}:&amp;nbsp;{value}&quot;) &lt;br /&gt;&lt;br /&gt;&amp;lt;다양한 정보를 키워드로 전달&amp;gt;&lt;br /&gt;print_student_info(name=&quot;이영희&quot;,&amp;nbsp;age=11,&amp;nbsp;grade=5,&amp;nbsp;hobby=&quot;그림그리기&quot;) &lt;br /&gt;#&amp;nbsp;===&amp;nbsp;학생&amp;nbsp;정보&amp;nbsp;=== &lt;br /&gt;#&amp;nbsp;name:&amp;nbsp;이영희 &lt;br /&gt;#&amp;nbsp;age:&amp;nbsp;11 &lt;br /&gt;#&amp;nbsp;grade:&amp;nbsp;5 &lt;br /&gt;#&amp;nbsp;hobby:&amp;nbsp;그림그리기 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;함수는 항상 하나의 값만 반환한다&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;함수에서&amp;nbsp;여러&amp;nbsp;개의&amp;nbsp;값을&amp;nbsp;반환하는&amp;nbsp;것처럼&amp;nbsp;보여도,&amp;nbsp;실제로는&amp;nbsp;하나의&amp;nbsp;튜플로&amp;nbsp;묶여서&amp;nbsp;반환됩니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;get_math_results(a,&amp;nbsp;b):&amp;nbsp;&amp;nbsp;#&amp;nbsp;두&amp;nbsp;수의&amp;nbsp;사칙연산&amp;nbsp;결과를&amp;nbsp;모두&amp;nbsp;구하는&amp;nbsp;함수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;plus_result&amp;nbsp;=&amp;nbsp;a&amp;nbsp;+&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;더하기 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;minus_result&amp;nbsp;=&amp;nbsp;a&amp;nbsp;-&amp;nbsp;b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;빼기 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;plus_result,&amp;nbsp;minus_result&amp;nbsp;&amp;nbsp;#&amp;nbsp;두&amp;nbsp;개&amp;nbsp;값을&amp;nbsp;반환하는&amp;nbsp;것처럼&amp;nbsp;보임 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;하나의&amp;nbsp;변수로&amp;nbsp;받으면&amp;nbsp;튜플이&amp;nbsp;됨 &lt;br /&gt;results&amp;nbsp;=&amp;nbsp;get_math_results(8,&amp;nbsp;3) &lt;br /&gt;print(results)&amp;nbsp;&amp;nbsp;#&amp;nbsp;(11,&amp;nbsp;5)&amp;nbsp;출력&amp;nbsp;-&amp;nbsp;튜플&amp;nbsp;형태 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;두&amp;nbsp;개의&amp;nbsp;변수로&amp;nbsp;받으면&amp;nbsp;각각&amp;nbsp;분리됨 &lt;br /&gt;add_result,&amp;nbsp;sub_result&amp;nbsp;=&amp;nbsp;get_math_results(8,&amp;nbsp;3) &lt;br /&gt;print(add_result)&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;11&amp;nbsp;출력 &lt;br /&gt;print(sub_result)&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;5&amp;nbsp;출력 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;중요한&amp;nbsp;점은&amp;nbsp;함수에서&amp;nbsp;return을&amp;nbsp;만나면&amp;nbsp;그&amp;nbsp;즉시&amp;nbsp;함수가&amp;nbsp;끝난다는&amp;nbsp;것입니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;test_return(): &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&quot;첫&amp;nbsp;번째&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&quot;두&amp;nbsp;번째&quot;&amp;nbsp;&amp;nbsp;#&amp;nbsp;이&amp;nbsp;줄은&amp;nbsp;실행되지&amp;nbsp;않음 &lt;br /&gt;&lt;br /&gt;result&amp;nbsp;=&amp;nbsp;test_return() &lt;br /&gt;print(result)&amp;nbsp;&amp;nbsp;#&amp;nbsp;&quot;첫&amp;nbsp;번째&quot;만&amp;nbsp;출력됨 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;특별한 return 사용법&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;특정&amp;nbsp;조건에서&amp;nbsp;함수를&amp;nbsp;즉시&amp;nbsp;종료하고&amp;nbsp;싶을&amp;nbsp;때&amp;nbsp;return을&amp;nbsp;단독으로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;check_password(password):&amp;nbsp;&amp;nbsp;#&amp;nbsp;비밀번호&amp;nbsp;확인&amp;nbsp;함수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;password&amp;nbsp;==&amp;nbsp;&quot;1234&quot;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;잘못된&amp;nbsp;비밀번호인&amp;nbsp;경우 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;함수를&amp;nbsp;즉시&amp;nbsp;종료 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(&quot;비밀번호가&amp;nbsp;맞습니다!&quot;)&amp;nbsp;&amp;nbsp;#&amp;nbsp;올바른&amp;nbsp;경우에만&amp;nbsp;실행 &lt;br /&gt;&lt;br /&gt;check_password(&quot;hello&quot;)&amp;nbsp;&amp;nbsp;#&amp;nbsp;아무것도&amp;nbsp;출력되지&amp;nbsp;않음 &lt;br /&gt;check_password(&quot;5678&quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;&quot;비밀번호가&amp;nbsp;맞습니다!&quot;&amp;nbsp;출력 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;매개변수에 기본값 설정하기&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;함수의&amp;nbsp;매개변수에&amp;nbsp;미리&amp;nbsp;기본값을&amp;nbsp;설정해&amp;nbsp;둘&amp;nbsp;수&amp;nbsp;있습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;def&amp;nbsp;introduce_pet(name,&amp;nbsp;age,&amp;nbsp;animal=&quot;강아지&quot;):&amp;nbsp;&amp;nbsp;#&amp;nbsp;animal의&amp;nbsp;기본값은&amp;nbsp;&quot;강아지&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(f&quot;우리&amp;nbsp;{animal}의&amp;nbsp;이름은&amp;nbsp;{name}이고,&amp;nbsp;{age}살입니다.&quot;) &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;기본값&amp;nbsp;사용&amp;nbsp;(강아지로&amp;nbsp;자동&amp;nbsp;설정됨) &lt;br /&gt;introduce_pet(&quot;멍멍이&quot;,&amp;nbsp;3)&amp;nbsp;&amp;nbsp;#&amp;nbsp;&quot;우리&amp;nbsp;강아지의&amp;nbsp;이름은&amp;nbsp;멍멍이이고,&amp;nbsp;3살입니다.&quot; &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;기본값을&amp;nbsp;다른&amp;nbsp;값으로&amp;nbsp;변경 &lt;br /&gt;introduce_pet(&quot;야옹이&quot;,&amp;nbsp;2,&amp;nbsp;&quot;고양이&quot;)&amp;nbsp;&amp;nbsp;#&amp;nbsp;&quot;우리&amp;nbsp;고양이의&amp;nbsp;이름은&amp;nbsp;야옹이이고,&amp;nbsp;2살입니다.&quot; &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;주의할&amp;nbsp;점은&amp;nbsp;기본값이&amp;nbsp;있는&amp;nbsp;매개변수는&amp;nbsp;항상&amp;nbsp;맨&amp;nbsp;뒤에&amp;nbsp;위치해야&amp;nbsp;한다는&amp;nbsp;것입니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;#&amp;nbsp;올바른&amp;nbsp;예 &lt;br /&gt;def&amp;nbsp;good_function(name,&amp;nbsp;age,&amp;nbsp;hobby=&quot;독서&quot;): &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pass &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;잘못된&amp;nbsp;예&amp;nbsp;-&amp;nbsp;오류&amp;nbsp;발생! &lt;br /&gt;def&amp;nbsp;bad_function(name,&amp;nbsp;hobby=&quot;독서&quot;,&amp;nbsp;age):&amp;nbsp;&amp;nbsp;#&amp;nbsp;age가&amp;nbsp;기본값&amp;nbsp;뒤에&amp;nbsp;오면&amp;nbsp;안됨 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pass &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&amp;lt;변수의 유효 범위 이해하기&amp;gt;&lt;br /&gt;&lt;br /&gt;함수&amp;nbsp;안에서&amp;nbsp;사용하는&amp;nbsp;변수와&amp;nbsp;함수&amp;nbsp;밖의&amp;nbsp;변수는&amp;nbsp;서로&amp;nbsp;다릅니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;score&amp;nbsp;=&amp;nbsp;80&amp;nbsp;&amp;nbsp;#&amp;nbsp;함수&amp;nbsp;밖의&amp;nbsp;변수 &lt;br /&gt;&lt;br /&gt;def&amp;nbsp;change_score(score):&amp;nbsp;&amp;nbsp;#&amp;nbsp;매개변수&amp;nbsp;score는&amp;nbsp;함수&amp;nbsp;안에서만&amp;nbsp;사용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;score&amp;nbsp;=&amp;nbsp;score&amp;nbsp;+&amp;nbsp;10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;함수&amp;nbsp;안의&amp;nbsp;score를&amp;nbsp;변경 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print(f&quot;함수&amp;nbsp;안에서&amp;nbsp;score:&amp;nbsp;{score}&quot;) &lt;br /&gt;&lt;br /&gt;change_score(score)&amp;nbsp;&amp;nbsp;#&amp;nbsp;&quot;함수&amp;nbsp;안에서&amp;nbsp;score:&amp;nbsp;90&quot;&amp;nbsp;출력 &lt;br /&gt;print(f&quot;함수&amp;nbsp;밖에서&amp;nbsp;score:&amp;nbsp;{score}&quot;)&amp;nbsp;&amp;nbsp;#&amp;nbsp;&quot;함수&amp;nbsp;밖에서&amp;nbsp;score:&amp;nbsp;80&quot;&amp;nbsp;출력 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;함수&amp;nbsp;밖의&amp;nbsp;변수를&amp;nbsp;변경하고&amp;nbsp;싶다면&amp;nbsp;return을&amp;nbsp;사용합니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;score&amp;nbsp;=&amp;nbsp;80 &lt;br /&gt;&lt;br /&gt;def&amp;nbsp;increase_score(current_score):&amp;nbsp;&amp;nbsp;#&amp;nbsp;점수를&amp;nbsp;증가시키는&amp;nbsp;함수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new_score&amp;nbsp;=&amp;nbsp;current_score&amp;nbsp;+&amp;nbsp;10&amp;nbsp;&amp;nbsp;#&amp;nbsp;10점&amp;nbsp;증가 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;new_score&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;새로운&amp;nbsp;점수&amp;nbsp;반환 &lt;br /&gt;&lt;br /&gt;score&amp;nbsp;=&amp;nbsp;increase_score(score)&amp;nbsp;&amp;nbsp;#&amp;nbsp;반환값을&amp;nbsp;다시&amp;nbsp;score에&amp;nbsp;저장 &lt;br /&gt;print(score)&amp;nbsp;&amp;nbsp;#&amp;nbsp;90&amp;nbsp;출력 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;람다 함수 - 간단한 함수 만들기&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;간단한&amp;nbsp;함수는&amp;nbsp;lambda를&amp;nbsp;사용해서&amp;nbsp;한&amp;nbsp;줄로&amp;nbsp;만들&amp;nbsp;수&amp;nbsp;있습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;#&amp;nbsp;일반적인&amp;nbsp;함수 &lt;br /&gt;def&amp;nbsp;double(x): &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;x&amp;nbsp;*&amp;nbsp;2 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;lambda를&amp;nbsp;사용한&amp;nbsp;함수&amp;nbsp;(같은&amp;nbsp;기능) &lt;br /&gt;double_lambda&amp;nbsp;=&amp;nbsp;lambda&amp;nbsp;x:&amp;nbsp;x&amp;nbsp;*&amp;nbsp;2 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;두&amp;nbsp;함수&amp;nbsp;모두&amp;nbsp;같은&amp;nbsp;결과 &lt;br /&gt;print(double(5))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;10&amp;nbsp;출력 &lt;br /&gt;print(double_lambda(5))&amp;nbsp;#&amp;nbsp;10&amp;nbsp;출력 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;두&amp;nbsp;수를&amp;nbsp;더하는&amp;nbsp;lambda&amp;nbsp;함수 &lt;br /&gt;add_lambda&amp;nbsp;=&amp;nbsp;lambda&amp;nbsp;a,&amp;nbsp;b:&amp;nbsp;a&amp;nbsp;+&amp;nbsp;b &lt;br /&gt;print(add_lambda(3,&amp;nbsp;7))&amp;nbsp;&amp;nbsp;#&amp;nbsp;10&amp;nbsp;출력 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;lambda는&amp;nbsp;주로&amp;nbsp;간단한&amp;nbsp;계산이나&amp;nbsp;정렬&amp;nbsp;등에서&amp;nbsp;많이&amp;nbsp;사용됩니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;실습 예제들&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;마지막으로&amp;nbsp;다양한&amp;nbsp;함수&amp;nbsp;예제들을&amp;nbsp;살펴보겠습니다: &lt;br /&gt;&lt;br /&gt;```python &lt;br /&gt;&lt;b&gt;#&amp;nbsp;1.&amp;nbsp;학생&amp;nbsp;성적&amp;nbsp;관리&amp;nbsp;함수&lt;/b&gt; &lt;br /&gt;def&amp;nbsp;calculate_grade(korean,&amp;nbsp;english,&amp;nbsp;math): &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;&quot;&quot;세&amp;nbsp;과목&amp;nbsp;점수를&amp;nbsp;받아서&amp;nbsp;평균과&amp;nbsp;등급을&amp;nbsp;계산하는&amp;nbsp;함수&quot;&quot;&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;average&amp;nbsp;=&amp;nbsp;(korean&amp;nbsp;+&amp;nbsp;english&amp;nbsp;+&amp;nbsp;math)&amp;nbsp;/&amp;nbsp;3&amp;nbsp;&amp;nbsp;#&amp;nbsp;평균&amp;nbsp;계산 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;average&amp;nbsp;&amp;gt;=&amp;nbsp;90:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;평균에&amp;nbsp;따른&amp;nbsp;등급&amp;nbsp;결정 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grade&amp;nbsp;=&amp;nbsp;&quot;A&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;average&amp;nbsp;&amp;gt;=&amp;nbsp;80: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grade&amp;nbsp;=&amp;nbsp;&quot;B&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;average&amp;nbsp;&amp;gt;=&amp;nbsp;70: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grade&amp;nbsp;=&amp;nbsp;&quot;C&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grade&amp;nbsp;=&amp;nbsp;&quot;D&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;average,&amp;nbsp;grade&amp;nbsp;&amp;nbsp;#&amp;nbsp;평균과&amp;nbsp;등급을&amp;nbsp;함께&amp;nbsp;반환 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;함수&amp;nbsp;사용 &lt;br /&gt;avg,&amp;nbsp;grade&amp;nbsp;=&amp;nbsp;calculate_grade(85,&amp;nbsp;92,&amp;nbsp;78) &lt;br /&gt;print(f&quot;평균:&amp;nbsp;{avg:.1f}점,&amp;nbsp;등급:&amp;nbsp;{grade}&quot;)&amp;nbsp;&amp;nbsp;#&amp;nbsp;평균:&amp;nbsp;85.0점,&amp;nbsp;등급:&amp;nbsp;B &lt;br /&gt;&lt;br /&gt;&lt;b&gt;#&amp;nbsp;2.&amp;nbsp;간단한&amp;nbsp;계산기&amp;nbsp;함수&lt;/b&gt; &lt;br /&gt;def&amp;nbsp;simple_calculator(num1,&amp;nbsp;num2,&amp;nbsp;operation): &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;&quot;&quot;두&amp;nbsp;수와&amp;nbsp;연산자를&amp;nbsp;받아서&amp;nbsp;계산하는&amp;nbsp;함수&quot;&quot;&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;operation&amp;nbsp;==&amp;nbsp;&quot;+&quot;: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;num1&amp;nbsp;+&amp;nbsp;num2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;operation&amp;nbsp;==&amp;nbsp;&quot;-&quot;: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;num1&amp;nbsp;-&amp;nbsp;num2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;operation&amp;nbsp;==&amp;nbsp;&quot;*&quot;: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;num1&amp;nbsp;*&amp;nbsp;num2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elif&amp;nbsp;operation&amp;nbsp;==&amp;nbsp;&quot;/&quot;: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;num2&amp;nbsp;!=&amp;nbsp;0:&amp;nbsp;&amp;nbsp;#&amp;nbsp;0으로&amp;nbsp;나누기&amp;nbsp;방지 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;num1&amp;nbsp;/&amp;nbsp;num2 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&quot;0으로&amp;nbsp;나눌&amp;nbsp;수&amp;nbsp;없습니다!&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&quot;지원하지&amp;nbsp;않는&amp;nbsp;연산입니다!&quot; &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;함수&amp;nbsp;사용 &lt;br /&gt;print(simple_calculator(15,&amp;nbsp;3,&amp;nbsp;&quot;+&quot;))&amp;nbsp;&amp;nbsp;#&amp;nbsp;18 &lt;br /&gt;print(simple_calculator(15,&amp;nbsp;3,&amp;nbsp;&quot;/&quot;))&amp;nbsp;&amp;nbsp;#&amp;nbsp;5.0 &lt;br /&gt;print(simple_calculator(15,&amp;nbsp;0,&amp;nbsp;&quot;/&quot;))&amp;nbsp;&amp;nbsp;#&amp;nbsp;0으로&amp;nbsp;나눌&amp;nbsp;수&amp;nbsp;없습니다! &lt;br /&gt;&lt;br /&gt;&lt;b&gt;#&amp;nbsp;3.&amp;nbsp;리스트의&amp;nbsp;최대값,&amp;nbsp;최소값&amp;nbsp;찾기&amp;nbsp;함수&lt;/b&gt; &lt;br /&gt;def&amp;nbsp;find_max_min(*numbers): &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;&quot;&quot;여러&amp;nbsp;개의&amp;nbsp;숫자&amp;nbsp;중&amp;nbsp;최대값과&amp;nbsp;최소값을&amp;nbsp;찾는&amp;nbsp;함수&quot;&quot;&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;len(numbers)&amp;nbsp;==&amp;nbsp;0:&amp;nbsp;&amp;nbsp;#&amp;nbsp;숫자가&amp;nbsp;하나도&amp;nbsp;없는&amp;nbsp;경우 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&quot;숫자를&amp;nbsp;입력해주세요!&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max_num&amp;nbsp;=&amp;nbsp;numbers[0]&amp;nbsp;&amp;nbsp;#&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;숫자를&amp;nbsp;최대값으로&amp;nbsp;설정 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_num&amp;nbsp;=&amp;nbsp;numbers[0]&amp;nbsp;&amp;nbsp;#&amp;nbsp;첫&amp;nbsp;번째&amp;nbsp;숫자를&amp;nbsp;최소값으로&amp;nbsp;설정 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;num&amp;nbsp;in&amp;nbsp;numbers:&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;모든&amp;nbsp;숫자를&amp;nbsp;확인 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;num&amp;nbsp;&amp;gt;&amp;nbsp;max_num:&amp;nbsp;#&amp;nbsp;현재&amp;nbsp;숫자가&amp;nbsp;최대값보다&amp;nbsp;크면 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;max_num&amp;nbsp;=&amp;nbsp;num&amp;nbsp;#&amp;nbsp;최대값&amp;nbsp;업데이트 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;num&amp;nbsp;&amp;lt;&amp;nbsp;min_num:&amp;nbsp;#&amp;nbsp;현재&amp;nbsp;숫자가&amp;nbsp;최소값보다&amp;nbsp;작으면 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;min_num&amp;nbsp;=&amp;nbsp;num&amp;nbsp;#&amp;nbsp;최소값&amp;nbsp;업데이트 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;max_num,&amp;nbsp;min_num&amp;nbsp;&amp;nbsp;#&amp;nbsp;최대값과&amp;nbsp;최소값&amp;nbsp;반환 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;함수&amp;nbsp;사용 &lt;br /&gt;max_val,&amp;nbsp;min_val&amp;nbsp;=&amp;nbsp;find_max_min(5,&amp;nbsp;2,&amp;nbsp;9,&amp;nbsp;1,&amp;nbsp;7,&amp;nbsp;3) &lt;br /&gt;print(f&quot;최대값:&amp;nbsp;{max_val},&amp;nbsp;최소값:&amp;nbsp;{min_val}&quot;)&amp;nbsp;&amp;nbsp;#&amp;nbsp;최대값:&amp;nbsp;9,&amp;nbsp;최소값:&amp;nbsp;1 &lt;br /&gt;``` &lt;br /&gt;&lt;br /&gt;이제&amp;nbsp;파이썬&amp;nbsp;함수의&amp;nbsp;기본적인&amp;nbsp;개념부터&amp;nbsp;고급&amp;nbsp;활용법까지&amp;nbsp;모두&amp;nbsp;살펴보았습니다.&amp;nbsp;함수는&amp;nbsp;프로그래밍에서&amp;nbsp;매우&amp;nbsp;중요한&amp;nbsp;개념이므로,&amp;nbsp;다양한&amp;nbsp;예제를&amp;nbsp;만들어보면서&amp;nbsp;충분히&amp;nbsp;연습해보시기&amp;nbsp;바랍니다.&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/17</guid>
      <comments>https://umjam33.tistory.com/entry/12-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%95%A8%EC%88%98-%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EC%9D%91%EC%9A%A9%EA%B9%8C%EC%A7%80-%ED%95%9C%EB%B2%88%EC%97%90-%EB%81%9D%EB%82%B4%EA%B8%B0#entry17comment</comments>
      <pubDate>Thu, 29 May 2025 02:10:11 +0900</pubDate>
    </item>
    <item>
      <title>11. 파이썬 반복문 완전 정복 - for문 기초부터 응용까지</title>
      <link>https://umjam33.tistory.com/entry/11-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B0%98%EB%B3%B5%EB%AC%B8-%EC%99%84%EC%A0%84-%EC%A0%95%EB%B3%B5-for%EB%AC%B8-%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EC%9D%91%EC%9A%A9%EA%B9%8C%EC%A7%80</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-for문-기초-고급.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dE584v/btsOf8uC9Dl/vEdUPWkwWu97jgpHLsVJA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dE584v/btsOf8uC9Dl/vEdUPWkwWu97jgpHLsVJA1/img.png&quot; data-alt=&quot;파이썬-for문-기초-고급&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dE584v/btsOf8uC9Dl/vEdUPWkwWu97jgpHLsVJA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdE584v%2FbtsOf8uC9Dl%2FvEdUPWkwWu97jgpHLsVJA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-for문-기초-고급.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-for문-기초-고급&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;반복문이란 무엇인가요?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문은 같은 작업을 여러 번 수행해야 할 때 사용하는 프로그래밍 도구입니다. 파이썬에서 가장 많이 사용하는 반복문이 바로 for문입니다. for문은 코드를 간결하고 읽기 쉽게 만들어 주는 파이썬의 대표적인 특징 중 하나입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;for문의 기본 문법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for문의 기본 구조는 다음과 같습니다:&lt;/p&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;for 변수명 in 데이터_모음:
    실행할_코드1
    실행할_코드2
    ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 '데이터_모음'은 리스트, 튜플, 문자열 등이 될 수 있습니다. 데이터 모음의 각 요소가 순서대로 변수에 저장되면서 아래의 코드들이 실행됩니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본적인 for문 예제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 리스트와 함께 사용하기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 과일 이름들을 담은 리스트
fruits = ['사과', '바나나', '딸기']

# 각 과일을 하나씩 출력하기
for fruit in fruits:
    print(f&quot;맛있는 {fruit}!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;erlang-repl&quot;&gt;&lt;code&gt;맛있는 사과!
맛있는 바나나!
맛있는 딸기!
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드에서는 fruits 리스트의 각 요소('사과', '바나나', '딸기')가 순서대로 fruit 변수에 저장되면서 print문이 실행됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 문자열과 함께 사용하기&lt;/h4&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;# 문자열의 각 글자를 하나씩 출력
word = &quot;안녕하세요&quot;

for letter in word:
    print(f&quot;글자: {letter}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;글자: 안
글자: 녕
글자: 하
글자: 세
글자: 요
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 튜플과 함께 사용하기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 좌표를 나타내는 튜플들의 리스트
coordinates = [(1, 2), (3, 4), (5, 6)]

# 각 좌표의 x, y 값을 분리해서 처리
for x, y in coordinates:
    print(f&quot;x좌표: {x}, y좌표: {y}, 합계: {x + y}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;x좌표: 1, y좌표: 2, 합계: 3
x좌표: 3, y좌표: 4, 합계: 7
x좌표: 5, y좌표: 6, 합계: 11
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;for문의 실용적인 활용 예제&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;학생 성적 처리 프로그램&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 학생들의 시험 점수
scores = [85, 45, 92, 38, 76]

# 각 학생의 합격/불합격 판정 (60점 이상 합격)
student_number = 0  # 학생 번호를 매기기 위한 변수

for score in scores:
    student_number = student_number + 1  # 학생 번호 증가
    
    if score &amp;gt;= 60:  # 60점 이상이면 합격
        print(f&quot;{student_number}번 학생: {score}점 - 합격!&quot;)
    else:  # 60점 미만이면 불합격
        print(f&quot;{student_number}번 학생: {score}점 - 불합격&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1번 학생: 85점 - 합격!
2번 학생: 45점 - 불합격
3번 학생: 92점 - 합격!
4번 학생: 38점 - 불합격
5번 학생: 76점 - 합격!
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;continue문과 함께 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;continue문을 사용하면 특정 조건에서 아래 코드를 건너뛰고 다음 반복으로 넘어갈 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;# 합격한 학생들에게만 축하 메시지 보내기
scores = [85, 45, 92, 38, 76]
student_number = 0

for score in scores:
    student_number = student_number + 1
    
    if score &amp;lt; 60:  # 불합격인 경우
        continue  # 아래 코드를 실행하지 않고 다음 반복으로
    
    # 합격한 학생들만 여기 코드가 실행됨
    print(f&quot;{student_number}번 학생, 축하합니다! {score}점으로 합격하셨습니다.&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1번 학생, 축하합니다! 85점으로 합격하셨습니다.
3번 학생, 축하합니다! 92점으로 합격하셨습니다.
5번 학생, 축하합니다! 76점으로 합격하셨습니다.
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;range 함수와 함께 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;range 함수는 숫자의 범위를 만들어주는 함수로, for문과 함께 자주 사용됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본 range 사용법&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 0부터 4까지 출력
for i in range(5):
    print(f&quot;숫자: {i}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;숫자: 0
숫자: 1
숫자: 2
숫자: 3
숫자: 4
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;시작과 끝 숫자 지정하기&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 1부터 10까지 출력
for i in range(1, 11):
    print(f&quot;숫자: {i}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;숫자 더하기 예제&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 1부터 100까지의 합 계산하기
total = 0  # 합계를 저장할 변수

for i in range(1, 101):  # 1부터 100까지
    total = total + i  # 각 숫자를 total에 더하기

print(f&quot;1부터 100까지의 합: {total}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1부터 100까지의 합: 5050
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;range와 리스트 인덱스 활용하기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 과일 리스트와 인덱스 번호 함께 출력
fruits = ['사과', '바나나', '딸기', '포도', '오렌지']

for i in range(len(fruits)):  # len(fruits)는 리스트의 길이(5)
    print(f&quot;{i+1}번째 과일: {fruits[i]}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1번째 과일: 사과
2번째 과일: 바나나
3번째 과일: 딸기
4번째 과일: 포도
5번째 과일: 오렌지
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;중첩 for문 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for문 안에 또 다른 for문을 넣어서 사용할 수 있습니다. 이를 중첩 for문이라고 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;구구단 만들기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 2단부터 9단까지 구구단 출력
for dan in range(2, 10):  # 2부터 9까지 (단)
    print(f&quot;\n{dan}단:&quot;)  # 단 제목 출력
    
    for num in range(1, 10):  # 1부터 9까지 (곱할 수)
        result = dan * num  # 계산 결과
        print(f&quot;{dan} &amp;times; {num} = {result}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2단:
2 &amp;times; 1 = 2
2 &amp;times; 2 = 4
2 &amp;times; 3 = 6
...

3단:
3 &amp;times; 1 = 3
3 &amp;times; 2 = 6
3 &amp;times; 3 = 9
...
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;별 찍기 패턴&lt;/h4&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;# 삼각형 별 패턴 만들기
for i in range(1, 6):  # 1부터 5까지 (줄 수)
    for j in range(i):  # 각 줄마다 i개의 별
        print(&quot;*&quot;, end=&quot;&quot;)  # 줄바꿈 없이 별 출력
    print()  # 한 줄 완성 후 줄바꿈
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;gams&quot;&gt;&lt;code&gt;*
**
***
****
*****
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트 컴프리헨션 - 간단한 리스트 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트 컴프리헨션은 for문을 사용해서 새로운 리스트를 만드는 간단한 방법입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본 사용법&lt;/h4&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 1부터 10까지 숫자의 제곱 리스트 만들기

# 일반적인 방법
squares = []
for i in range(1, 11):
    squares.append(i * i)
print(&quot;일반 방법:&quot;, squares)

# 리스트 컴프리헨션 방법
squares_comp = [i * i for i in range(1, 11)]
print(&quot;컴프리헨션:&quot;, squares_comp)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;일반 방법: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
컴프리헨션: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;조건을 포함한 리스트 컴프리헨션&lt;/h4&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;# 1부터 20까지 숫자 중 짝수만 골라서 2배 하기
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 짝수만 골라서 2배 하기
even_doubled = [num * 2 for num in numbers if num % 2 == 0]
print(&quot;짝수를 2배한 결과:&quot;, even_doubled)

# 홀수만 골라서 제곱하기
odd_squared = [num * num for num in numbers if num % 2 == 1]
print(&quot;홀수를 제곱한 결과:&quot;, odd_squared)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;짝수를 2배한 결과: [4, 8, 12, 16, 20]
홀수를 제곱한 결과: [1, 9, 25, 49, 81]
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실용적인 예제들&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 단어 길이 세기&lt;/h4&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;# 문장에서 각 단어의 길이 계산
sentence = [&quot;파이썬&quot;, &quot;프로그래밍&quot;, &quot;재미있어요&quot;, &quot;열심히&quot;, &quot;공부해요&quot;]

for word in sentence:
    length = len(word)  # 단어의 길이 계산
    print(f&quot;'{word}'의 길이: {length}글자&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 쇼핑 목록과 가격 계산&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 쇼핑 목록과 가격 (튜플로 구성)
shopping_list = [
    (&quot;사과&quot;, 3000),
    (&quot;바나나&quot;, 2000),
    (&quot;우유&quot;, 2500),
    (&quot;빵&quot;, 1500)
]

total_price = 0  # 총 가격

print(&quot;=== 쇼핑 목록 ===&quot;)
for item, price in shopping_list:
    print(f&quot;{item}: {price}원&quot;)
    total_price = total_price + price  # 총 가격에 추가

print(f&quot;\n총 가격: {total_price}원&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 숫자 맞추기 게임 점수 계산&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 게임 점수 리스트
game_scores = [450, 320, 780, 290, 650]

print(&quot;=== 게임 결과 ===&quot;)
round_number = 0
high_score = 0  # 최고 점수 저장

for score in game_scores:
    round_number = round_number + 1
    print(f&quot;{round_number}라운드: {score}점&quot;)
    
    # 최고 점수 업데이트
    if score &amp;gt; high_score:
        high_score = score
        best_round = round_number

print(f&quot;\n최고 점수: {high_score}점 ({best_round}라운드)&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자주 하는 실수와 주의사항&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 들여쓰기 주의하기&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 올바른 들여쓰기
for i in range(3):
    print(&quot;안쪽 코드&quot;)
    print(&quot;이것도 안쪽 코드&quot;)
print(&quot;바깥쪽 코드&quot;)

# 잘못된 들여쓰기 - 오류 발생!
# for i in range(3):
# print(&quot;들여쓰기 안 됨&quot;)  # IndentationError 발생
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 변수명 잘 정하기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 좋은 변수명 사용
students = [&quot;김철수&quot;, &quot;이영희&quot;, &quot;박민수&quot;]
for student_name in students:
    print(f&quot;학생: {student_name}&quot;)

# 의미 없는 변수명보다는 명확한 변수명이 좋습니다
for i in students:  # i보다는
    print(f&quot;학생: {i}&quot;)

for name in students:  # name이 더 명확합니다
    print(f&quot;학생: {name}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;마무리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for문은 파이썬에서 가장 자주 사용하는 제어문 중 하나입니다. 리스트, 튜플, 문자열 등 다양한 데이터와 함께 사용할 수 있고, range 함수와 결합하면 더욱 강력한 기능을 만들 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중첩 for문과 리스트 컴프리헨션까지 익히면 복잡한 데이터 처리도 간단하게 할 수 있습니다. 많은 연습을 통해 for문을 자유자재로 사용할 수 있도록 노력해보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 것은 코드를 읽기 쉽게 작성하는 것입니다. 변수명을 명확하게 짓고, 들여쓰기를 정확하게 하며, 필요한 곳에 주석을 달아서 나중에 다시 봐도 이해할 수 있는 코드를 작성하는 습관을 기르시기 바랍니다.&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/16</guid>
      <comments>https://umjam33.tistory.com/entry/11-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B0%98%EB%B3%B5%EB%AC%B8-%EC%99%84%EC%A0%84-%EC%A0%95%EB%B3%B5-for%EB%AC%B8-%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EC%9D%91%EC%9A%A9%EA%B9%8C%EC%A7%80#entry16comment</comments>
      <pubDate>Tue, 27 May 2025 22:27:52 +0900</pubDate>
    </item>
    <item>
      <title>10. 파이썬 반복문 마스터하기: while문 완전 정복</title>
      <link>https://umjam33.tistory.com/entry/10-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B0%98%EB%B3%B5%EB%AC%B8-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0-while%EB%AC%B8-%EC%99%84%EC%A0%84-%EC%A0%95%EB%B3%B5</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-반복문-while문.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG6V2J/btsOfzMYg6t/kn6GHeIWVtNvfngmuPttgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG6V2J/btsOfzMYg6t/kn6GHeIWVtNvfngmuPttgk/img.png&quot; data-alt=&quot;파이썬-반복문-while문&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG6V2J/btsOfzMYg6t/kn6GHeIWVtNvfngmuPttgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG6V2J%2FbtsOfzMYg6t%2Fkn6GHeIWVtNvfngmuPttgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-반복문-while문.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-반복문-while문&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래밍에서 같은 작업을 여러 번 반복해야 할 때가 있습니다. 예를 들어, 1부터 100까지 숫자를 출력하거나, 사용자가 올바른 값을 입력할 때까지 계속 입력을 받는 경우 말이죠. 이런 상황에서 while문이 매우 유용합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;while문이란 무엇인가요?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문은 특정 조건이 참인 동안 코드를 반복 실행하는 제어문입니다. 마치 &quot;~하는 동안 계속해&quot;라는 명령어와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;while문의 기본 구조&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;while 조건:
    실행할_코드1
    실행할_코드2
    실행할_코드3
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건이 참(True)인 동안 들여쓰기된 코드들이 계속 반복됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 예제: 카운트 다운&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 카운트 다운 프로그램을 만들어보겠습니다.&lt;/p&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;# 5부터 1까지 카운트 다운
count = 5  # 시작 숫자 설정

while count &amp;gt; 0:  # count가 0보다 큰 동안 반복
    print(f&quot;{count}초 남았습니다!&quot;)  # 현재 카운트 출력
    count = count - 1  # count를 1씩 감소
    
print(&quot;시간 종료!&quot;)  # 반복이 끝나면 실행
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실행 결과:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;erlang-repl&quot;&gt;&lt;code&gt;5초 남았습니다!
4초 남았습니다!
3초 남았습니다!
2초 남았습니다!
1초 남았습니다!
시간 종료!
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실전 예제: 풍선 터뜨리기 게임&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이들이 좋아할 만한 풍선 터뜨리기 게임을 만들어보겠습니다.&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;# 풍선 터뜨리기 게임
balloon_count = 0  # 터뜨린 풍선 개수

while balloon_count &amp;lt; 7:  # 7개 미만일 동안 반복
    balloon_count = balloon_count + 1  # 풍선 하나 터뜨림
    print(f&quot;풍선을 {balloon_count}개 터뜨렸어요! 펑!&quot;)
    
    if balloon_count == 7:  # 7개를 모두 터뜨렸을 때
        print(&quot;모든 풍선을 터뜨렸어요! 축하합니다!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실행 결과:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;erlang-repl&quot;&gt;&lt;code&gt;풍선을 1개 터뜨렸어요! 펑!
풍선을 2개 터뜨렸어요! 펑!
풍선을 3개 터뜨렸어요! 펑!
풍선을 4개 터뜨렸어요! 펑!
풍선을 5개 터뜨렸어요! 펑!
풍선을 6개 터뜨렸어요! 펑!
풍선을 7개 터뜨렸어요! 펑!
모든 풍선을 터뜨렸어요! 축하합니다!
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자 입력받기: 간단한 메뉴 시스템&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 간단한 애완동물 관리 메뉴
menu = &quot;&quot;&quot;
1. 밥주기
2. 산책하기  
3. 놀아주기
4. 끝내기

번호를 선택하세요: &quot;&quot;&quot;

choice = 0  # 선택 번호 초기화

while choice != 4:  # 4번을 선택하지 않는 동안 반복
    print(menu)  # 메뉴 출력
    choice = int(input())  # 사용자 입력받기
    
    if choice == 1:
        print(&quot;애완동물에게 맛있는 밥을 주었어요!&quot;)
    elif choice == 2:
        print(&quot;애완동물과 즐거운 산책을 했어요!&quot;)
    elif choice == 3:
        print(&quot;애완동물과 신나게 놀아주었어요!&quot;)
    elif choice == 4:
        print(&quot;애완동물 관리를 마칩니다. 안녕!&quot;)
    else:
        print(&quot;올바른 번호를 선택해주세요!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;break문: 반복문 탈출하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때로는 특정 조건에서 반복문을 즉시 중단해야 할 때가 있습니다. 이때 break문을 사용합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 과자 자판기 시뮬레이션
snack_count = 8  # 과자 개수
money = 500  # 가진 돈

while money &amp;gt; 0:  # 돈이 있는 동안 반복
    print(&quot;과자를 하나 샀어요! 맛있어요!&quot;)
    snack_count = snack_count - 1  # 과자 하나 감소
    money = money - 100  # 돈 100원 감소
    print(f&quot;남은 과자: {snack_count}개, 남은 돈: {money}원&quot;)
    
    if snack_count == 0:  # 과자가 다 떨어지면
        print(&quot;과자가 모두 떨어졌어요! 판매를 멈춥니다.&quot;)
        break  # 반복문 즉시 종료
        
print(&quot;자판기 이용이 끝났습니다!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실제 자판기 프로그램&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 음료수 자판기 프로그램
drink_count = 5  # 음료수 개수

while True:  # 무한 반복
    print(f&quot;\n=== 음료수 자판기 ===&quot;)
    print(f&quot;남은 음료수: {drink_count}개&quot;)
    money = int(input(&quot;돈을 넣어주세요 (200원, 0을 입력하면 종료): &quot;))
    
    if money == 0:  # 0을 입력하면 종료
        print(&quot;이용해주셔서 감사합니다!&quot;)
        break
    elif money == 200:  # 정확한 금액
        print(&quot;시원한 음료수를 드립니다!&quot;)
        drink_count = drink_count - 1
    elif money &amp;gt; 200:  # 많이 넣었을 때
        change = money - 200  # 거스름돈 계산
        print(f&quot;거스름돈 {change}원과 음료수를 드립니다!&quot;)
        drink_count = drink_count - 1
    else:  # 돈이 부족할 때
        print(&quot;돈이 부족해요. 돈을 돌려드립니다.&quot;)
        continue  # 다시 처음으로
    
    if drink_count == 0:  # 음료수가 다 떨어지면
        print(&quot;음료수가 모두 떨어졌습니다. 판매를 종료합니다.&quot;)
        break
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;continue문: 반복문의 처음으로 돌아가기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;continue문은 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다.&lt;/p&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;# 1부터 15까지 숫자 중 3의 배수만 출력하기
number = 0

while number &amp;lt; 15:  # 15보다 작은 동안 반복
    number = number + 1  # 숫자 증가
    
    if number % 3 != 0:  # 3의 배수가 아니면
        continue  # 다음 반복으로 건너뛰기
        
    print(f&quot;{number}은 3의 배수입니다!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실행 결과:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;3은 3의 배수입니다!
6은 3의 배수입니다!
9은 3의 배수입니다!
12은 3의 배수입니다!
15은 3의 배수입니다!
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;무한 루프 활용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무한 루프는 프로그램이 계속 실행되어야 할 때 사용합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 간단한 계산기 프로그램
print(&quot;간단한 계산기입니다!&quot;)
print(&quot;종료하기: quit 입력&quot;)

while True:  # 무한 반복
    print(&quot;\n--- 새로운 계산 ---&quot;)
    command = input(&quot;계산을 입력하세요 (예: 5 + 3): &quot;)
    
    if command.lower() == 'quit':  # quit 입력시 종료
        print(&quot;계산기를 종료합니다. 안녕히가세요!&quot;)
        break
    
    try:  # 오류 처리
        result = eval(command)  # 계산 실행
        print(f&quot;결과: {result}&quot;)
    except:  # 오류가 발생하면
        print(&quot;올바른 계산식을 입력해주세요!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;중첩 while문: 구구단 만들기&lt;/h3&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;# 2단부터 5단까지 구구단 출력
dan = 2  # 시작 단

while dan &amp;lt;= 5:  # 5단까지 반복
    print(f&quot;\n=== {dan}단 ===&quot;)
    
    num = 1  # 곱할 숫자 초기화
    while num &amp;lt;= 9:  # 9까지 반복
        result = dan * num  # 곱셈 계산
        print(f&quot;{dan} &amp;times; {num} = {result}&quot;)
        num = num + 1  # 다음 숫자
    
    dan = dan + 1  # 다음 단
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실용적인 예제: 숫자 맞추기 게임&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 숫자 맞추기 게임
import random  # 랜덤 숫자 생성을 위한 모듈

secret_number = random.randint(1, 20)  # 1~20 사이 랜덤 숫자
attempts = 0  # 시도 횟수
max_attempts = 5  # 최대 시도 횟수

print(&quot;숫자 맞추기 게임!&quot;)
print(f&quot;1부터 20 사이의 숫자를 맞춰보세요! (기회: {max_attempts}번)&quot;)

while attempts &amp;lt; max_attempts:  # 최대 시도 횟수까지
    attempts = attempts + 1  # 시도 횟수 증가
    
    guess = int(input(f&quot;\n{attempts}번째 시도: &quot;))
    
    if guess == secret_number:  # 정답을 맞췄을 때
        print(f&quot;축하합니다! {attempts}번만에 맞추셨어요!&quot;)
        print(f&quot;정답은 {secret_number}이었습니다!&quot;)
        break
    elif guess &amp;lt; secret_number:  # 추측이 작을 때
        print(&quot;더 큰 숫자예요!&quot;)
    else:  # 추측이 클 때
        print(&quot;더 작은 숫자예요!&quot;)
    
    remaining = max_attempts - attempts  # 남은 기회
    if remaining &amp;gt; 0:
        print(f&quot;남은 기회: {remaining}번&quot;)
    
if attempts == max_attempts and guess != secret_number:  # 기회를 다 썼을 때
    print(f&quot;\n아쉽네요! 정답은 {secret_number}이었습니다!&quot;)
    print(&quot;다시 도전해보세요!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;while문과 리스트 활용하기&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 쇼핑 리스트 관리 프로그램
shopping_list = []  # 빈 쇼핑 리스트

while True:  # 무한 반복
    print(&quot;\n=== 쇼핑 리스트 관리 ===&quot;)
    print(&quot;1. 물건 추가&quot;)
    print(&quot;2. 물건 삭제&quot;) 
    print(&quot;3. 리스트 보기&quot;)
    print(&quot;4. 종료&quot;)
    
    choice = input(&quot;선택하세요: &quot;)
    
    if choice == &quot;1&quot;:  # 물건 추가
        item = input(&quot;추가할 물건: &quot;)
        shopping_list.append(item)  # 리스트에 추가
        print(f&quot;'{item}'이 추가되었습니다!&quot;)
        
    elif choice == &quot;2&quot;:  # 물건 삭제
        if len(shopping_list) == 0:  # 리스트가 비어있으면
            print(&quot;삭제할 물건이 없습니다!&quot;)
        else:
            print(&quot;현재 리스트:&quot;, shopping_list)
            item = input(&quot;삭제할 물건: &quot;)
            if item in shopping_list:  # 물건이 리스트에 있으면
                shopping_list.remove(item)  # 삭제
                print(f&quot;'{item}'이 삭제되었습니다!&quot;)
            else:
                print(&quot;해당 물건이 리스트에 없습니다!&quot;)
                
    elif choice == &quot;3&quot;:  # 리스트 보기
        if len(shopping_list) == 0:  # 리스트가 비어있으면
            print(&quot;쇼핑 리스트가 비어있습니다!&quot;)
        else:
            print(&quot;\n현재 쇼핑 리스트:&quot;)
            index = 1  # 순서 번호
            while index &amp;lt;= len(shopping_list):  # 리스트 크기만큼 반복
                print(f&quot;{index}. {shopping_list[index-1]}&quot;)
                index = index + 1
                
    elif choice == &quot;4&quot;:  # 종료
        print(&quot;쇼핑 리스트 관리를 종료합니다!&quot;)
        break
        
    else:
        print(&quot;올바른 번호를 선택해주세요!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;while문 사용시 주의사항&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 무한 루프 방지&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건이 언젠가는 거짓이 될 수 있도록 해야 합니다.&lt;/p&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;# 잘못된 예 - 무한 루프
count = 1
while count &amp;lt; 10:
    print(count)
    # count를 증가시키지 않음 - 무한 루프!

# 올바른 예
count = 1
while count &amp;lt; 10:
    print(count)
    count = count + 1  # 조건 변경
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 변수 초기화&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문에서 사용할 변수는 미리 초기화해야 합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 변수를 먼저 초기화
counter = 0

while counter &amp;lt; 3:
    print(f&quot;반복 {counter + 1}번째&quot;)
    counter = counter + 1
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 조건 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문의 조건이 올바른지 항상 확인하세요.&lt;/p&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;# 올바른 조건 설정 예제
password = &quot;&quot;  # 빈 문자열로 초기화

while password != &quot;1234&quot;:  # 올바른 비밀번호가 아닌 동안
    password = input(&quot;비밀번호를 입력하세요: &quot;)
    
    if password == &quot;1234&quot;:
        print(&quot;로그인 성공!&quot;)
    else:
        print(&quot;비밀번호가 틀렸습니다. 다시 시도하세요.&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;응용 예제: 성적 관리 시스템&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 학생 성적 관리 시스템
student_scores = {}  # 빈 딕셔너리

while True:
    print(&quot;\n=== 성적 관리 시스템 ===&quot;)
    print(&quot;1. 학생 성적 입력&quot;)
    print(&quot;2. 학생 성적 조회&quot;)
    print(&quot;3. 전체 성적 보기&quot;)
    print(&quot;4. 평균 계산&quot;)
    print(&quot;5. 종료&quot;)
    
    menu = input(&quot;메뉴를 선택하세요: &quot;)
    
    if menu == &quot;1&quot;:  # 성적 입력
        name = input(&quot;학생 이름: &quot;)
        score = int(input(&quot;성적: &quot;))
        student_scores[name] = score  # 딕셔너리에 저장
        print(f&quot;{name} 학생의 성적 {score}점이 저장되었습니다!&quot;)
        
    elif menu == &quot;2&quot;:  # 성적 조회
        name = input(&quot;조회할 학생 이름: &quot;)
        if name in student_scores:  # 학생이 등록되어 있으면
            print(f&quot;{name} 학생의 성적: {student_scores[name]}점&quot;)
        else:
            print(&quot;등록되지 않은 학생입니다!&quot;)
            
    elif menu == &quot;3&quot;:  # 전체 성적 보기
        if len(student_scores) == 0:  # 등록된 학생이 없으면
            print(&quot;등록된 학생이 없습니다!&quot;)
        else:
            print(&quot;\n=== 전체 학생 성적 ===&quot;)
            for name in student_scores:  # 딕셔너리 순회
                print(f&quot;{name}: {student_scores[name]}점&quot;)
                
    elif menu == &quot;4&quot;:  # 평균 계산
        if len(student_scores) == 0:
            print(&quot;등록된 학생이 없습니다!&quot;)
        else:
            total = 0  # 총합 초기화
            count = 0  # 학생 수 초기화
            
            for score in student_scores.values():  # 성적들만 가져오기
                total = total + score  # 총합에 더하기
                count = count + 1  # 학생 수 증가
                
            average = total / count  # 평균 계산
            print(f&quot;전체 평균: {average:.1f}점&quot;)
            
    elif menu == &quot;5&quot;:  # 종료
        print(&quot;성적 관리 시스템을 종료합니다!&quot;)
        break
        
    else:
        print(&quot;올바른 메뉴를 선택해주세요!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문은 조건이 참인 동안 코드를 반복 실행하는 매우 유용한 도구입니다. 주요 특징을 정리하면:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;조건 확인&lt;/b&gt;: while문은 매 반복마다 조건을 확인합니다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;break문&lt;/b&gt;: 반복문을 즉시 종료할 때 사용합니다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;continue문&lt;/b&gt;: 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;무한 루프&lt;/b&gt;: while True:를 사용하여 무한 반복할 수 있습니다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;변수 초기화&lt;/b&gt;: while문에서 사용할 변수는 미리 초기화해야 합니다&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/15</guid>
      <comments>https://umjam33.tistory.com/entry/10-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B0%98%EB%B3%B5%EB%AC%B8-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0-while%EB%AC%B8-%EC%99%84%EC%A0%84-%EC%A0%95%EB%B3%B5#entry15comment</comments>
      <pubDate>Tue, 27 May 2025 22:18:41 +0900</pubDate>
    </item>
    <item>
      <title>9. 파이썬 조건문 (IF문) 완벽히 이해하기. 예제로 배우는 코딩공부.</title>
      <link>https://umjam33.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A1%B0%EA%B1%B4%EB%AC%B8-IF%EB%AC%B8-%EC%99%84%EB%B2%BD%ED%9E%88-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%98%88%EC%A0%9C%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%BD%94%EB%94%A9%EA%B3%B5%EB%B6%80</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-조건문-IF문.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L9TO1/btsObT0zJuk/Qx8LUvaETpdg1NM0dJdr8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L9TO1/btsObT0zJuk/Qx8LUvaETpdg1NM0dJdr8k/img.png&quot; data-alt=&quot;파이썬-조건문-IF문&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L9TO1/btsObT0zJuk/Qx8LUvaETpdg1NM0dJdr8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL9TO1%2FbtsObT0zJuk%2FQx8LUvaETpdg1NM0dJdr8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-조건문-IF문.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-조건문-IF문&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;조건문이 왜 필요한가요?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 일상생활에서 항상 선택을 합니다. &quot;비가 오면 우산을 가져가고, 맑으면 그냥 나간다&quot; 이런 상황처럼 컴퓨터도 조건에 따라 다른 일을 해야 할 때가 있어요. 파이썬에서는 이런 상황을 if문으로 표현할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;# 간단한 예시: 날씨에 따른 행동 결정
weather = &quot;비&quot; # 날씨 변수에 &quot;비&quot; 저장

if weather == &quot;비&quot;:  # 만약 날씨가 비라면
    print(&quot;우산을 챙기세요&quot;)  # 이 문장을 실행
else:  # 그렇지 않다면
    print(&quot;산책하기 좋은 날이네요&quot;)  # 이 문장을 실행
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과: 우산을 챙기세요&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;if문의 기본 구조 알아보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;if문은 다음과 같은 형태로 작성합니다:&lt;/p&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;if 조건:
    실행할_내용1
    실행할_내용2
else:
    다른_실행_내용1
    다른_실행_내용2
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 점들:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;if 뒤에는 반드시 콜론(:)을 붙입니다&lt;/li&gt;
&lt;li&gt;실행할 내용은 반드시 들여쓰기를 해야 합니다&lt;/li&gt;
&lt;li&gt;else는 생략할 수 있습니다&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot;&gt;&lt;code&gt;# 나이에 따른 입장료 계산
age = 15  # 나이를 15세로 설정

if age &amp;lt; 18:  # 18세 미만이면
    print(&quot;청소년 입장료: 5000원&quot;)  # 청소년 요금 안내
else:  # 18세 이상이면
    print(&quot;성인 입장료: 8000원&quot;)    # 성인 요금 안내
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;들여쓰기가 중요한 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 들여쓰기는 매우 중요합니다. 다른 언어와 달리 {}를 사용하지 않고 들여쓰기로 코드 블록을 구분하기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올바른 들여쓰기 예시:&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;score = 85  # 점수 변수

if score &amp;gt;= 90:      # 90점 이상이면
    print(&quot;A등급&quot;)   # 4칸 들여쓰기
    print(&quot;우수함&quot;)  # 같은 깊이로 들여쓰기
else:               # else도 if와 같은 깊이
    print(&quot;B등급&quot;)   # 4칸 들여쓰기
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘못된 들여쓰기 예시:&lt;/p&gt;
&lt;pre class=&quot;bash&quot;&gt;&lt;code&gt;# 이렇게 하면 오류가 발생합니다!
score = 85
if score &amp;gt;= 90:
    print(&quot;A등급&quot;)   # 4칸 들여쓰기
print(&quot;우수함&quot;)      # 들여쓰기 없음 - 오류!
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;들여쓰기 규칙:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;보통 공백 4칸을 사용합니다&lt;/li&gt;
&lt;li&gt;탭과 공백을 섞어 쓰면 안됩니다&lt;/li&gt;
&lt;li&gt;같은 블록 안에서는 들여쓰기 깊이가 같아야 합니다&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;조건문에서 사용하는 비교 연산자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건을 만들 때 사용하는 비교 연산자들을 알아보겠습니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연산자 의미 예시&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;==&lt;/td&gt;
&lt;td&gt;같다&lt;/td&gt;
&lt;td&gt;a == b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;!=&lt;/td&gt;
&lt;td&gt;같지 않다&lt;/td&gt;
&lt;td&gt;a != b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;&lt;/td&gt;
&lt;td&gt;작다&lt;/td&gt;
&lt;td&gt;a &amp;lt; b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&lt;/td&gt;
&lt;td&gt;크다&lt;/td&gt;
&lt;td&gt;a &amp;gt; b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;=&lt;/td&gt;
&lt;td&gt;작거나 같다&lt;/td&gt;
&lt;td&gt;a &amp;lt;= b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;=&lt;/td&gt;
&lt;td&gt;크거나 같다&lt;/td&gt;
&lt;td&gt;a &amp;gt;= b&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 예시로 확인해보겠습니다:&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 학생의 성적에 따른 등급 판정
korean = 85    # 국어 점수
math = 92      # 수학 점수
english = 78   # 영어 점수

# 평균 계산
average = (korean + math + english) / 3  # 세 과목 평균

print(f&quot;평균 점수: {average:.1f}점&quot;)  # 소수점 1자리까지 출력

if average &amp;gt;= 90:         # 평균이 90점 이상이면
    print(&quot;등급: A&quot;)      # A등급
elif average &amp;gt;= 80:      # 평균이 80점 이상이면
    print(&quot;등급: B&quot;)      # B등급
elif average &amp;gt;= 70:      # 평균이 70점 이상이면
    print(&quot;등급: C&quot;)      # C등급
else:                    # 그 외의 경우
    print(&quot;등급: D&quot;)      # D등급
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;논리 연산자 활용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 조건을 조합할 때 사용하는 연산자들입니다:&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;and 연산자 (그리고)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 조건이 참일 때만 전체가 참이 됩니다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 놀이공원 입장 조건 확인
age = 12        # 나이
height = 140    # 키 (cm)

# 10세 이상이고 키가 130cm 이상이어야 탑승 가능
if age &amp;gt;= 10 and height &amp;gt;= 130:
    print(&quot;롤러코스터 탑승 가능합니다!&quot;)
else:
    print(&quot;안전을 위해 탑승할 수 없습니다.&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;or 연산자 (또는)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건 중 하나라도 참이면 전체가 참이 됩니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 할인 혜택 확인
age = 65           # 나이
is_student = False # 학생 여부

# 65세 이상이거나 학생이면 할인
if age &amp;gt;= 65 or is_student:
    print(&quot;20% 할인 적용됩니다!&quot;)
    price = 10000 * 0.8  # 20% 할인된 가격
else:
    print(&quot;정가로 결제됩니다.&quot;)
    price = 10000        # 정가

print(f&quot;결제 금액: {price}원&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;not 연산자 (아니다)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건의 반대를 의미합니다.&lt;/p&gt;
&lt;pre class=&quot;monkey&quot;&gt;&lt;code&gt;# 회원가입 상태 확인
is_member = False  # 회원가입 여부

if not is_member:           # 회원이 아니라면
    print(&quot;회원가입을 해주세요&quot;)
    print(&quot;가입 시 10% 할인혜택!&quot;)
else:                       # 회원이라면
    print(&quot;환영합니다!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;in과 not in 연산자&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 값이 컬렉션(리스트, 문자열 등)에 포함되어 있는지 확인할 때 사용합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 좋아하는 과일 확인
favorite_fruits = [&quot;사과&quot;, &quot;바나나&quot;, &quot;오렌지&quot;, &quot;포도&quot;]  # 좋아하는 과일 목록
fruit = &quot;사과&quot;  # 확인할 과일

if fruit in favorite_fruits:        # 과일이 목록에 있다면
    print(f&quot;{fruit}는 제가 좋아하는 과일이에요!&quot;)
else:                               # 목록에 없다면
    print(f&quot;{fruit}는 별로 안 좋아해요.&quot;)

# 싫어하는 음식 확인
dislike_foods = [&quot;브로콜리&quot;, &quot;당근&quot;, &quot;시금치&quot;]
food = &quot;피자&quot;

if food not in dislike_foods:       # 음식이 싫어하는 목록에 없다면
    print(f&quot;{food}는 먹을 수 있어요!&quot;)
else:                               # 싫어하는 목록에 있다면
    print(f&quot;{food}는 먹기 싫어요...&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;elif로 다양한 조건 처리하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 조건을 순서대로 확인할 때 elif를 사용합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 온도에 따른 옷차림 추천
temperature = 25  # 현재 온도

if temperature &amp;gt;= 30:              # 30도 이상
    print(&quot;너무 더워요! 반팔과 반바지를 입으세요&quot;)
    clothes = &quot;반팔, 반바지&quot;
elif temperature &amp;gt;= 20:           # 20도 이상 30도 미만
    print(&quot;따뜻해요! 긴팔 셔츠가 좋겠네요&quot;)
    clothes = &quot;긴팔 셔츠&quot;
elif temperature &amp;gt;= 10:           # 10도 이상 20도 미만
    print(&quot;쌀쌀해요! 가디건이나 자켓을 입으세요&quot;)
    clothes = &quot;가디건, 자켓&quot;
else:                            # 10도 미만
    print(&quot;추워요! 코트를 입으세요&quot;)
    clothes = &quot;코트&quot;

print(f&quot;추천 의상: {clothes}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;중첩 if문 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;if문 안에 또 다른 if문을 넣을 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;monkey&quot;&gt;&lt;code&gt;# 영화 관람 등급 확인
age = 16           # 나이
has_guardian = True  # 보호자 동반 여부

print(&quot;영화 관람 등급 확인 중...&quot;)

if age &amp;gt;= 19:                    # 19세 이상이면
    print(&quot;모든 영화 관람 가능합니다&quot;)
else:                           # 19세 미만이면
    if age &amp;gt;= 15:               # 15세 이상 19세 미만
        print(&quot;15세 이상 관람가 영화까지 볼 수 있습니다&quot;)
    else:                       # 15세 미만
        if has_guardian:        # 보호자가 있으면
            print(&quot;보호자 동반 시 12세 이상 관람가 영화 시청 가능&quot;)
        else:                   # 보호자가 없으면
            print(&quot;전체 관람가 영화만 시청 가능합니다&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;조건부 표현식 (삼항 연산자)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 조건문을 한 줄로 표현할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 기본 형태: 참일때값 if 조건 else 거짓일때값

# 짝수 홀수 판별
number = 7
result = &quot;짝수&quot; if number % 2 == 0 else &quot;홀수&quot;
print(f&quot;{number}은 {result}입니다&quot;)

# 성인 미성년자 판별
age = 16
status = &quot;성인&quot; if age &amp;gt;= 18 else &quot;미성년자&quot;
print(f&quot;나이 {age}세는 {status}입니다&quot;)

# 최댓값 구하기
a = 15
b = 23
max_value = a if a &amp;gt; b else b
print(f&quot;{a}와 {b} 중 큰 수는 {max_value}입니다&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실전 예제: 간단한 계산기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배운 내용을 종합해서 간단한 계산기를 만들어보겠습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 간단한 사칙연산 계산기
print(&quot;=== 간단한 계산기 ===&quot;)

# 숫자 입력 받기
num1 = 10    # 첫 번째 숫자
num2 = 3     # 두 번째 숫자
operator = &quot;+&quot;  # 연산자

print(f&quot;첫 번째 숫자: {num1}&quot;)
print(f&quot;두 번째 숫자: {num2}&quot;)
print(f&quot;연산자: {operator}&quot;)

# 연산 수행
if operator == &quot;+&quot;:              # 덧셈
    result = num1 + num2
    print(f&quot;결과: {num1} + {num2} = {result}&quot;)
elif operator == &quot;-&quot;:            # 뺄셈
    result = num1 - num2
    print(f&quot;결과: {num1} - {num2} = {result}&quot;)
elif operator == &quot;*&quot;:            # 곱셈
    result = num1 * num2
    print(f&quot;결과: {num1} &amp;times; {num2} = {result}&quot;)
elif operator == &quot;/&quot;:            # 나눗셈
    if num2 != 0:               # 0으로 나누기 체크
        result = num1 / num2
        print(f&quot;결과: {num1} &amp;divide; {num2} = {result}&quot;)
    else:
        print(&quot;오류: 0으로 나눌 수 없습니다!&quot;)
else:                           # 잘못된 연산자
    print(&quot;오류: 지원하지 않는 연산자입니다!&quot;)
    print(&quot;사용 가능한 연산자: +, -, *, /&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실전 예제: 학생 성적 관리 시스템&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 학생 성적 관리 시스템
print(&quot;=== 학생 성적 관리 시스템 ===&quot;)

# 학생 정보
student_name = &quot;김철수&quot;    # 학생 이름
korean = 88              # 국어 점수
english = 92             # 영어 점수
math = 76                # 수학 점수
science = 84             # 과학 점수

print(f&quot;학생 이름: {student_name}&quot;)
print(f&quot;국어: {korean}점&quot;)
print(f&quot;영어: {english}점&quot;)
print(f&quot;수학: {math}점&quot;)
print(f&quot;과학: {science}점&quot;)

# 총점과 평균 계산
total = korean + english + math + science
average = total / 4

print(f&quot;\n총점: {total}점&quot;)
print(f&quot;평균: {average:.1f}점&quot;)

# 등급 판정
if average &amp;gt;= 90:
    grade = &quot;A&quot;
    comment = &quot;우수&quot;
elif average &amp;gt;= 80:
    grade = &quot;B&quot;
    comment = &quot;양호&quot;
elif average &amp;gt;= 70:
    grade = &quot;C&quot;
    comment = &quot;보통&quot;
elif average &amp;gt;= 60:
    grade = &quot;D&quot;
    comment = &quot;미흡&quot;
else:
    grade = &quot;F&quot;
    comment = &quot;재시험 필요&quot;

print(f&quot;등급: {grade}&quot;)
print(f&quot;평가: {comment}&quot;)

# 과목별 분석
print(&quot;\n=== 과목별 분석 ===&quot;)
subjects = [(&quot;국어&quot;, korean), (&quot;영어&quot;, english), (&quot;수학&quot;, math), (&quot;과학&quot;, science)]

for subject, score in subjects:
    if score &amp;gt;= 90:
        level = &quot;매우 우수&quot;
    elif score &amp;gt;= 80:
        level = &quot;우수&quot;
    elif score &amp;gt;= 70:
        level = &quot;보통&quot;
    else:
        level = &quot;노력 필요&quot;
    
    print(f&quot;{subject}: {score}점 - {level}&quot;)

# 장학금 대상 여부 확인
scholarship = False
if average &amp;gt;= 95:                    # 평균 95점 이상
    scholarship = True
    scholarship_type = &quot;최우수 장학금&quot;
elif average &amp;gt;= 90 and korean &amp;gt;= 85 and english &amp;gt;= 85:  # 평균 90점 이상이면서 국어, 영어 85점 이상
    scholarship = True
    scholarship_type = &quot;우수 장학금&quot;

if scholarship:
    print(f&quot;\n축하합니다! {scholarship_type} 대상입니다!&quot;)
else:
    print(f&quot;\n장학금 조건에 미달합니다. 다음 학기에 더 노력하세요!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정리하며&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건문은 프로그래밍의 핵심 요소입니다. 다음 점들을 기억하세요:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;if문은 조건에 따라 다른 동작을 실행합니다&lt;/li&gt;
&lt;li&gt;들여쓰기는 반드시 일정하게 해야 합니다 (보통 공백 4칸)&lt;/li&gt;
&lt;li&gt;콜론(:)을 빼먹지 마세요&lt;/li&gt;
&lt;li&gt;비교 연산자와 논리 연산자를 활용해 복잡한 조건을 만들 수 있습니다&lt;/li&gt;
&lt;li&gt;elif를 사용해 여러 조건을 순서대로 확인할 수 있습니다&lt;/li&gt;
&lt;li&gt;조건부 표현식으로 간단한 조건문을 한 줄로 작성할 수 있습니다&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 여러분도 조건문을 활용해서 상황에 맞는 프로그램을 만들 수 있을 거예요!&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/14</guid>
      <comments>https://umjam33.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A1%B0%EA%B1%B4%EB%AC%B8-IF%EB%AC%B8-%EC%99%84%EB%B2%BD%ED%9E%88-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%98%88%EC%A0%9C%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%BD%94%EB%94%A9%EA%B3%B5%EB%B6%80#entry14comment</comments>
      <pubDate>Tue, 27 May 2025 04:42:46 +0900</pubDate>
    </item>
    <item>
      <title>8. 파이썬 변수와 메모리 관리 완벽 가이드</title>
      <link>https://umjam33.tistory.com/entry/8-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B3%80%EC%88%98%EC%99%80-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-변수-메모리관리.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmBKkf/btsOcnAiIEO/eCwtpMfaEpmr4ZOUHCiOW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmBKkf/btsOcnAiIEO/eCwtpMfaEpmr4ZOUHCiOW1/img.png&quot; data-alt=&quot;파이썬-변수-메모리관리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmBKkf/btsOcnAiIEO/eCwtpMfaEpmr4ZOUHCiOW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmBKkf%2FbtsOcnAiIEO%2FeCwtpMfaEpmr4ZOUHCiOW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-변수-메모리관리.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-변수-메모리관리&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래밍을 처음 시작하는 분들에게는 변수의 개념이 다소 추상적으로 느껴질 수 있습니다. 이번 장에서는 파이썬 변수의 핵심 개념부터 실무에서 자주 마주치는 복사 문제까지 단계별로 알아보겠습니다. 당장 모든 내용을 완벽하게 이해하지 못해도 괜찮습니다. 파이썬을 학습하면서 자연스럽게 익혀나갈 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;변수 생성의 기본 원리&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;변수란 무엇인가?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 변수를 만드는 것은 매우 직관적입니다. 등호(=) 기호를 사용하여 데이터를 저장할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# 기본적인 변수 생성 예제
student_name = &quot;김철수&quot;
student_age = 25
student_grades = [85, 90, 78, 92]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 프로그래밍 언어와 달리 파이썬은 변수의 자료형을 미리 선언할 필요가 없습니다. 파이썬이 자동으로 데이터의 종류를 판단하여 적절한 자료형을 할당합니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 자료형이 자동으로 결정되는 예제
number = 42          # 정수형 (int)
pi_value = 3.14159   # 실수형 (float)
message = &quot;안녕하세요&quot;  # 문자열 (str)
is_student = True    # 불린형 (bool)

# type() 함수로 자료형 확인
print(type(number))     # &amp;lt;class 'int'&amp;gt;
print(type(pi_value))   # &amp;lt;class 'float'&amp;gt;
print(type(message))    # &amp;lt;class 'str'&amp;gt;
print(type(is_student)) # &amp;lt;class 'bool'&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실습 예제: 간단한 학생 관리 프로그램&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 학생 정보를 저장하는 변수들
student_id = 2024001
student_name = &quot;이영희&quot;
korean_score = 88
english_score = 92
math_score = 79

# 평균 점수 계산
average_score = (korean_score + english_score + math_score) / 3

# 결과 출력
print(f&quot;학번: {student_id}&quot;)
print(f&quot;이름: {student_name}&quot;)
print(f&quot;국어: {korean_score}점&quot;)
print(f&quot;영어: {english_score}점&quot;)
print(f&quot;수학: {math_score}점&quot;)
print(f&quot;평균: {average_score:.2f}점&quot;)

# 학점 계산
if average_score &amp;gt;= 90:
    grade = &quot;A&quot;
elif average_score &amp;gt;= 80:
    grade = &quot;B&quot;
elif average_score &amp;gt;= 70:
    grade = &quot;C&quot;
else:
    grade = &quot;F&quot;

print(f&quot;학점: {grade}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파이썬 변수의 특성&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;변수와 객체의 관계&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 변수는 실제로 객체를 가리키는 '참조'입니다. 이는 매우 중요한 개념으로, 다음 예제를 통해 살펴보겠습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 리스트 객체 생성과 변수 할당
shopping_list = [&quot;사과&quot;, &quot;바나나&quot;, &quot;오렌지&quot;]

# id() 함수로 메모리 주소 확인
print(f&quot;shopping_list의 메모리 주소: {id(shopping_list)}&quot;)

# 같은 리스트를 가리키는 또 다른 변수
my_list = shopping_list
print(f&quot;my_list의 메모리 주소: {id(my_list)}&quot;)

# 두 변수가 같은 객체를 가리키는지 확인
print(f&quot;같은 객체를 가리키는가? {shopping_list is my_list}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;메모리 주소와 객체 참조 실습&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 숫자형 변수의 메모리 주소 확인
x = 100
y = 100
print(f&quot;x의 주소: {id(x)}&quot;)
print(f&quot;y의 주소: {id(y)}&quot;)
print(f&quot;x와 y가 같은 객체? {x is y}&quot;)

# 문자열 변수의 메모리 주소 확인
name1 = &quot;파이썬&quot;
name2 = &quot;파이썬&quot;
print(f&quot;name1의 주소: {id(name1)}&quot;)
print(f&quot;name2의 주소: {id(name2)}&quot;)
print(f&quot;name1과 name2가 같은 객체? {name1 is name2}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데이터 복사 방법과 주의사항&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;리스트 복사 시 주의할 점&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트를 다룰 때 가장 흔히 발생하는 실수가 바로 '얕은 복사' 문제입니다. 다음 예제를 통해 살펴보겠습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 위험한 리스트 할당 방법
original_scores = [85, 90, 78, 92, 88]
backup_scores = original_scores  # 주의! 이는 복사가 아닙니다

print(&quot;초기 상태:&quot;)
print(f&quot;원본 점수: {original_scores}&quot;)
print(f&quot;백업 점수: {backup_scores}&quot;)

# 원본 리스트 수정
original_scores[0] = 95
original_scores.append(100)

print(&quot;\n원본 수정 후:&quot;)
print(f&quot;원본 점수: {original_scores}&quot;)
print(f&quot;백업 점수: {backup_scores}&quot;)  # 백업도 함께 변경됨!

# 메모리 주소 확인
print(f&quot;\n원본 주소: {id(original_scores)}&quot;)
print(f&quot;백업 주소: {id(backup_scores)}&quot;)
print(f&quot;같은 객체인가? {original_scores is backup_scores}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실무 예제: 학급 성적 관리 시스템&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 학급 성적 관리에서 발생할 수 있는 문제 상황
class_a_scores = [82, 75, 90, 88, 93, 79, 85]
class_b_scores = class_a_scores  # 잘못된 복사 방법

print(&quot;=== 초기 학급 성적 ===&quot;)
print(f&quot;A반 성적: {class_a_scores}&quot;)
print(f&quot;B반 성적: {class_b_scores}&quot;)

# A반 학생의 성적을 수정했는데...
class_a_scores[2] = 95  # 세 번째 학생 성적 수정
print(&quot;\n=== A반 성적 수정 후 ===&quot;)
print(f&quot;A반 성적: {class_a_scores}&quot;)
print(f&quot;B반 성적: {class_b_scores}&quot;)  # B반 성적도 변경됨!

print(f&quot;\n문제 원인: 같은 메모리 주소를 참조 {class_a_scores is class_b_scores}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;슬라이싱을 활용한 복사&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본 슬라이싱 복사 방법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트를 올바르게 복사하는 첫 번째 방법은 슬라이싱을 사용하는 것입니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 슬라이싱을 이용한 올바른 복사
original_menu = [&quot;김치찌개&quot;, &quot;된장찌개&quot;, &quot;부대찌개&quot;, &quot;순두부찌개&quot;]
copied_menu = original_menu[:]  # 전체 슬라이싱으로 복사

print(&quot;=== 슬라이싱 복사 테스트 ===&quot;)
print(f&quot;원본 메뉴: {original_menu}&quot;)
print(f&quot;복사 메뉴: {copied_menu}&quot;)

# 원본 수정
original_menu.append(&quot;김치찌개&quot;)
original_menu[0] = &quot;돼지김치찌개&quot;

print(&quot;\n=== 원본 수정 후 ===&quot;)
print(f&quot;원본 메뉴: {original_menu}&quot;)
print(f&quot;복사 메뉴: {copied_menu}&quot;)  # 영향받지 않음

# 서로 다른 객체인지 확인
print(f&quot;\n다른 객체인가? {original_menu is not copied_menu}&quot;)
print(f&quot;원본 주소: {id(original_menu)}&quot;)
print(f&quot;복사 주소: {id(copied_menu)}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;슬라이싱 복사 실습 예제&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 온라인 쇼핑몰 장바구니 시스템
def create_shopping_cart():
    &quot;&quot;&quot;새로운 장바구니를 생성하는 함수&quot;&quot;&quot;
    return []

def copy_cart_items(source_cart):
    &quot;&quot;&quot;장바구니 아이템을 복사하는 함수&quot;&quot;&quot;
    return source_cart[:]  # 슬라이싱으로 복사

# 메인 장바구니
main_cart = [&quot;노트북&quot;, &quot;마우스&quot;, &quot;키보드&quot;, &quot;모니터&quot;]
print(f&quot;메인 장바구니: {main_cart}&quot;)

# 임시 장바구니에 복사
temp_cart = copy_cart_items(main_cart)
print(f&quot;임시 장바구니: {temp_cart}&quot;)

# 임시 장바구니에서 상품 제거 테스트
temp_cart.remove(&quot;모니터&quot;)
temp_cart.append(&quot;스피커&quot;)

print(&quot;\n=== 임시 장바구니 수정 후 ===&quot;)
print(f&quot;메인 장바구니: {main_cart}&quot;)  # 변경되지 않음
print(f&quot;임시 장바구니: {temp_cart}&quot;)

# 할인 쿠폰 적용을 위한 백업
backup_cart = main_cart[:]
print(f&quot;\n백업 장바구니: {backup_cart}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;copy 모듈 활용하기&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;copy 모듈의 기본 사용법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬의 copy 모듈을 사용하면 더욱 명확하게 객체를 복사할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;from copy import copy

# copy 모듈을 사용한 복사
student_info = {
    &quot;name&quot;: &quot;박민수&quot;,
    &quot;age&quot;: 22,
    &quot;subjects&quot;: [&quot;수학&quot;, &quot;영어&quot;, &quot;과학&quot;],
    &quot;grades&quot;: [88, 92, 85]
}

# copy() 함수로 복사
student_backup = copy(student_info)

print(&quot;=== copy 모듈 사용 예제 ===&quot;)
print(f&quot;원본 정보: {student_info}&quot;)
print(f&quot;백업 정보: {student_backup}&quot;)

# 리스트 내부 요소 수정
student_info[&quot;subjects&quot;].append(&quot;체육&quot;)
student_info[&quot;grades&quot;][0] = 90

print(&quot;\n=== 원본 수정 후 ===&quot;)
print(f&quot;원본 정보: {student_info}&quot;)
print(f&quot;백업 정보: {student_backup}&quot;)  # 내부 리스트는 영향을 받음

print(f&quot;\n서로 다른 객체? {student_info is not student_backup}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;깊은 복사(Deep Copy) 사용하기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;from copy import deepcopy

# 중첩된 리스트 구조
class_schedule = [
    [&quot;월요일&quot;, [&quot;수학&quot;, &quot;영어&quot;, &quot;과학&quot;]],
    [&quot;화요일&quot;, [&quot;국어&quot;, &quot;체육&quot;, &quot;음악&quot;]],
    [&quot;수요일&quot;, [&quot;미술&quot;, &quot;역사&quot;, &quot;수학&quot;]]
]

# 얕은 복사 vs 깊은 복사
shallow_copy = copy(class_schedule)
deep_copy = deepcopy(class_schedule)

print(&quot;=== 깊은 복사 비교 ===&quot;)
print(f&quot;원본: {class_schedule}&quot;)
print(f&quot;얕은 복사: {shallow_copy}&quot;)
print(f&quot;깊은 복사: {deep_copy}&quot;)

# 내부 리스트 수정
class_schedule[0][1].append(&quot;프로그래밍&quot;)

print(&quot;\n=== 원본 수정 후 ===&quot;)
print(f&quot;원본: {class_schedule}&quot;)
print(f&quot;얕은 복사: {shallow_copy}&quot;)    # 영향받음
print(f&quot;깊은 복사: {deep_copy}&quot;)      # 영향받지 않음
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;리스트 자체 copy() 메서드 사용&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 리스트 객체의 copy() 메서드 활용
game_inventory = [&quot;검&quot;, &quot;방패&quot;, &quot;포션&quot;, &quot;마법서&quot;, &quot;화살&quot;]
backup_inventory = game_inventory.copy()  # 내장 copy() 메서드

print(&quot;=== 게임 인벤토리 관리 ===&quot;)
print(f&quot;메인 인벤토리: {game_inventory}&quot;)
print(f&quot;백업 인벤토리: {backup_inventory}&quot;)

# 아이템 사용 시뮬레이션
game_inventory.remove(&quot;포션&quot;)  # 포션 사용
game_inventory.append(&quot;빨간포션&quot;)  # 새 포션 획득

print(&quot;\n=== 아이템 사용 후 ===&quot;)
print(f&quot;메인 인벤토리: {game_inventory}&quot;)
print(f&quot;백업 인벤토리: {backup_inventory}&quot;)  # 변경되지 않음

# 인벤토리 복원 기능
def restore_inventory(original, backup):
    &quot;&quot;&quot;백업에서 인벤토리를 복원하는 함수&quot;&quot;&quot;
    return backup.copy()

restored_inventory = restore_inventory(game_inventory, backup_inventory)
print(f&quot;\n복원된 인벤토리: {restored_inventory}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;다양한 변수 할당 기법&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;튜플을 이용한 다중 할당&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서는 여러 변수에 값을 동시에 할당하는 다양한 방법을 제공합니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 튜플을 이용한 다중 할당
student_data = (&quot;홍길동&quot;, 20, &quot;컴퓨터공학과&quot;)
name, age, major = student_data

print(&quot;=== 튜플 언패킹 ===&quot;)
print(f&quot;이름: {name}&quot;)
print(f&quot;나이: {age}&quot;)
print(f&quot;전공: {major}&quot;)

# 괄호 없이도 가능
x, y, z = 10, 20, 30
print(f&quot;\nx={x}, y={y}, z={z}&quot;)

# 리스트를 이용한 다중 할당
colors = [&quot;빨강&quot;, &quot;초록&quot;, &quot;파랑&quot;]
red, green, blue = colors
print(f&quot;\n색상: {red}, {green}, {blue}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;변수 값 교환하기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 파이썬만의 우아한 변수 교환 방법
player1_score = 150
player2_score = 230

print(&quot;=== 점수 교환 전 ===&quot;)
print(f&quot;플레이어1: {player1_score}점&quot;)
print(f&quot;플레이어2: {player2_score}점&quot;)

# 한 줄로 값 교환
player1_score, player2_score = player2_score, player1_score

print(&quot;\n=== 점수 교환 후 ===&quot;)
print(f&quot;플레이어1: {player1_score}점&quot;)
print(f&quot;플레이어2: {player2_score}점&quot;)

# 여러 변수 동시 교환
a, b, c = 1, 2, 3
print(f&quot;\n교환 전: a={a}, b={b}, c={c}&quot;)

a, b, c = c, a, b  # 순환 교환
print(f&quot;교환 후: a={a}, b={b}, c={c}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;같은 값을 여러 변수에 할당&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 동일한 값을 여러 변수에 할당
default_hp = default_mp = default_exp = 100

print(&quot;=== 게임 캐릭터 초기값 ===&quot;)
print(f&quot;체력: {default_hp}&quot;)
print(f&quot;마력: {default_mp}&quot;)
print(f&quot;경험치: {default_exp}&quot;)

# 주의사항: 리스트와 같은 가변 객체의 경우
# 잘못된 방법
wrong_list1 = wrong_list2 = []
wrong_list1.append(&quot;아이템&quot;)
print(f&quot;\n잘못된 예: {wrong_list1}, {wrong_list2}&quot;)  # 둘 다 변경됨

# 올바른 방법
correct_list1 = []
correct_list2 = []
correct_list1.append(&quot;아이템&quot;)
print(f&quot;올바른 예: {correct_list1}, {correct_list2}&quot;)  # 하나만 변경됨
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실전 예제: 간단한 텍스트 RPG 게임&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 텍스트 RPG 게임에서 변수 활용 예제
def create_character():
    &quot;&quot;&quot;새로운 캐릭터를 생성하는 함수&quot;&quot;&quot;
    # 기본 스탯 설정
    name, level, hp, mp = &quot;용사&quot;, 1, 100, 50
    
    # 인벤토리 초기화 (올바른 복사 방법 사용)
    basic_items = [&quot;나무검&quot;, &quot;가죽갑옷&quot;, &quot;빵&quot;]
    inventory = basic_items.copy()
    
    # 캐릭터 정보 딕셔너리
    character = {
        &quot;name&quot;: name,
        &quot;level&quot;: level,
        &quot;hp&quot;: hp,
        &quot;mp&quot;: mp,
        &quot;inventory&quot;: inventory,
        &quot;location&quot;: &quot;마을&quot;
    }
    
    return character

def battle_system(hero, monster_hp):
    &quot;&quot;&quot;간단한 전투 시스템&quot;&quot;&quot;
    print(f&quot;\n=== 전투 시작! ===&quot;)
    print(f&quot;{hero['name']}의 체력: {hero['hp']}&quot;)
    print(f&quot;몬스터 체력: {monster_hp}&quot;)
    
    # 전투 시뮬레이션
    round_count = 1
    hero_hp = hero['hp']  # 복사하여 원본 보호
    
    while hero_hp &amp;gt; 0 and monster_hp &amp;gt; 0:
        print(f&quot;\n--- {round_count}라운드 ---&quot;)
        
        # 플레이어 공격
        import random
        damage = random.randint(15, 25)
        monster_hp -= damage
        print(f&quot;{hero['name']}이 {damage} 데미지를 입혔습니다!&quot;)
        
        if monster_hp &amp;lt;= 0:
            print(&quot;몬스터를 물리쳤습니다!&quot;)
            break
        
        # 몬스터 공격
        monster_damage = random.randint(10, 20)
        hero_hp -= monster_damage
        print(f&quot;몬스터가 {monster_damage} 데미지를 입혔습니다!&quot;)
        
        print(f&quot;{hero['name']} 체력: {hero_hp}&quot;)
        print(f&quot;몬스터 체력: {monster_hp}&quot;)
        
        round_count += 1
        
        if round_count &amp;gt; 10:  # 무한 루프 방지
            break
    
    # 전투 결과 반영
    if hero_hp &amp;gt; 0:
        hero['hp'] = hero_hp
        return True
    else:
        print(f&quot;{hero['name']}이 쓰러졌습니다...&quot;)
        return False

# 게임 실행
print(&quot;=== 텍스트 RPG 게임 ===&quot;)
main_character = create_character()

print(&quot;캐릭터 정보:&quot;)
for key, value in main_character.items():
    print(f&quot;{key}: {value}&quot;)

# 전투 테스트
battle_result = battle_system(main_character, 80)

if battle_result:
    print(f&quot;\n전투 후 {main_character['name']}의 체력: {main_character['hp']}&quot;)
else:
    print(&quot;\n게임 오버!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;변수 할당 고급 기법&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 확장된 언패킹 (Python 3.0 이상)
scores = [95, 87, 92, 78, 85, 90, 83]

# 첫 번째, 마지막과 나머지 분리
first, *middle, last = scores
print(f&quot;첫 번째 점수: {first}&quot;)
print(f&quot;마지막 점수: {last}&quot;)
print(f&quot;중간 점수들: {middle}&quot;)

# 처음 두 개와 나머지 분리
top1, top2, *others = scores
print(f&quot;\n1등 점수: {top1}&quot;)
print(f&quot;2등 점수: {top2}&quot;)
print(f&quot;나머지 점수: {others}&quot;)

# 함수에서 여러 값 반환하기
def get_student_info():
    &quot;&quot;&quot;학생 정보를 반환하는 함수&quot;&quot;&quot;
    return &quot;김영수&quot;, 85, 90, 78  # 이름, 수학, 영어, 과학

# 여러 값을 한 번에 받기
student_name, math_score, eng_score, sci_score = get_student_info()
print(f&quot;\n학생: {student_name}&quot;)
print(f&quot;수학: {math_score}, 영어: {eng_score}, 과학: {sci_score}&quot;)

# 딕셔너리 키-값 언패킹
user_data = {&quot;username&quot;: &quot;coder123&quot;, &quot;email&quot;: &quot;coder@example.com&quot;, &quot;age&quot;: 25}
for key, value in user_data.items():
    print(f&quot;{key}: {value}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상으로 파이썬 변수와 메모리 관리에 대한 종합적인 가이드를 마칩니다. 변수의 기본 개념부터 복사 메커니즘, 그리고 다양한 할당 기법까지 실무에서 자주 사용되는 패턴들을 다뤘습니다. 특히 리스트 복사 시 발생할 수 있는 문제점과 해결 방법을 충분히 이해하고 넘어가시기 바랍니다. 이러한 개념들은 파이썬 프로그래밍에서 매우 중요한 기초가 됩니다.&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/13</guid>
      <comments>https://umjam33.tistory.com/entry/8-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B3%80%EC%88%98%EC%99%80-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C#entry13comment</comments>
      <pubDate>Mon, 26 May 2025 23:04:31 +0900</pubDate>
    </item>
    <item>
      <title>7. 파이썬 불린(Boolean) 자료형에 대해서 공부하기</title>
      <link>https://umjam33.tistory.com/entry/7-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B6%88%EB%A6%B0Boolean-%EC%9E%90%EB%A3%8C%ED%98%95%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EA%B3%B5%EB%B6%80%ED%95%98%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;불린-자료형.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTqVj8/btsOb7RZqg9/EmyXzDtkhs1LWVZql0qukk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTqVj8/btsOb7RZqg9/EmyXzDtkhs1LWVZql0qukk/img.png&quot; data-alt=&quot;불린-자료형&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTqVj8/btsOb7RZqg9/EmyXzDtkhs1LWVZql0qukk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTqVj8%2FbtsOb7RZqg9%2FEmyXzDtkhs1LWVZql0qukk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;불린-자료형.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;불린-자료형&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;불린 자료형이란 무엇인가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불린(Boolean) 자료형은 프로그래밍에서 논리값을 표현하는 기본 자료형입니다. 오직 두 가지 값만을 가질 수 있습니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;값 의미 설명&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;True&lt;/td&gt;
&lt;td&gt;참&lt;/td&gt;
&lt;td&gt;조건이 성립하거나 값이 존재함을 의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;False&lt;/td&gt;
&lt;td&gt;거짓&lt;/td&gt;
&lt;td&gt;조건이 성립하지 않거나 값이 없음을 의미&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중요한 주의사항&lt;/b&gt;: True와 False는 파이썬의 예약어이므로 반드시 첫 글자를 대문자로 써야 합니다. true나 false로 쓰면 오류가 발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;불린 자료형의 기본 사용법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;변수에 불린 값 할당하기&lt;/h4&gt;
&lt;pre class=&quot;clean&quot;&gt;&lt;code&gt;# 불린 값을 변수에 저장
is_sunny = True      # 날씨가 맑다
is_raining = False   # 비가 오지 않는다

# 자료형 확인
print(type(is_sunny))    # 출력: &amp;lt;class 'bool'&amp;gt;
print(type(is_raining))  # 출력: &amp;lt;class 'bool'&amp;gt;

# 불린 값 출력
print(&quot;오늘 날씨가 맑나요?&quot;, is_sunny)     # 출력: 오늘 날씨가 맑나요? True
print(&quot;비가 오고 있나요?&quot;, is_raining)    # 출력: 비가 오고 있나요? False
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;비교 연산자와 불린 자료형&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교 연산은 항상 불린 값을 반환합니다:&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 숫자 비교
print(5 == 5)    # 출력: True (5와 5는 같다)
print(3 &amp;gt; 7)     # 출력: False (3은 7보다 크지 않다)
print(10 &amp;gt;= 8)   # 출력: True (10은 8보다 크거나 같다)
print(4 != 9)    # 출력: True (4와 9는 다르다)

# 문자열 비교
print(&quot;apple&quot; == &quot;apple&quot;)    # 출력: True
print(&quot;cat&quot; &amp;lt; &quot;dog&quot;)         # 출력: True (알파벳 순서)
print(&quot;Python&quot; != &quot;Java&quot;)   # 출력: True
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자료형의 참과 거짓 판별&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬의 모든 자료형은 불린 맥락에서 참 또는 거짓으로 평가됩니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자료형 참(True)인 경우 거짓(False)인 경우&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;문자열&lt;/td&gt;
&lt;td&gt;&quot;안녕하세요&quot;, &quot;Python&quot;&lt;/td&gt;
&lt;td&gt;&quot;&quot; (빈 문자열)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;리스트&lt;/td&gt;
&lt;td&gt;[1, 2, 3], [&quot;a&quot;, &quot;b&quot;]&lt;/td&gt;
&lt;td&gt;[] (빈 리스트)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;튜플&lt;/td&gt;
&lt;td&gt;(1, 2), (&quot;x&quot;, &quot;y&quot;)&lt;/td&gt;
&lt;td&gt;() (빈 튜플)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;딕셔너리&lt;/td&gt;
&lt;td&gt;{&quot;name&quot;: &quot;김철수&quot;}&lt;/td&gt;
&lt;td&gt;{} (빈 딕셔너리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;집합&lt;/td&gt;
&lt;td&gt;{1, 2, 3}&lt;/td&gt;
&lt;td&gt;set() (빈 집합)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;숫자&lt;/td&gt;
&lt;td&gt;1, -5, 3.14, 100&lt;/td&gt;
&lt;td&gt;0, 0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;특수값&lt;/td&gt;
&lt;td&gt;모든 객체&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;bool() 함수로 참/거짓 확인하기&lt;/h4&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;# 문자열의 참/거짓
print(bool(&quot;파이썬&quot;))        # 출력: True
print(bool(&quot;&quot;))            # 출력: False

# 리스트의 참/거짓
print(bool([1, 2, 3]))     # 출력: True
print(bool([]))            # 출력: False

# 숫자의 참/거짓
print(bool(42))            # 출력: True
print(bool(0))             # 출력: False
print(bool(-5))            # 출력: True

# 딕셔너리의 참/거짓
print(bool({&quot;이름&quot;: &quot;홍길동&quot;}))  # 출력: True
print(bool({}))              # 출력: False

# None의 참/거짓
print(bool(None))          # 출력: False
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;논리 연산자 활용하기&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;and, or, not 연산자&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# and 연산자 (둘 다 참일 때만 True)
print(True and True)       # 출력: True
print(True and False)      # 출력: False
print(False and True)      # 출력: False
print(False and False)     # 출력: False

# or 연산자 (하나라도 참이면 True)
print(True or True)        # 출력: True
print(True or False)       # 출력: True
print(False or True)       # 출력: True
print(False or False)      # 출력: False

# not 연산자 (참/거짓을 뒤바꿈)
print(not True)            # 출력: False
print(not False)           # 출력: True
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실제 상황에서의 논리 연산&lt;/h4&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 학생 성적 관리 시스템
score = 85
attendance = 90

# 합격 조건: 성적 80점 이상이고 출석률 80% 이상
is_passed = (score &amp;gt;= 80) and (attendance &amp;gt;= 80)
print(f&quot;합격 여부: {is_passed}&quot;)  # 출력: 합격 여부: True

# 재시험 대상: 성적이 60점 미만이거나 출석률이 70% 미만
needs_retest = (score &amp;lt; 60) or (attendance &amp;lt; 70)
print(f&quot;재시험 필요: {needs_retest}&quot;)  # 출력: 재시험 필요: False

# 우수학생: 성적이 90점 이상이 아니다 (부정)
is_not_excellent = not (score &amp;gt;= 90)
print(f&quot;우수학생이 아님: {is_not_excellent}&quot;)  # 출력: 우수학생이 아님: True
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;조건문에서의 불린 활용&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본 if 문 활용&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 날씨에 따른 옷차림 추천 시스템
temperature = 25
is_raining = False
is_sunny = True

print(&quot;=== 오늘의 옷차림 추천 ===&quot;)

if temperature &amp;gt; 30:
    print(&quot;반팔과 반바지를 입으세요.&quot;)
elif temperature &amp;gt; 20:
    print(&quot;긴팔 셔츠가 적당합니다.&quot;)
else:
    print(&quot;따뜻한 옷을 입으세요.&quot;)

if is_raining:
    print(&quot;우산을 챙기세요!&quot;)
else:
    print(&quot;우산은 필요 없습니다.&quot;)

if is_sunny:
    print(&quot;선글라스를 착용하세요.&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;자료형의 참/거짓을 이용한 조건문&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 사용자 입력 검증 시스템
user_name = input(&quot;이름을 입력하세요: &quot;)
user_age = input(&quot;나이를 입력하세요: &quot;)

# 빈 문자열은 False로 평가됨
if user_name:  # user_name이 비어있지 않으면 True
    print(f&quot;안녕하세요, {user_name}님!&quot;)
else:
    print(&quot;이름을 입력해주세요.&quot;)

if user_age:
    try:
        age = int(user_age)
        if age &amp;gt;= 18:
            print(&quot;성인입니다.&quot;)
        else:
            print(&quot;미성년자입니다.&quot;)
    except ValueError:
        print(&quot;올바른 숫자를 입력해주세요.&quot;)
else:
    print(&quot;나이를 입력해주세요.&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;반복문에서의 불린 활용&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;while 문과 불린&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 간단한 수 맞추기 게임
import random

# 1부터 10 사이의 랜덤한 숫자 생성
secret_number = random.randint(1, 10)
attempts = 0
max_attempts = 3

print(&quot;=== 숫자 맞추기 게임 ===&quot;)
print(&quot;1부터 10 사이의 숫자를 맞춰보세요!&quot;)
print(f&quot;기회는 {max_attempts}번입니다.&quot;)

while attempts &amp;lt; max_attempts:
    try:
        guess = int(input(f&quot;시도 {attempts + 1}: 숫자를 입력하세요: &quot;))
        attempts += 1
        
        if guess == secret_number:
            print(f&quot;정답입니다! {attempts}번 만에 맞추셨네요!&quot;)
            break
        elif guess &amp;lt; secret_number:
            print(&quot;더 큰 숫자입니다.&quot;)
        else:
            print(&quot;더 작은 숫자입니다.&quot;)
            
        if attempts == max_attempts:
            print(f&quot;게임 종료! 정답은 {secret_number}였습니다.&quot;)
            
    except ValueError:
        print(&quot;올바른 숫자를 입력해주세요.&quot;)
        attempts -= 1  # 잘못된 입력은 기회에서 제외
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;리스트와 불린을 이용한 데이터 처리&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 학생 성적 관리 시스템
students = [
    {&quot;이름&quot;: &quot;김철수&quot;, &quot;점수&quot;: 85, &quot;출석&quot;: True},
    {&quot;이름&quot;: &quot;이영희&quot;, &quot;점수&quot;: 92, &quot;출석&quot;: True},
    {&quot;이름&quot;: &quot;박민수&quot;, &quot;점수&quot;: 78, &quot;출석&quot;: False},
    {&quot;이름&quot;: &quot;최수정&quot;, &quot;점수&quot;: 95, &quot;출석&quot;: True},
    {&quot;이름&quot;: &quot;장호현&quot;, &quot;점수&quot;: 67, &quot;출석&quot;: True}
]

print(&quot;=== 학생 성적 분석 ===&quot;)

# 모든 학생 정보를 처리
for student in students:
    name = student[&quot;이름&quot;]
    score = student[&quot;점수&quot;]
    attendance = student[&quot;출석&quot;]
    
    # 합격 조건: 점수 80점 이상이고 출석
    is_passed = (score &amp;gt;= 80) and attendance
    
    # 우수학생: 점수 90점 이상이고 출석
    is_excellent = (score &amp;gt;= 90) and attendance
    
    print(f&quot;{name}: {score}점, 출석({attendance})&quot;)
    
    if is_excellent:
        print(&quot;  &amp;rarr; 우수학생입니다!  &quot;)
    elif is_passed:
        print(&quot;  &amp;rarr; 합격입니다! ✅&quot;)
    else:
        if not attendance:
            print(&quot;  &amp;rarr; 출석 부족으로 불합격 ❌&quot;)
        else:
            print(&quot;  &amp;rarr; 점수 부족으로 불합격 ❌&quot;)
    print()

# 통계 계산
total_students = len(students)
passed_students = sum(1 for s in students if (s[&quot;점수&quot;] &amp;gt;= 80) and s[&quot;출석&quot;])
excellent_students = sum(1 for s in students if (s[&quot;점수&quot;] &amp;gt;= 90) and s[&quot;출석&quot;])

print(&quot;=== 통계 ===&quot;)
print(f&quot;전체 학생 수: {total_students}명&quot;)
print(f&quot;합격자 수: {passed_students}명 ({passed_students/total_students*100:.1f}%)&quot;)
print(f&quot;우수학생 수: {excellent_students}명 ({excellent_students/total_students*100:.1f}%)&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;고급 불린 활용 - 텍스트 어드벤처 게임&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 텍스트 기반 어드벤처 게임
import random

class Player:
    def __init__(self, name):
        self.name = name
        self.health = 100
        self.has_sword = False
        self.has_key = False
        self.has_treasure = False
    
    def is_alive(self):
        &quot;&quot;&quot;플레이어가 살아있는지 확인&quot;&quot;&quot;
        return self.health &amp;gt; 0
    
    def can_fight(self):
        &quot;&quot;&quot;전투 가능 여부 확인&quot;&quot;&quot;
        return self.is_alive() and self.has_sword
    
    def can_open_door(self):
        &quot;&quot;&quot;문을 열 수 있는지 확인&quot;&quot;&quot;
        return self.has_key
    
    def is_winner(self):
        &quot;&quot;&quot;게임에서 승리했는지 확인&quot;&quot;&quot;
        return self.has_treasure and self.is_alive()

def play_adventure_game():
    print(&quot;=== 보물 찾기 어드벤처 ===&quot;)
    player_name = input(&quot;당신의 이름을 입력하세요: &quot;)
    
    # 이름이 비어있으면 기본 이름 사용
    if not player_name:  # 빈 문자열은 False
        player_name = &quot;모험가&quot;
    
    player = Player(player_name)
    print(f&quot;\n안녕하세요, {player.name}님! 모험을 시작합니다.&quot;)
    
    # 게임 메인 루프
    while player.is_alive() and not player.is_winner():
        print(f&quot;\n현재 상태: HP {player.health}&quot;)
        print(&quot;1. 숲 탐험&quot;)
        print(&quot;2. 동굴 입구&quot;)
        print(&quot;3. 상태 확인&quot;)
        print(&quot;4. 게임 종료&quot;)
        
        choice = input(&quot;선택하세요 (1-4): &quot;)
        
        if choice == &quot;1&quot;:
            explore_forest(player)
        elif choice == &quot;2&quot;:
            enter_cave(player)
        elif choice == &quot;3&quot;:
            show_status(player)
        elif choice == &quot;4&quot;:
            print(&quot;게임을 종료합니다.&quot;)
            break
        else:
            print(&quot;올바른 선택을 입력해주세요.&quot;)
    
    # 게임 결과 출력
    if player.is_winner():
        print(f&quot;\n  축하합니다! {player.name}님이 보물을 찾아 승리했습니다!&quot;)
    elif not player.is_alive():
        print(f&quot;\n  {player.name}님이 쓰러졌습니다. 게임 오버!&quot;)

def explore_forest(player):
    &quot;&quot;&quot;숲 탐험 함수&quot;&quot;&quot;
    print(&quot;\n  숲을 탐험합니다...&quot;)
    
    # 랜덤 이벤트 발생
    event = random.randint(1, 3)
    
    if event == 1:
        print(&quot;반짝이는 검을 발견했습니다!&quot;)
        if not player.has_sword:  # 검이 없을 때만
            player.has_sword = True
            print(&quot;검을 획득했습니다! 이제 몬스터와 싸울 수 있습니다.&quot;)
        else:
            print(&quot;이미 검을 가지고 있습니다.&quot;)
    
    elif event == 2:
        print(&quot;야생 늑대가 나타났습니다!&quot;)
        if player.can_fight():  # 검이 있고 살아있으면
            fight_result = random.choice([True, False])
            if fight_result:
                print(&quot;늑대를 물리쳤습니다!&quot;)
            else:
                print(&quot;늑대에게 공격당했습니다!&quot;)
                player.health -= 30
        else:
            print(&quot;무기가 없어서 도망쳤습니다!&quot;)
            player.health -= 20
    
    else:
        print(&quot;아무것도 찾지 못했습니다.&quot;)

def enter_cave(player):
    &quot;&quot;&quot;동굴 입구 함수&quot;&quot;&quot;
    print(&quot;\n ️ 동굴 입구에 도착했습니다...&quot;)
    
    if not player.has_key:
        print(&quot;열쇠가 없어서 문이 열리지 않습니다.&quot;)
        print(&quot;숲에서 열쇠를 찾아보세요!&quot;)
        
        # 가끔 열쇠를 발견할 수 있음
        if random.randint(1, 3) == 1:
            print(&quot;잠깐! 문 앞에서 열쇠를 발견했습니다!&quot;)
            player.has_key = True
    
    if player.can_open_door():  # 열쇠가 있으면
        print(&quot;문을 열고 동굴에 들어갑니다...&quot;)
        
        # 보물 발견 확률
        treasure_found = random.choice([True, False])
        
        if treasure_found:
            print(&quot;  보물 상자를 발견했습니다!&quot;)
            player.has_treasure = True
        else:
            print(&quot;동굴이 비어있습니다...&quot;)
            # 가끔 몬스터 등장
            if random.randint(1, 2) == 1:
                print(&quot;동굴 안에서 박쥐 떼가 공격합니다!&quot;)
                player.health -= 15

def show_status(player):
    &quot;&quot;&quot;플레이어 상태 출력&quot;&quot;&quot;
    print(f&quot;\n=== {player.name}의 상태 ===&quot;)
    print(f&quot;체력: {player.health}/100&quot;)
    print(f&quot;검 보유: {'✅' if player.has_sword else '❌'}&quot;)
    print(f&quot;열쇠 보유: {'✅' if player.has_key else '❌'}&quot;)
    print(f&quot;보물 보유: {'✅' if player.has_treasure else '❌'}&quot;)
    
    # 상태에 따른 조언
    if not player.is_alive():
        print(&quot;⚠️ 위험! 체력이 부족합니다!&quot;)
    elif player.can_fight() and player.can_open_door():
        print(&quot;  모든 준비가 완료되었습니다!&quot;)
    elif not player.has_sword:
        print(&quot;  팁: 숲에서 검을 찾아보세요.&quot;)
    elif not player.has_key:
        print(&quot;  팁: 동굴 문을 열 열쇠가 필요합니다.&quot;)

# 게임 실행
if __name__ == &quot;__main__&quot;:
    play_adventure_game()
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;불린 자료형 활용 팁&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 플래그 변수 활용&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 프로그램 상태를 관리하는 플래그 변수들
is_logged_in = False      # 로그인 상태
is_admin = False          # 관리자 권한
has_permission = False    # 접근 권한
is_debug_mode = True      # 디버그 모드

# 상태에 따른 동작 제어
if is_logged_in and has_permission:
    print(&quot;데이터에 접근할 수 있습니다.&quot;)
elif is_logged_in:
    print(&quot;권한이 부족합니다.&quot;)
else:
    print(&quot;먼저 로그인해주세요.&quot;)

if is_debug_mode:
    print(&quot;디버그 정보: 현재 사용자 상태 확인됨&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 조건 체이닝&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 여러 조건을 연결하여 복잡한 로직 구현
age = 25
has_license = True
has_car = True
has_insurance = False

# 운전 가능 여부 판단
can_drive = (
    age &amp;gt;= 18 and           # 성인이고
    has_license and         # 면허가 있고  
    has_car and             # 차가 있고
    has_insurance           # 보험이 있어야 함
)

print(f&quot;운전 가능 여부: {can_drive}&quot;)

# 각 조건별 안내 메시지
if not (age &amp;gt;= 18):
    print(&quot;18세 이상이어야 합니다.&quot;)
elif not has_license:
    print(&quot;운전면허증이 필요합니다.&quot;)
elif not has_car:
    print(&quot;차량이 필요합니다.&quot;)
elif not has_insurance:
    print(&quot;자동차 보험이 필요합니다.&quot;)
else:
    print(&quot;모든 조건을 만족합니다!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불린 자료형은 파이썬 프로그래밍의 핵심 요소입니다. 조건문, 반복문, 논리 연산 등 프로그램의 흐름을 제어하는 모든 곳에서 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 포인트&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;True와 False는 대소문자를 정확히 지켜야 함&lt;/li&gt;
&lt;li&gt;모든 자료형은 불린 맥락에서 참/거짓으로 평가됨&lt;/li&gt;
&lt;li&gt;빈 컨테이너([], {}, &quot;&quot;)와 0, None은 거짓으로 평가됨&lt;/li&gt;
&lt;li&gt;논리 연산자(and, or, not)를 활용하여 복잡한 조건 구현 가능&lt;/li&gt;
&lt;li&gt;플래그 변수를 통해 프로그램 상태를 효과적으로 관리 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 불린 자료형의 특성을 잘 이해하고 활용하면, 더욱 논리적이고 효율적인 파이썬 프로그램을 작성할 수 있습니다.&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/12</guid>
      <comments>https://umjam33.tistory.com/entry/7-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B6%88%EB%A6%B0Boolean-%EC%9E%90%EB%A3%8C%ED%98%95%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EA%B3%B5%EB%B6%80%ED%95%98%EA%B8%B0#entry12comment</comments>
      <pubDate>Mon, 26 May 2025 22:49:58 +0900</pubDate>
    </item>
    <item>
      <title>6. 파이썬 집합(SET) 자료형. 여러 예제로 깊게 이해하기.</title>
      <link>https://umjam33.tistory.com/entry/6-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A7%91%ED%95%A9SET-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%97%AC%EB%9F%AC-%EC%98%88%EC%A0%9C%EB%A1%9C-%EA%B9%8A%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-집합-set-자료형.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rrPa5/btsObEnv3pB/UHf6TsKThezmiK91ZaoDcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rrPa5/btsObEnv3pB/UHf6TsKThezmiK91ZaoDcK/img.png&quot; data-alt=&quot;파이썬-집합-set-자료형&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rrPa5/btsObEnv3pB/UHf6TsKThezmiK91ZaoDcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrrPa5%2FbtsObEnv3pB%2FUHf6TsKThezmiK91ZaoDcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-집합-set-자료형.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-집합-set-자료형&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;파이썬 집합(Set) 자료형 완전 정복 가이드&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;집합(Set)은 수학의 집합 개념을 프로그래밍으로 구현한 자료형입니다. 중복된 데이터를 자동으로 제거하고, 집합 연산을 효율적으로 처리할 수 있어 데이터 분석과 알고리즘 문제 해결에 필수적인 도구입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Set 자료형 생성 방법&lt;/li&gt;
&lt;li&gt;Set의 핵심 특성&lt;/li&gt;
&lt;li&gt;집합 연산 (교집합, 합집합, 차집합, 대칭차집합)&lt;/li&gt;
&lt;li&gt;Set 메서드와 활용법&lt;/li&gt;
&lt;li&gt;실전 예제와 게임 구현&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. Set 자료형 생성 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본 생성 방법&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 리스트를 이용한 Set 생성
numbers = set([10, 20, 30, 40, 50])
print(numbers)  # {10, 20, 30, 40, 50}

# 문자열을 이용한 Set 생성
letters = set(&quot;Python&quot;)
print(letters)  # {'P', 'y', 't', 'h', 'o', 'n'}

# 중괄호를 이용한 직접 생성
fruits = {&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;}
print(fruits)  # {'apple', 'banana', 'cherry'}

# 빈 Set 생성 (주의: {}는 딕셔너리!)
empty_set = set()
print(type(empty_set))  # &amp;lt;class 'set'&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;다양한 데이터 타입으로 Set 생성&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;lsl&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 튜플을 이용한 Set 생성
coordinates = set([(1, 2), (3, 4), (5, 6)])
print(coordinates)  # {(1, 2), (3, 4), (5, 6)}

# 혼합 데이터 타입 Set
mixed_set = {1, &quot;hello&quot;, 3.14, True}
print(mixed_set)  # {1, 3.14, 'hello'}  # True는 1과 같아서 제거됨&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Set의 핵심 특성&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;특성 1: 중복 제거 (Uniqueness)&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 중복된 값이 자동으로 제거됨
duplicate_numbers = [7, 2, 9, 2, 7, 5, 9]
unique_numbers = set(duplicate_numbers)
print(f&quot;원본 리스트: {duplicate_numbers}&quot;)
print(f&quot;중복 제거된 Set: {unique_numbers}&quot;)

# 실용적인 중복 제거 예제: 학생 명단 정리
student_list = [&quot;김철수&quot;, &quot;박영희&quot;, &quot;이민수&quot;, &quot;김철수&quot;, &quot;박영희&quot;, &quot;최호진&quot;]
unique_students = list(set(student_list))
print(f&quot;중복 제거된 학생 명단: {unique_students}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;특성 2: 순서가 없음 (Unordered)&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# Set은 순서가 없어서 인덱싱 불가
game_scores = {85, 92, 78, 95, 88}
print(game_scores)  # 순서가 매번 다를 수 있음

# 인덱싱을 위해서는 리스트나 튜플로 변환 필요
score_list = list(game_scores)
print(f&quot;첫 번째 점수: {score_list[0]}&quot;)
print(f&quot;정렬된 점수: {sorted(score_list)}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 집합 연산 완전 정복&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;교집합 (Intersection) - 공통 원소 찾기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 두 게임의 공통 플레이어 찾기
game_a_players = {&quot;철수&quot;, &quot;영희&quot;, &quot;민수&quot;, &quot;호진&quot;, &quot;수진&quot;}
game_b_players = {&quot;영희&quot;, &quot;민수&quot;, &quot;지은&quot;, &quot;태호&quot;, &quot;수진&quot;}

# 방법 1: &amp;amp; 연산자 사용
common_players_1 = game_a_players &amp;amp; game_b_players
print(f&quot;공통 플레이어 (&amp;amp;): {common_players_1}&quot;)

# 방법 2: intersection() 메서드 사용
common_players_2 = game_a_players.intersection(game_b_players)
print(f&quot;공통 플레이어 (intersection): {common_players_2}&quot;)

# 여러 집합의 교집합
game_c_players = {&quot;민수&quot;, &quot;수진&quot;, &quot;현우&quot;, &quot;보라&quot;}
all_common = game_a_players &amp;amp; game_b_players &amp;amp; game_c_players
print(f&quot;세 게임 모두 참여한 플레이어: {all_common}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;합집합 (Union) - 모든 원소 합치기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 전체 참가자 명단 만들기
all_participants_1 = game_a_players | game_b_players
print(f&quot;전체 참가자 (|): {all_participants_1}&quot;)

all_participants_2 = game_a_players.union(game_b_players)
print(f&quot;전체 참가자 (union): {all_participants_2}&quot;)

# 여러 집합의 합집합
total_players = game_a_players.union(game_b_players, game_c_players)
print(f&quot;모든 게임 참가자: {total_players}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;차집합 (Difference) - 한쪽에만 있는 원소&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 게임 A에만 참여한 플레이어
only_game_a = game_a_players - game_b_players
print(f&quot;게임 A 전용 플레이어 (-): {only_game_a}&quot;)

only_game_a_2 = game_a_players.difference(game_b_players)
print(f&quot;게임 A 전용 플레이어 (difference): {only_game_a_2}&quot;)

# 게임 B에만 참여한 플레이어
only_game_b = game_b_players - game_a_players
print(f&quot;게임 B 전용 플레이어: {only_game_b}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;대칭차집합 (Symmetric Difference) - 공통이 아닌 원소&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 둘 중 하나의 게임에만 참여한 플레이어
exclusive_players_1 = game_a_players ^ game_b_players
print(f&quot;한 게임에만 참여 (^): {exclusive_players_1}&quot;)

exclusive_players_2 = game_a_players.symmetric_difference(game_b_players)
print(f&quot;한 게임에만 참여 (symmetric_difference): {exclusive_players_2}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;집합 관계 확인 메서드&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 부분집합과 상위집합 확인
vip_members = {&quot;철수&quot;, &quot;영희&quot;}
all_members = {&quot;철수&quot;, &quot;영희&quot;, &quot;민수&quot;, &quot;호진&quot;, &quot;수진&quot;}

print(f&quot;VIP가 전체의 부분집합인가? {vip_members.issubset(all_members)}&quot;)
print(f&quot;전체가 VIP의 상위집합인가? {all_members.issuperset(vip_members)}&quot;)

# 서로소 집합 확인 (공통 원소가 없는지)
group_x = {&quot;A&quot;, &quot;B&quot;, &quot;C&quot;}
group_y = {&quot;D&quot;, &quot;E&quot;, &quot;F&quot;}
print(f&quot;두 그룹이 서로소인가? {group_x.isdisjoint(group_y)}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. Set 메서드와 활용법&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;원소 추가하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 단일 원소 추가 - add()
shopping_cart = {&quot;우유&quot;, &quot;빵&quot;, &quot;계란&quot;}
shopping_cart.add(&quot;치즈&quot;)
print(f&quot;장바구니: {shopping_cart}&quot;)

# 여러 원소 추가 - update()
shopping_cart.update([&quot;사과&quot;, &quot;바나나&quot;, &quot;오렌지&quot;])
print(f&quot;과일 추가 후: {shopping_cart}&quot;)

# 다른 Set과 합치기
essential_items = {&quot;쌀&quot;, &quot;김치&quot;, &quot;라면&quot;}
shopping_cart.update(essential_items)
print(f&quot;필수품 추가 후: {shopping_cart}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;원소 제거하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;inventory = {&quot;컴퓨터&quot;, &quot;마우스&quot;, &quot;키보드&quot;, &quot;모니터&quot;, &quot;스피커&quot;}

# remove() - 없으면 오류 발생
inventory.remove(&quot;스피커&quot;)
print(f&quot;스피커 제거 후: {inventory}&quot;)

# discard() - 없어도 오류 없음
inventory.discard(&quot;웹캠&quot;)  # 없는 항목이지만 오류 없음
inventory.discard(&quot;마우스&quot;)
print(f&quot;마우스 제거 후: {inventory}&quot;)

# pop() - 임의의 원소 제거 후 반환
removed_item = inventory.pop()
print(f&quot;제거된 항목: {removed_item}&quot;)
print(f&quot;남은 인벤토리: {inventory}&quot;)

# clear() - 모든 원소 제거
backup_inventory = inventory.copy()
inventory.clear()
print(f&quot;초기화된 인벤토리: {inventory}&quot;)
print(f&quot;백업된 인벤토리: {backup_inventory}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 실전 예제와 게임 구현&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 1: 로또 번호 생성기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;import random

def generate_lotto_numbers():
    &quot;&quot;&quot;중복 없는 로또 번호 6개를 생성하는 함수&quot;&quot;&quot;
    lotto_set = set()
    
    # Set의 크기가 6이 될 때까지 반복
    while len(lotto_set) &amp;lt; 6:
        number = random.randint(1, 45)
        lotto_set.add(number)  # Set이므로 중복은 자동으로 제거됨
    
    return sorted(list(lotto_set))

# 로또 번호 5세트 생성
print(&quot;=== 로또 번호 생성기 ===&quot;)
for i in range(5):
    numbers = generate_lotto_numbers()
    print(f&quot;{i+1}세트: {numbers}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 2: 단어 게임 - 글자 맞추기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def word_guessing_game():
    &quot;&quot;&quot;사용자가 단어의 글자를 맞추는 게임&quot;&quot;&quot;
    secret_word = &quot;PYTHON&quot;
    secret_letters = set(secret_word.lower())
    guessed_letters = set()
    max_attempts = 10
    attempts = 0
    
    print(&quot;=== 글자 맞추기 게임 ===&quot;)
    print(f&quot;단어는 {len(secret_word)}글자입니다.&quot;)
    print(f&quot;최대 {max_attempts}번의 기회가 있습니다.&quot;)
    
    while attempts &amp;lt; max_attempts:
        # 현재 상태 표시
        display_word = &quot;&quot;
        for letter in secret_word.lower():
            if letter in guessed_letters:
                display_word += letter.upper() + &quot; &quot;
            else:
                display_word += &quot;_ &quot;
        
        print(f&quot;\n현재 상태: {display_word}&quot;)
        print(f&quot;추측한 글자: {sorted(list(guessed_letters))}&quot;)
        print(f&quot;남은 기회: {max_attempts - attempts}&quot;)
        
        # 모든 글자를 맞췄는지 확인
        if secret_letters.issubset(guessed_letters):
            print(f&quot;\n축하합니다! 단어는 '{secret_word}'였습니다!&quot;)
            break
        
        # 사용자 입력
        guess = input(&quot;글자를 입력하세요: &quot;).lower()
        
        if len(guess) != 1 or not guess.isalpha():
            print(&quot;한 글자만 입력해주세요!&quot;)
            continue
            
        if guess in guessed_letters:
            print(&quot;이미 추측한 글자입니다!&quot;)
            continue
        
        guessed_letters.add(guess)
        attempts += 1
        
        if guess in secret_letters:
            print(&quot;정답입니다!&quot;)
        else:
            print(&quot;틀렸습니다!&quot;)
    
    else:
        print(f&quot;\n게임 오버! 정답은 '{secret_word}'였습니다.&quot;)

# 게임 실행 (주석 해제하여 실행)
# word_guessing_game()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 3: 친구 추천 시스템&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def recommend_friends(user_friends, all_users_friends):
    &quot;&quot;&quot;공통 친구를 기반으로 친구를 추천하는 시스템&quot;&quot;&quot;
    user_name = input(&quot;사용자 이름을 입력하세요: &quot;)
    
    if user_name not in all_users_friends:
        print(&quot;사용자를 찾을 수 없습니다.&quot;)
        return
    
    my_friends = all_users_friends[user_name]
    recommendations = {}
    
    # 모든 다른 사용자들과 공통 친구 수 계산
    for other_user, other_friends in all_users_friends.items():
        if other_user != user_name and other_user not in my_friends:
            # 공통 친구 찾기 (교집합)
            common_friends = my_friends &amp;amp; other_friends
            if common_friends:  # 공통 친구가 있다면
                recommendations[other_user] = common_friends
    
    # 추천 결과 출력
    if recommendations:
        print(f&quot;\n{user_name}님을 위한 친구 추천:&quot;)
        for recommended_user, common in recommendations.items():
            print(f&quot;- {recommended_user} (공통 친구: {', '.join(common)})&quot;)
    else:
        print(&quot;추천할 친구가 없습니다.&quot;)

# 사용자별 친구 목록 (실제로는 데이터베이스에서 가져올 것)
friends_database = {
    &quot;철수&quot;: {&quot;영희&quot;, &quot;민수&quot;, &quot;호진&quot;},
    &quot;영희&quot;: {&quot;철수&quot;, &quot;수진&quot;, &quot;지은&quot;},
    &quot;민수&quot;: {&quot;철수&quot;, &quot;태호&quot;, &quot;보라&quot;},
    &quot;호진&quot;: {&quot;철수&quot;, &quot;현우&quot;},
    &quot;수진&quot;: {&quot;영희&quot;, &quot;지은&quot;, &quot;태호&quot;},
    &quot;지은&quot;: {&quot;영희&quot;, &quot;수진&quot;},
    &quot;태호&quot;: {&quot;민수&quot;, &quot;수진&quot;, &quot;현우&quot;},
    &quot;보라&quot;: {&quot;민수&quot;},
    &quot;현우&quot;: {&quot;호진&quot;, &quot;태호&quot;}
}

print(&quot;=== 친구 추천 시스템 ===&quot;)
recommend_friends(friends_database, friends_database)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 4: 재고 관리 시스템&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;class InventoryManager:
    &quot;&quot;&quot;Set을 활용한 간단한 재고 관리 시스템&quot;&quot;&quot;
    
    def __init__(self):
        self.warehouse_a = set()
        self.warehouse_b = set()
        self.reserved_items = set()
    
    def add_items(self, warehouse, items):
        &quot;&quot;&quot;창고에 상품 추가&quot;&quot;&quot;
        if warehouse == 'A':
            self.warehouse_a.update(items)
        elif warehouse == 'B':
            self.warehouse_b.update(items)
        print(f&quot;창고 {warehouse}에 상품 추가 완료: {items}&quot;)
    
    def reserve_items(self, items):
        &quot;&quot;&quot;상품 예약&quot;&quot;&quot;
        available_items = self.warehouse_a | self.warehouse_b
        reservable = set(items) &amp;amp; available_items
        
        if reservable == set(items):
            self.reserved_items.update(items)
            print(f&quot;예약 완료: {items}&quot;)
        else:
            unavailable = set(items) - available_items
            print(f&quot;예약 실패 - 재고 없음: {unavailable}&quot;)
    
    def get_status(self):
        &quot;&quot;&quot;재고 현황 조회&quot;&quot;&quot;
        print(&quot;\n=== 재고 현황 ===&quot;)
        print(f&quot;창고 A: {self.warehouse_a}&quot;)
        print(f&quot;창고 B: {self.warehouse_b}&quot;)
        print(f&quot;예약된 상품: {self.reserved_items}&quot;)
        
        # 각 창고 전용 상품
        only_a = self.warehouse_a - self.warehouse_b
        only_b = self.warehouse_b - self.warehouse_a
        common_items = self.warehouse_a &amp;amp; self.warehouse_b
        
        print(f&quot;창고 A 전용: {only_a}&quot;)
        print(f&quot;창고 B 전용: {only_b}&quot;)
        print(f&quot;공통 재고: {common_items}&quot;)
        
        # 예약 가능한 상품
        available = (self.warehouse_a | self.warehouse_b) - self.reserved_items
        print(f&quot;예약 가능: {available}&quot;)

# 재고 관리 시스템 사용 예제
inventory = InventoryManager()

# 창고에 상품 추가
inventory.add_items('A', [&quot;노트북&quot;, &quot;마우스&quot;, &quot;키보드&quot;, &quot;모니터&quot;])
inventory.add_items('B', [&quot;마우스&quot;, &quot;스피커&quot;, &quot;웹캠&quot;, &quot;모니터&quot;])

# 현황 확인
inventory.get_status()

# 상품 예약
inventory.reserve_items([&quot;노트북&quot;, &quot;스피커&quot;])
inventory.reserve_items([&quot;태블릿&quot;])  # 없는 상품

# 최종 현황
inventory.get_status()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정리 테이블&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연산/메서드기호설명예제&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;교집합&lt;/td&gt;
&lt;td&gt;&amp;amp; 또는 intersection()&lt;/td&gt;
&lt;td&gt;공통 원소&lt;/td&gt;
&lt;td&gt;{1,2,3} &amp;amp; {2,3,4} &amp;rarr; {2,3}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;합집합&lt;/td&gt;
&lt;td&gt;`&lt;/td&gt;
&lt;td&gt;또는union()`&lt;/td&gt;
&lt;td&gt;모든 원소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;차집합&lt;/td&gt;
&lt;td&gt;- 또는 difference()&lt;/td&gt;
&lt;td&gt;한쪽에만 있는 원소&lt;/td&gt;
&lt;td&gt;{1,2,3} - {2,3,4} &amp;rarr; {1}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대칭차집합&lt;/td&gt;
&lt;td&gt;^ 또는 symmetric_difference()&lt;/td&gt;
&lt;td&gt;공통이 아닌 원소&lt;/td&gt;
&lt;td&gt;{1,2,3} ^ {2,3,4} &amp;rarr; {1,4}&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원소 추가&lt;/td&gt;
&lt;td&gt;add()&lt;/td&gt;
&lt;td&gt;단일 원소 추가&lt;/td&gt;
&lt;td&gt;s.add(5)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;여러 원소 추가&lt;/td&gt;
&lt;td&gt;update()&lt;/td&gt;
&lt;td&gt;여러 원소 추가&lt;/td&gt;
&lt;td&gt;s.update([4,5,6])&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;원소 제거&lt;/td&gt;
&lt;td&gt;remove()&lt;/td&gt;
&lt;td&gt;없으면 오류&lt;/td&gt;
&lt;td&gt;s.remove(3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;안전한 제거&lt;/td&gt;
&lt;td&gt;discard()&lt;/td&gt;
&lt;td&gt;없어도 오류 없음&lt;/td&gt;
&lt;td&gt;s.discard(3)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Set 자료형은 데이터의 중복을 제거하고 집합 연산을 효율적으로 처리할 수 있는 강력한 도구입니다. 특히 데이터 분석, 알고리즘 문제 해결, 그리고 실제 업무에서 매우 유용하게 활용할 수 있습니다.&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/11</guid>
      <comments>https://umjam33.tistory.com/entry/6-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A7%91%ED%95%A9SET-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%97%AC%EB%9F%AC-%EC%98%88%EC%A0%9C%EB%A1%9C-%EA%B9%8A%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0#entry11comment</comments>
      <pubDate>Sun, 25 May 2025 00:47:53 +0900</pubDate>
    </item>
    <item>
      <title>5. 파이썬 딕셔너리 초보부터 중수까지 완벽한 예제로 공부하자.</title>
      <link>https://umjam33.tistory.com/entry/5-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%94%95%EC%85%94%EB%84%88%EB%A6%AC-%EC%B4%88%EB%B3%B4%EB%B6%80%ED%84%B0-%EC%A4%91%EC%88%98%EA%B9%8C%EC%A7%80-%EC%99%84%EB%B2%BD%ED%95%9C-%EC%98%88%EC%A0%9C%EB%A1%9C-%EA%B3%B5%EB%B6%80%ED%95%98%EC%9E%90</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-딕셔너리-초보부터-중수까지-예제로 공부하자.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhuqld/btsObamVWH9/ufaVdzIyeJe7yk7dDZ6dJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhuqld/btsObamVWH9/ufaVdzIyeJe7yk7dDZ6dJ0/img.png&quot; data-alt=&quot;파이썬-딕셔너리-초보부터-중수까지-예제로 공부하자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhuqld/btsObamVWH9/ufaVdzIyeJe7yk7dDZ6dJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhuqld%2FbtsObamVWH9%2FufaVdzIyeJe7yk7dDZ6dJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-딕셔너리-초보부터-중수까지-예제로 공부하자.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-딕셔너리-초보부터-중수까지-예제로 공부하자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리란 무엇인가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬의 딕셔너리(Dictionary)는 실생활의 사전과 같은 개념입니다. 영어 사전에서 'apple'이라는 단어를 찾으면 '사과'라는 뜻을 얻는 것처럼, 파이썬 딕셔너리에서는 '키(Key)'를 통해 '값(Value)'을 찾을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리는 다른 프로그래밍 언어에서 '해시맵(HashMap)', '연관배열(Associative Array)' 등으로 불리기도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리의 핵심 특징&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
특징&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 설명&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 예시
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;키-값 쌍&lt;/td&gt;
&lt;td&gt;각 데이터는 키와 값의 조합으로 저장&lt;/td&gt;
&lt;td&gt;'name': '김철수'&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;순서 없음&lt;/td&gt;
&lt;td&gt;데이터 저장 순서가 중요하지 않음&lt;/td&gt;
&lt;td&gt;삽입 순서와 출력 순서가 다를 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;키의 유일성&lt;/td&gt;
&lt;td&gt;같은 키는 중복될 수 없음&lt;/td&gt;
&lt;td&gt;'age' 키는 딕셔너리에 하나만 존재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;빠른 검색&lt;/td&gt;
&lt;td&gt;키를 통한 직접 접근으로 빠른 데이터 검색&lt;/td&gt;
&lt;td&gt;O(1) 시간 복잡도&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리 생성하기&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본 생성 방법&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 빈 딕셔너리 생성
empty_dict = {}
print(empty_dict)  # {}

# 기본 딕셔너리 생성
student = {'name': '이영희', 'age': 20, 'major': '컴퓨터과학'}
print(student)  # {'name': '이영희', 'age': 20, 'major': '컴퓨터과학'}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;다양한 데이터 타입을 값으로 사용하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;php&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 다양한 데이터 타입을 값으로 사용
mixed_dict = {
    'name': '박민수',           # 문자열
    'age': 25,                 # 정수
    'height': 175.5,           # 실수
    'hobbies': ['독서', '영화감상', '게임'],  # 리스트
    'is_student': True,        # 불린
    'address': {               # 중첩 딕셔너리
        'city': '서울',
        'district': '강남구'
    }
}
print(mixed_dict)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;다양한 키 타입 사용하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 정수를 키로 사용
score_dict = {1: '우수', 2: '보통', 3: '미흡'}
print(score_dict[1])  # 우수

# 튜플을 키로 사용 (불변 객체만 키로 사용 가능)
coordinate_dict = {(0, 0): '원점', (1, 1): '대각선', (2, 3): '임의점'}
print(coordinate_dict[(0, 0)])  # 원점&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리 데이터 추가 및 수정&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;새로운 키-값 쌍 추가하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;prolog&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 기본 딕셔너리
person = {'name': '홍길동'}
print(&quot;초기 상태:&quot;, person)

# 새로운 데이터 추가
person['age'] = 30
person['job'] = '개발자'
person['skills'] = ['Python', 'JavaScript', 'Java']

print(&quot;데이터 추가 후:&quot;, person)
# {'name': '홍길동', 'age': 30, 'job': '개발자', 'skills': ['Python', 'JavaScript', 'Java']}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기존 값 수정하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 기존 값 수정
person['age'] = 31  # 나이 수정
person['skills'].append('React')  # 리스트에 새 항목 추가

print(&quot;수정 후:&quot;, person)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리 데이터 삭제하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;del 키워드 사용하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 삭제 예제용 딕셔너리
game_stats = {
    'player': '게이머123',
    'level': 45,
    'score': 95000,
    'items': ['검', '방패', '포션'],
    'location': '던전'
}

print(&quot;삭제 전:&quot;, game_stats)

# 특정 키-값 쌍 삭제
del game_stats['location']
print(&quot;location 삭제 후:&quot;, game_stats)

# 리스트 값의 특정 요소 삭제
del game_stats['items'][0]  # '검' 삭제
print(&quot;아이템 삭제 후:&quot;, game_stats)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리 값 조회하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;대괄호 표기법 vs get() 메서드&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 테스트용 딕셔너리
user_info = {
    'username': 'user123',
    'email': 'user@example.com',
    'is_active': True
}

# 대괄호 표기법으로 값 조회
print(&quot;사용자명:&quot;, user_info['username'])
print(&quot;이메일:&quot;, user_info['email'])

# get() 메서드로 값 조회
print(&quot;사용자명:&quot;, user_info.get('username'))
print(&quot;전화번호:&quot;, user_info.get('phone'))  # None 반환 (키가 없음)
print(&quot;전화번호:&quot;, user_info.get('phone', '등록되지 않음'))  # 기본값 설정

# 존재하지 않는 키에 대한 오류 처리 예제
try:
    print(user_info['phone'])  # KeyError 발생
except KeyError:
    print(&quot;해당 키가 존재하지 않습니다.&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리 사용 시 주의사항&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;키의 중복과 데이터 타입 제한&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 키 중복 시 마지막 값만 유지됨
duplicate_keys = {'name': '첫번째', 'age': 20, 'name': '두번째'}
print(duplicate_keys)  # {'name': '두번째', 'age': 20}

# 변경 가능한 객체는 키로 사용 불가
try:
    invalid_dict = {[1, 2, 3]: 'value'}  # 리스트는 키로 사용 불가
except TypeError as e:
    print(&quot;오류:&quot;, e)

# 튜플은 키로 사용 가능 (불변 객체)
valid_dict = {(1, 2, 3): 'tuple_key'}
print(valid_dict)  # {(1, 2, 3): 'tuple_key'}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리 주요 메서드들&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;keys(), values(), items() 메서드&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;vim&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 예제용 딕셔너리
restaurant = {
    'name': '맛있는집',
    'cuisine': '한식',
    'rating': 4.5,
    'price_range': '중간',
    'location': '명동'
}

# 모든 키 조회
print(&quot;키 목록:&quot;, list(restaurant.keys()))
# ['name', 'cuisine', 'rating', 'price_range', 'location']

# 모든 값 조회
print(&quot;값 목록:&quot;, list(restaurant.values()))
# ['맛있는집', '한식', 4.5, '중간', '명동']

# 키-값 쌍 조회
print(&quot;키-값 쌍:&quot;)
for key, value in restaurant.items():
    print(f&quot;{key}: {value}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;clear() 메서드와 in 연산자&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 테스트용 딕셔너리 복사
test_dict = restaurant.copy()

# 특정 키의 존재 여부 확인
print(&quot;'name' 키 존재:&quot;, 'name' in test_dict)      # True
print(&quot;'address' 키 존재:&quot;, 'address' in test_dict)  # False

# 모든 데이터 삭제
test_dict.clear()
print(&quot;삭제 후:&quot;, test_dict)  # {}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실전 예제: 학생 성적 관리 시스템&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 딕셔너리를 활용한 실제적인 예제를 만들어보겠습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 학생 성적 관리 시스템
class StudentGradeManager:
    def __init__(self):
        # 학생 정보를 저장할 딕셔너리
        self.students = {}
    
    def add_student(self, student_id, name):
        &quot;&quot;&quot;새 학생 추가&quot;&quot;&quot;
        if student_id in self.students:
            print(f&quot;학번 {student_id}는 이미 존재합니다.&quot;)
            return
        
        self.students[student_id] = {
            'name': name,
            'subjects': {},
            'average': 0.0
        }
        print(f&quot;학생 {name}(학번: {student_id})이 추가되었습니다.&quot;)
    
    def add_grade(self, student_id, subject, score):
        &quot;&quot;&quot;성적 추가&quot;&quot;&quot;
        if student_id not in self.students:
            print(f&quot;학번 {student_id}를 찾을 수 없습니다.&quot;)
            return
        
        # 성적 추가
        self.students[student_id]['subjects'][subject] = score
        
        # 평균 점수 계산
        subjects = self.students[student_id]['subjects']
        if subjects:
            average = sum(subjects.values()) / len(subjects)
            self.students[student_id]['average'] = round(average, 2)
        
        print(f&quot;{self.students[student_id]['name']}의 {subject} 성적({score}점)이 추가되었습니다.&quot;)
    
    def get_student_info(self, student_id):
        &quot;&quot;&quot;학생 정보 조회&quot;&quot;&quot;
        student = self.students.get(student_id)
        if not student:
            print(f&quot;학번 {student_id}를 찾을 수 없습니다.&quot;)
            return
        
        print(f&quot;\n=== {student['name']}(학번: {student_id}) 정보 ===&quot;)
        print(f&quot;평균 점수: {student['average']}점&quot;)
        print(&quot;과목별 성적:&quot;)
        for subject, score in student['subjects'].items():
            print(f&quot;  - {subject}: {score}점&quot;)
    
    def get_top_students(self, count=3):
        &quot;&quot;&quot;상위 학생 조회&quot;&quot;&quot;
        if not self.students:
            print(&quot;등록된 학생이 없습니다.&quot;)
            return
        
        # 평균 점수로 정렬
        sorted_students = sorted(
            self.students.items(),
            key=lambda x: x[1]['average'],
            reverse=True
        )
        
        print(f&quot;\n=== 상위 {count}명 학생 ===&quot;)
        for i, (student_id, info) in enumerate(sorted_students[:count], 1):
            print(f&quot;{i}위: {info['name']}(학번: {student_id}) - 평균 {info['average']}점&quot;)
    
    def display_all_students(self):
        &quot;&quot;&quot;전체 학생 목록 표시&quot;&quot;&quot;
        if not self.students:
            print(&quot;등록된 학생이 없습니다.&quot;)
            return
        
        print(&quot;\n=== 전체 학생 목록 ===&quot;)
        for student_id, info in self.students.items():
            print(f&quot;학번: {student_id}, 이름: {info['name']}, 평균: {info['average']}점&quot;)

# 시스템 사용 예제
def main():
    # 성적 관리 시스템 인스턴스 생성
    manager = StudentGradeManager()
    
    # 학생 추가
    manager.add_student(&quot;2023001&quot;, &quot;김철수&quot;)
    manager.add_student(&quot;2023002&quot;, &quot;이영희&quot;)
    manager.add_student(&quot;2023003&quot;, &quot;박민수&quot;)
    
    # 성적 추가
    # 김철수 성적
    manager.add_grade(&quot;2023001&quot;, &quot;수학&quot;, 95)
    manager.add_grade(&quot;2023001&quot;, &quot;영어&quot;, 88)
    manager.add_grade(&quot;2023001&quot;, &quot;과학&quot;, 92)
    
    # 이영희 성적
    manager.add_grade(&quot;2023002&quot;, &quot;수학&quot;, 98)
    manager.add_grade(&quot;2023002&quot;, &quot;영어&quot;, 94)
    manager.add_grade(&quot;2023002&quot;, &quot;과학&quot;, 96)
    
    # 박민수 성적
    manager.add_grade(&quot;2023003&quot;, &quot;수학&quot;, 82)
    manager.add_grade(&quot;2023003&quot;, &quot;영어&quot;, 79)
    manager.add_grade(&quot;2023003&quot;, &quot;과학&quot;, 85)
    
    # 정보 조회
    manager.get_student_info(&quot;2023001&quot;)
    manager.get_student_info(&quot;2023002&quot;)
    
    # 전체 학생 목록
    manager.display_all_students()
    
    # 상위 학생 조회
    manager.get_top_students()

# 프로그램 실행
if __name__ == &quot;__main__&quot;:
    main()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실전 예제: 간단한 단어 암기 게임&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리를 활용한 또 다른 재미있는 예제입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;import random

class VocabularyGame:
    def __init__(self):
        # 영어 단어와 한국어 뜻을 저장하는 딕셔너리
        self.vocabulary = {
            'apple': '사과',
            'banana': '바나나',
            'computer': '컴퓨터',
            'dictionary': '사전',
            'elephant': '코끼리',
            'fantastic': '환상적인',
            'guitar': '기타',
            'happiness': '행복',
            'internet': '인터넷',
            'journey': '여행',
            'knowledge': '지식',
            'language': '언어',
            'mountain': '산',
            'nature': '자연',
            'ocean': '바다',
            'python': '파이썬',
            'question': '질문',
            'rainbow': '무지개',
            'sunshine': '햇빛',
            'technology': '기술'
        }
        
        # 게임 통계
        self.stats = {
            'total_questions': 0,
            'correct_answers': 0,
            'wrong_answers': 0,
            'accuracy': 0.0
        }
    
    def add_word(self, english, korean):
        &quot;&quot;&quot;새 단어 추가&quot;&quot;&quot;
        if english.lower() in self.vocabulary:
            print(f&quot;'{english}' 단어는 이미 존재합니다.&quot;)
            return False
        
        self.vocabulary[english.lower()] = korean
        print(f&quot;새 단어 '{english}: {korean}'이 추가되었습니다.&quot;)
        return True
    
    def remove_word(self, english):
        &quot;&quot;&quot;단어 삭제&quot;&quot;&quot;
        if english.lower() in self.vocabulary:
            korean = self.vocabulary.pop(english.lower())
            print(f&quot;단어 '{english}: {korean}'이 삭제되었습니다.&quot;)
            return True
        else:
            print(f&quot;'{english}' 단어를 찾을 수 없습니다.&quot;)
            return False
    
    def quiz_mode(self, num_questions=5):
        &quot;&quot;&quot;퀴즈 모드&quot;&quot;&quot;
        if len(self.vocabulary) &amp;lt; num_questions:
            num_questions = len(self.vocabulary)
        
        # 랜덤하게 단어 선택
        selected_words = random.sample(list(self.vocabulary.items()), num_questions)
        
        print(f&quot;\n=== 단어 퀴즈 시작! ({num_questions}문제) ===&quot;)
        print(&quot;영어 단어의 한국어 뜻을 입력하세요.&quot;)
        print(&quot;종료하려면 'quit'를 입력하세요.\n&quot;)
        
        correct = 0
        
        for i, (english, korean) in enumerate(selected_words, 1):
            print(f&quot;문제 {i}: {english}&quot;)
            user_answer = input(&quot;답: &quot;).strip()
            
            if user_answer.lower() == 'quit':
                print(&quot;퀴즈를 종료합니다.&quot;)
                break
            
            if user_answer == korean:
                print(&quot;정답입니다! ✓&quot;)
                correct += 1
                self.stats['correct_answers'] += 1
            else:
                print(f&quot;틀렸습니다. 정답: {korean} ✗&quot;)
                self.stats['wrong_answers'] += 1
            
            self.stats['total_questions'] += 1
            print(&quot;-&quot; * 30)
        
        # 결과 출력
        if self.stats['total_questions'] &amp;gt; 0:
            accuracy = (correct / (i if 'i' in locals() else num_questions)) * 100
            print(f&quot;\n이번 퀴즈 결과: {correct}/{i if 'i' in locals() else num_questions}문제 정답 ({accuracy:.1f}%)&quot;)
            self.update_stats()
    
    def update_stats(self):
        &quot;&quot;&quot;통계 업데이트&quot;&quot;&quot;
        if self.stats['total_questions'] &amp;gt; 0:
            self.stats['accuracy'] = (self.stats['correct_answers'] / self.stats['total_questions']) * 100
    
    def show_stats(self):
        &quot;&quot;&quot;통계 표시&quot;&quot;&quot;
        print(&quot;\n=== 게임 통계 ===&quot;)
        print(f&quot;총 문제 수: {self.stats['total_questions']}&quot;)
        print(f&quot;정답 수: {self.stats['correct_answers']}&quot;)
        print(f&quot;오답 수: {self.stats['wrong_answers']}&quot;)
        print(f&quot;정답률: {self.stats['accuracy']:.1f}%&quot;)
    
    def show_vocabulary(self):
        &quot;&quot;&quot;전체 단어장 표시&quot;&quot;&quot;
        print(&quot;\n=== 전체 단어장 ===&quot;)
        for english, korean in sorted(self.vocabulary.items()):
            print(f&quot;{english} : {korean}&quot;)
        print(f&quot;\n총 {len(self.vocabulary)}개의 단어가 있습니다.&quot;)
    
    def search_word(self, word):
        &quot;&quot;&quot;단어 검색&quot;&quot;&quot;
        word = word.lower()
        if word in self.vocabulary:
            print(f&quot;{word} : {self.vocabulary[word]}&quot;)
        else:
            print(f&quot;'{word}' 단어를 찾을 수 없습니다.&quot;)
            # 비슷한 단어 제안
            suggestions = [w for w in self.vocabulary.keys() if word in w or w in word]
            if suggestions:
                print(&quot;비슷한 단어들:&quot;)
                for suggestion in suggestions[:3]:  # 최대 3개까지
                    print(f&quot;  - {suggestion} : {self.vocabulary[suggestion]}&quot;)

def run_vocabulary_game():
    &quot;&quot;&quot;게임 실행 함수&quot;&quot;&quot;
    game = VocabularyGame()
    
    while True:
        print(&quot;\n=== 영어 단어 암기 게임 ===&quot;)
        print(&quot;1. 퀴즈 시작&quot;)
        print(&quot;2. 단어장 보기&quot;)
        print(&quot;3. 단어 검색&quot;)
        print(&quot;4. 단어 추가&quot;)
        print(&quot;5. 단어 삭제&quot;)
        print(&quot;6. 통계 보기&quot;)
        print(&quot;7. 종료&quot;)
        
        choice = input(&quot;\n선택하세요 (1-7): &quot;).strip()
        
        if choice == '1':
            try:
                num = int(input(&quot;몇 문제를 풀까요? (기본값: 5): &quot;) or &quot;5&quot;)
                game.quiz_mode(num)
            except ValueError:
                print(&quot;올바른 숫자를 입력하세요.&quot;)
        
        elif choice == '2':
            game.show_vocabulary()
        
        elif choice == '3':
            word = input(&quot;검색할 단어를 입력하세요: &quot;).strip()
            if word:
                game.search_word(word)
        
        elif choice == '4':
            english = input(&quot;영어 단어: &quot;).strip()
            korean = input(&quot;한국어 뜻: &quot;).strip()
            if english and korean:
                game.add_word(english, korean)
        
        elif choice == '5':
            english = input(&quot;삭제할 영어 단어: &quot;).strip()
            if english:
                game.remove_word(english)
        
        elif choice == '6':
            game.show_stats()
        
        elif choice == '7':
            print(&quot;게임을 종료합니다. 공부하느라 수고하셨습니다!&quot;)
            break
        
        else:
            print(&quot;올바른 번호를 선택하세요.&quot;)

# 게임 실행
if __name__ == &quot;__main__&quot;:
    run_vocabulary_game()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리 활용 팁&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 딕셔너리 컴프리헨션&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 리스트에서 딕셔너리 생성
numbers = [1, 2, 3, 4, 5]
squared_dict = {num: num**2 for num in numbers}
print(squared_dict)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 조건부 딕셔너리 컴프리헨션
even_squared = {num: num**2 for num in numbers if num % 2 == 0}
print(even_squared)  # {2: 4, 4: 16}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 딕셔너리 병합&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 두 딕셔너리 병합 (Python 3.9+)
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged = dict1 | dict2
print(merged)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

# update() 메서드 사용
dict1.update(dict2)
print(dict1)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 중첩 딕셔너리 활용&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;prolog&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 중첩 딕셔너리로 복잡한 데이터 구조 표현
company = {
    'employees': {
        'dev_team': {
            'manager': '김개발',
            'members': ['이코딩', '박프로그래밍', '최알고리즘']
        },
        'design_team': {
            'manager': '윤디자인',
            'members': ['한그래픽', '조UI']
        }
    },
    'projects': {
        'project_a': {
            'status': '진행중',
            'deadline': '2024-12-31',
            'team': 'dev_team'
        }
    }
}

# 중첩 딕셔너리 접근
print(company['employees']['dev_team']['manager'])  # 김개발&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리는 파이썬에서 가장 유용하고 강력한 자료구조 중 하나입니다. 키-값 쌍으로 데이터를 저장하고 빠르게 검색할 수 있어서 다양한 프로그래밍 상황에서 활용됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;딕셔너리 사용 시 기억할 점들&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;키는 불변 객체만 사용 가능&lt;/b&gt;: 문자열, 숫자, 튜플은 가능하지만 리스트는 불가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;키는 중복될 수 없음&lt;/b&gt;: 같은 키가 있으면 마지막 값으로 덮어쓰기됨&lt;/li&gt;
&lt;li&gt;&lt;b&gt;get() 메서드 활용&lt;/b&gt;: 존재하지 않는 키에 안전하게 접근할 때 유용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;in 연산자&lt;/b&gt;: 키의 존재 여부를 확인할 때 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리를 마스터하면 파이썬 프로그래밍에서 데이터를 효율적으로 관리하고 처리할 수 있습니다. 위의 예제들을 직접 실행해보면서 딕셔너리의 다양한 기능들을 익혀보세요!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/10</guid>
      <comments>https://umjam33.tistory.com/entry/5-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%94%95%EC%85%94%EB%84%88%EB%A6%AC-%EC%B4%88%EB%B3%B4%EB%B6%80%ED%84%B0-%EC%A4%91%EC%88%98%EA%B9%8C%EC%A7%80-%EC%99%84%EB%B2%BD%ED%95%9C-%EC%98%88%EC%A0%9C%EB%A1%9C-%EA%B3%B5%EB%B6%80%ED%95%98%EC%9E%90#entry10comment</comments>
      <pubDate>Sun, 25 May 2025 00:37:52 +0900</pubDate>
    </item>
    <item>
      <title>4. 파이썬 튜플 기초부터 고급 활용까지</title>
      <link>https://umjam33.tistory.com/entry/4-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%8A%9C%ED%94%8C-%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EA%B3%A0%EA%B8%89-%ED%99%9C%EC%9A%A9%EA%B9%8C%EC%A7%80</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-튜플-기초부터-고급-활용까지.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VxEwA/btsOatU2gAu/IH040TdQQLaUB3iq9kwVAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VxEwA/btsOatU2gAu/IH040TdQQLaUB3iq9kwVAk/img.png&quot; data-alt=&quot;파이썬-튜플-기초부터-고급-활용까지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VxEwA/btsOatU2gAu/IH040TdQQLaUB3iq9kwVAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVxEwA%2FbtsOatU2gAu%2FIH040TdQQLaUB3iq9kwVAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-튜플-기초부터-고급-활용까지.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-튜플-기초부터-고급-활용까지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 배울 내용은 네번째 파이썬 튜플 기초부터 고급 활용까지입니다. 튜플(Tuple)은 파이썬에서 제공하는 데이터 타입 중 하나로, 여러 개의 값을 하나의 변수에 저장할 수 있는 순서가 있는 자료구조입니다. 리스트와 매우 유사하지만 몇 가지 중요한 차이점이 있습니다. 예제를 충분히 활용하고 튜플에 대해서 상세히 배워보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;튜플과 리스트의 주요 차이점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 특성리스트(List)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 튜플(Tuple)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;표기법&lt;/td&gt;
&lt;td&gt;대괄호 [ ]&lt;/td&gt;
&lt;td&gt;소괄호 ( )&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;값 변경&lt;/td&gt;
&lt;td&gt;가능 (mutable)&lt;/td&gt;
&lt;td&gt;불가능 (immutable)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;요소 추가/삭제&lt;/td&gt;
&lt;td&gt;가능&lt;/td&gt;
&lt;td&gt;불가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;성능&lt;/td&gt;
&lt;td&gt;상대적으로 느림&lt;/td&gt;
&lt;td&gt;상대적으로 빠름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사용 목적&lt;/td&gt;
&lt;td&gt;변경 가능한 데이터&lt;/td&gt;
&lt;td&gt;변경 불가능한 데이터&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;튜플 생성하는 다양한 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜플은 여러 가지 방법으로 만들 수 있습니다:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 빈 튜플 생성
empty_tuple = ()
print(&quot;빈 튜플:&quot;, empty_tuple)  # 출력: ()

# 하나의 요소를 가진 튜플 (반드시 쉼표 필요!)
single_tuple = (5,)
print(&quot;단일 요소 튜플:&quot;, single_tuple)  # 출력: (5,)

# 여러 요소를 가진 튜플
multi_tuple = (10, 20, 30)
print(&quot;다중 요소 튜플:&quot;, multi_tuple)  # 출력: (10, 20, 30)

# 괄호 없이 튜플 생성 (패킹)
no_paren_tuple = 1, 2, 3
print(&quot;괄호 없는 튜플:&quot;, no_paren_tuple)  # 출력: (1, 2, 3)

# 다양한 데이터 타입을 포함한 튜플
mixed_tuple = ('파이썬', 42, 3.14, True)
print(&quot;혼합 타입 튜플:&quot;, mixed_tuple)  # 출력: ('파이썬', 42, 3.14, True)

# 중첩 튜플 (튜플 안에 튜플)
nested_tuple = ('외부', ('내부1', '내부2'))
print(&quot;중첩 튜플:&quot;, nested_tuple)  # 출력: ('외부', ('내부1', '내부2'))&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;튜플의 불변성(Immutability) 이해하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜플의 가장 중요한 특징은 한 번 생성되면 그 내용을 변경할 수 없다는 것입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;튜플 요소 삭제 시도&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 튜플 생성
coordinates = (10, 20, 30)
print(&quot;원본 튜플:&quot;, coordinates)

# 요소 삭제 시도 - 오류 발생!
try:
    del coordinates[0]
except TypeError as e:
    print(&quot;삭제 오류:&quot;, e)
    # 출력: 삭제 오류: 'tuple' object doesn't support item deletion&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;튜플 요소 변경 시도&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 튜플 생성
student_info = ('김철수', 20, '컴퓨터공학과')
print(&quot;학생 정보:&quot;, student_info)

# 요소 변경 시도 - 오류 발생!
try:
    student_info[1] = 21  # 나이 변경 시도
except TypeError as e:
    print(&quot;변경 오류:&quot;, e)
    # 출력: 변경 오류: 'tuple' object does not support item assignment&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;튜플 조작하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜플은 변경할 수 없지만, 다양한 방법으로 데이터를 조작하고 활용할 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;인덱싱과 슬라이싱&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 과일 튜플 생성
fruits = ('사과', '바나나', '오렌지', '포도', '딸기')

# 인덱싱 - 특정 위치의 요소 접근
print(&quot;첫 번째 과일:&quot;, fruits[0])    # 출력: 사과
print(&quot;마지막 과일:&quot;, fruits[-1])    # 출력: 딸기
print(&quot;세 번째 과일:&quot;, fruits[2])    # 출력: 오렌지

# 슬라이싱 - 여러 요소 추출
print(&quot;처음 3개 과일:&quot;, fruits[:3])        # 출력: ('사과', '바나나', '오렌지')
print(&quot;마지막 2개 과일:&quot;, fruits[-2:])     # 출력: ('포도', '딸기')
print(&quot;중간 과일들:&quot;, fruits[1:4])         # 출력: ('바나나', '오렌지', '포도')
print(&quot;역순으로:&quot;, fruits[::-1])          # 출력: ('딸기', '포도', '오렌지', '바나나', '사과')&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;튜플 연산&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 두 개의 튜플 생성
numbers1 = (1, 2, 3)
numbers2 = (4, 5, 6)

# 튜플 더하기 (연결)
combined = numbers1 + numbers2
print(&quot;합친 튜플:&quot;, combined)  # 출력: (1, 2, 3, 4, 5, 6)

# 튜플 곱하기 (반복)
repeated = numbers1 * 3
print(&quot;반복된 튜플:&quot;, repeated)  # 출력: (1, 2, 3, 1, 2, 3, 1, 2, 3)

# 튜플 길이 구하기
print(&quot;튜플 길이:&quot;, len(combined))  # 출력: 6

# 튜플 내 요소 개수 세기
count_tuple = (1, 2, 3, 2, 2, 4)
print(&quot;2의 개수:&quot;, count_tuple.count(2))  # 출력: 3

# 특정 요소의 인덱스 찾기
print(&quot;3의 위치:&quot;, count_tuple.index(3))  # 출력: 2&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실용적인 튜플 활용 예제&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;좌표 시스템 구현&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;ruby&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;class Point:
    def __init__(self, x, y):
        # 좌표는 변경되지 않는 값이므로 튜플 사용
        self.coordinates = (x, y)
    
    def get_x(self):
        return self.coordinates[0]
    
    def get_y(self):
        return self.coordinates[1]
    
    def distance_from_origin(self):
        # 원점에서의 거리 계산
        x, y = self.coordinates  # 튜플 언패킹
        return (x**2 + y**2)**0.5
    
    def __str__(self):
        return f&quot;Point{self.coordinates}&quot;

# 점 생성 및 사용
point1 = Point(3, 4)
point2 = Point(0, 5)

print(f&quot;점1: {point1}&quot;)  # 출력: Point(3, 4)
print(f&quot;점1의 x좌표: {point1.get_x()}&quot;)  # 출력: 3
print(f&quot;점1과 원점의 거리: {point1.distance_from_origin():.2f}&quot;)  # 출력: 5.00&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;학생 성적 관리 시스템&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 학생 정보를 튜플로 저장 (이름, 학번, 성적들)
students = [
    ('김영희', '2023001', (95, 87, 92, 88)),
    ('이철수', '2023002', (78, 82, 85, 90)),
    ('박민수', '2023003', (92, 94, 89, 93)),
    ('정수진', '2023004', (85, 88, 91, 87))
]

def calculate_average(scores):
    &quot;&quot;&quot;성적 튜플을 받아 평균을 계산하는 함수&quot;&quot;&quot;
    return sum(scores) / len(scores)

def get_grade(average):
    &quot;&quot;&quot;평균 점수에 따른 학점 반환&quot;&quot;&quot;
    if average &amp;gt;= 95:
        return 'A+'
    elif average &amp;gt;= 90:
        return 'A'
    elif average &amp;gt;= 85:
        return 'B+'
    elif average &amp;gt;= 80:
        return 'B'
    else:
        return 'C'

# 학생별 성적 분석
print(&quot;=== 학생 성적 분석 ===&quot;)
for student in students:
    name, student_id, scores = student  # 튜플 언패킹
    average = calculate_average(scores)
    grade = get_grade(average)
    
    print(f&quot;이름: {name}&quot;)
    print(f&quot;학번: {student_id}&quot;)
    print(f&quot;성적: {scores}&quot;)
    print(f&quot;평균: {average:.2f}&quot;)
    print(f&quot;학점: {grade}&quot;)
    print(&quot;-&quot; * 30)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;간단한 RPG 게임 데이터 관리&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 게임 캐릭터 스탯을 튜플로 정의 (변경되지 않는 기본 스탯)
character_stats = {
    '전사': (100, 80, 60, 40),    # (체력, 공격력, 방어력, 마법력)
    '마법사': (60, 40, 30, 100),
    '궁수': (80, 70, 50, 50),
    '도적': (70, 90, 40, 30)
}

# 무기 정보도 튜플로 저장 (이름, 공격력 증가, 특수 효과)
weapons = {
    '검': ('기본검', 10, '없음'),
    '지팡이': ('마법지팡이', 5, '마법력 +20'),
    '활': ('엘프활', 15, '명중률 +10'),
    '단검': ('독단검', 12, '독 데미지')
}

def create_character():
    &quot;&quot;&quot;캐릭터 생성 함수&quot;&quot;&quot;
    print(&quot;=== 캐릭터 생성 ===&quot;)
    print(&quot;직업을 선택하세요:&quot;)
    for i, job in enumerate(character_stats.keys(), 1):
        hp, attack, defense, magic = character_stats[job]
        print(f&quot;{i}. {job} - 체력:{hp}, 공격:{attack}, 방어:{defense}, 마법:{magic}&quot;)
    
    while True:
        try:
            choice = int(input(&quot;선택 (1-4): &quot;))
            if 1 &amp;lt;= choice &amp;lt;= 4:
                job = list(character_stats.keys())[choice-1]
                break
            else:
                print(&quot;1-4 사이의 숫자를 입력하세요.&quot;)
        except ValueError:
            print(&quot;숫자를 입력하세요.&quot;)
    
    name = input(&quot;캐릭터 이름을 입력하세요: &quot;)
    
    # 캐릭터 정보를 튜플로 반환
    return (name, job, character_stats[job])

def display_character_info(character):
    &quot;&quot;&quot;캐릭터 정보 출력&quot;&quot;&quot;
    name, job, stats = character
    hp, attack, defense, magic = stats
    
    print(f&quot;\n=== {name}의 정보 ===&quot;)
    print(f&quot;직업: {job}&quot;)
    print(f&quot;체력: {hp}&quot;)
    print(f&quot;공격력: {attack}&quot;)
    print(f&quot;방어력: {defense}&quot;)
    print(f&quot;마법력: {magic}&quot;)

# 게임 실행 예제
if __name__ == &quot;__main__&quot;:
    # 캐릭터 생성
    player = create_character()
    display_character_info(player)
    
    # 무기 선택
    print(&quot;\n=== 무기 선택 ===&quot;)
    for weapon_key, weapon_info in weapons.items():
        weapon_name, attack_bonus, special = weapon_info
        print(f&quot;{weapon_key}: {weapon_name} (공격력 +{attack_bonus}, 특수효과: {special})&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;튜플의 고급 활용&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;함수에서 여러 값 반환&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def get_circle_info(radius):
    &quot;&quot;&quot;원의 반지름을 받아 둘레와 넓이를 튜플로 반환&quot;&quot;&quot;
    import math
    
    circumference = 2 * math.pi * radius
    area = math.pi * radius**2
    
    # 여러 값을 튜플로 반환
    return circumference, area

# 함수 사용
radius = 5
perimeter, area = get_circle_info(radius)  # 튜플 언패킹
print(f&quot;반지름 {radius}인 원의 둘레: {perimeter:.2f}&quot;)
print(f&quot;반지름 {radius}인 원의 넓이: {area:.2f}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터 정렬과 튜플&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 학생 정보 리스트 (이름, 나이, 성적)
students_data = [
    ('김철수', 20, 85),
    ('이영희', 19, 92),
    ('박민수', 21, 78),
    ('정수진', 20, 95)
]

# 성적순으로 정렬 (튜플의 세 번째 요소 기준)
sorted_by_score = sorted(students_data, key=lambda x: x[2], reverse=True)
print(&quot;성적순 정렬:&quot;)
for student in sorted_by_score:
    name, age, score = student
    print(f&quot;{name} (나이: {age}, 성적: {score})&quot;)

print(&quot;\n나이순 정렬:&quot;)
# 나이순으로 정렬
sorted_by_age = sorted(students_data, key=lambda x: x[1])
for student in sorted_by_age:
    name, age, score = student
    print(f&quot;{name} (나이: {age}, 성적: {score})&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;튜플 사용 시 주의사항과 팁&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 단일 요소 튜플 생성 시 주의점&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;gauss&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 잘못된 방법 - 이것은 튜플이 아니라 정수입니다
not_a_tuple = (5)
print(type(not_a_tuple))  # &amp;lt;class 'int'&amp;gt;

# 올바른 방법 - 쉼표를 반드시 추가해야 합니다
single_tuple = (5,)
print(type(single_tuple))  # &amp;lt;class 'tuple'&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 튜플과 리스트 성능 비교&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;import time

# 큰 데이터로 성능 테스트
data_size = 1000000

# 리스트 생성 시간 측정
start_time = time.time()
test_list = [i for i in range(data_size)]
list_creation_time = time.time() - start_time

# 튜플 생성 시간 측정
start_time = time.time()
test_tuple = tuple(i for i in range(data_size))
tuple_creation_time = time.time() - start_time

print(f&quot;리스트 생성 시간: {list_creation_time:.4f}초&quot;)
print(f&quot;튜플 생성 시간: {tuple_creation_time:.4f}초&quot;)
print(f&quot;튜플이 리스트보다 {list_creation_time/tuple_creation_time:.2f}배 빠름&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마무리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜플은 파이썬에서 매우 유용한 데이터 구조입니다. 변경 불가능한 특성 때문에 다음과 같은 상황에서 특히 유용합니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;좌표, 색상값 등 변경되지 않아야 하는 데이터&lt;/li&gt;
&lt;li&gt;함수에서 여러 값을 반환할 때&lt;/li&gt;
&lt;li&gt;딕셔너리의 키로 사용할 때 (리스트는 불가능)&lt;/li&gt;
&lt;li&gt;데이터의 무결성을 보장해야 할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜플을 효과적으로 사용하면 더 안전하고 효율적인 파이썬 프로그램을 작성할 수 있습니다. 리스트와 튜플의 차이점을 명확히 이해하고, 상황에 맞는 적절한 자료구조를 선택하는 것이 중요합니다.&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/9</guid>
      <comments>https://umjam33.tistory.com/entry/4-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%8A%9C%ED%94%8C-%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EA%B3%A0%EA%B8%89-%ED%99%9C%EC%9A%A9%EA%B9%8C%EC%A7%80#entry9comment</comments>
      <pubDate>Fri, 23 May 2025 23:27:41 +0900</pubDate>
    </item>
    <item>
      <title>3. 예제와 함께하는 초보의 파이썬 리스트 완전 정복 가이드</title>
      <link>https://umjam33.tistory.com/entry/%EC%98%88%EC%A0%9C%EC%99%80-%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-%EC%B4%88%EB%B3%B4%EC%9D%98-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%99%84%EC%A0%84-%EC%A0%95%EB%B3%B5-%EA%B0%80%EC%9D%B4%EB%93%9C</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-리스트-완전-정복-가이드.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UdyDj/btsOaZMy1E5/sXYRKhx7lOZ5w8HJ3nN4q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UdyDj/btsOaZMy1E5/sXYRKhx7lOZ5w8HJ3nN4q0/img.png&quot; data-alt=&quot;파이썬-리스트-완전-정복-가이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UdyDj/btsOaZMy1E5/sXYRKhx7lOZ5w8HJ3nN4q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUdyDj%2FbtsOaZMy1E5%2FsXYRKhx7lOZ5w8HJ3nN4q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-리스트-완전-정복-가이드.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-리스트-완전-정복-가이드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트란 무엇인가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 리스트는 여러 개의 데이터를 하나의 변수에 저장할 수 있는 매우 유용한 자료형입니다. 마치 여러 개의 상자를 일렬로 나열해서 각각에 다양한 물건을 넣을 수 있는 것과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트 생성하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트를 만드는 방법은 매우 간단합니다. 대괄호([])를 사용하고 각 요소를 쉼표(,)로 구분하면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 기본적인 리스트 생성
numbers = [2, 4, 6, 8, 10]
print(numbers)  # [2, 4, 6, 8, 10]

# 다양한 형태의 리스트
empty_list = []                      # 빈 리스트
fruits = ['apple', 'banana', 'grape']  # 문자열 리스트
mixed = [1, 'hello', 3.14, True]      # 다양한 자료형 혼합
nested = [1, 2, [3, 4, 5]]           # 중첩 리스트
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 다른 방법으로는 list() 함수를 사용할 수 있습니다:&lt;/p&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;# list() 함수로 빈 리스트 생성
empty_list = list()
print(empty_list)  # []
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트 인덱싱과 슬라이싱&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;인덱싱 기본 사용법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서는 0부터 번호를 매기기 때문에 첫 번째 요소의 인덱스는 0입니다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot;&gt;&lt;code&gt;# 리스트 인덱싱 예제
colors = ['red', 'green', 'blue', 'yellow', 'purple']

print(colors[0])   # red (첫 번째 요소)
print(colors[1])   # green (두 번째 요소)
print(colors[-1])  # purple (마지막 요소)
print(colors[-2])  # yellow (뒤에서 두 번째 요소)

# 리스트 요소들을 이용한 연산
numbers = [10, 20, 30, 40, 50]
print(numbers[0] + numbers[4])  # 10 + 50 = 60
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;중첩 리스트 인덱싱&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트 안에 또 다른 리스트가 있는 경우의 인덱싱 방법입니다.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;# 중첩 리스트 인덱싱
game_board = [
    [1, 2, 3],
    ['X', 'O', 'X'],
    ['A', 'B', 'C']
]

print(game_board[0])     # [1, 2, 3]
print(game_board[1][0])  # X
print(game_board[2][2])  # C

# 더 복잡한 중첩 리스트
complex_list = [1, 2, ['apple', 'banana', ['red', 'yellow']]]
print(complex_list[2][2][0])  # red
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;슬라이싱 활용하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슬라이싱은 리스트의 일부분을 잘라내는 기능입니다.&lt;/p&gt;
&lt;pre class=&quot;prolog&quot;&gt;&lt;code&gt;# 슬라이싱 기본 예제
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

print(alphabet[1:4])   # ['b', 'c', 'd']
print(alphabet[:3])    # ['a', 'b', 'c']
print(alphabet[3:])    # ['d', 'e', 'f', 'g']
print(alphabet[1:6:2]) # ['b', 'd', 'f'] (step 2)
print(alphabet[::-1])  # ['g', 'f', 'e', 'd', 'c', 'b', 'a'] (역순)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트 연산하기&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;리스트 결합하기 (+)&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 리스트 더하기
first_half = [1, 2, 3, 4, 5]
second_half = [6, 7, 8, 9, 10]
complete_list = first_half + second_half
print(complete_list)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 문자열 리스트 결합
greeting = ['Hello']
name = ['World']
message = greeting + name
print(message)  # ['Hello', 'World']
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;리스트 반복하기 (*)&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# 리스트 반복
pattern = ['*', '-']
repeated_pattern = pattern * 5
print(repeated_pattern)  # ['*', '-', '*', '-', '*', '-', '*', '-', '*', '-']

# 초기화에 활용
zeros = [0] * 10
print(zeros)  # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;리스트 길이 구하기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# len() 함수 사용
shopping_list = ['milk', 'bread', 'eggs', 'butter', 'cheese']
print(f&quot;장보기 목록에 {len(shopping_list)}개의 항목이 있습니다.&quot;)
# 장보기 목록에 5개의 항목이 있습니다.
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트 수정과 삭제&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;값 수정하기&lt;/h4&gt;
&lt;pre class=&quot;lsl&quot;&gt;&lt;code&gt;# 리스트 요소 수정
scores = [85, 90, 78, 92, 88]
print(&quot;수정 전:&quot;, scores)

scores[2] = 95  # 세 번째 점수를 95로 변경
print(&quot;수정 후:&quot;, scores)  # [85, 90, 95, 92, 88]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;del을 사용한 삭제&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# del을 사용한 요소 삭제
tasks = ['homework', 'shopping', 'exercise', 'reading', 'cooking']
print(&quot;삭제 전:&quot;, tasks)

del tasks[1]  # 'shopping' 삭제
print(&quot;삭제 후:&quot;, tasks)  # ['homework', 'exercise', 'reading', 'cooking']

# 슬라이싱을 이용한 여러 요소 삭제
del tasks[1:3]  # 'exercise', 'reading' 삭제
print(&quot;최종:&quot;, tasks)  # ['homework', 'cooking']
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트 관련 주요 함수들&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;append() - 요소 추가&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# append() 함수 사용
favorite_movies = ['Avatar', 'Titanic']
favorite_movies.append('Inception')
print(favorite_movies)  # ['Avatar', 'Titanic', 'Inception']

# 리스트도 추가 가능
favorite_movies.append(['Interstellar', 'The Matrix'])
print(favorite_movies)  # ['Avatar', 'Titanic', 'Inception', ['Interstellar', 'The Matrix']]
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;insert() - 특정 위치에 요소 삽입&lt;/h4&gt;
&lt;pre class=&quot;autoit&quot;&gt;&lt;code&gt;# insert() 함수 사용
languages = ['Python', 'Java', 'C++']
languages.insert(1, 'JavaScript')  # 1번 인덱스에 JavaScript 삽입
print(languages)  # ['Python', 'JavaScript', 'Java', 'C++']
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;remove() - 특정 값 제거&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# remove() 함수 사용
colors = ['red', 'blue', 'green', 'blue', 'yellow']
colors.remove('blue')  # 첫 번째 'blue'만 제거
print(colors)  # ['red', 'green', 'blue', 'yellow']
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;pop() - 요소 제거하고 반환&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# pop() 함수 사용
stack = [1, 2, 3, 4, 5]

# 마지막 요소 제거
last_item = stack.pop()
print(f&quot;제거된 요소: {last_item}&quot;)  # 제거된 요소: 5
print(f&quot;남은 리스트: {stack}&quot;)     # 남은 리스트: [1, 2, 3, 4]

# 특정 인덱스 요소 제거
second_item = stack.pop(1)
print(f&quot;제거된 요소: {second_item}&quot;)  # 제거된 요소: 2
print(f&quot;남은 리스트: {stack}&quot;)       # 남은 리스트: [1, 3, 4]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;sort() - 정렬하기&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# sort() 함수 사용
numbers = [64, 25, 12, 22, 11]
numbers.sort()  # 오름차순 정렬
print(numbers)  # [11, 12, 22, 25, 64]

# 내림차순 정렬
numbers.sort(reverse=True)
print(numbers)  # [64, 25, 22, 12, 11]

# 문자열 정렬
names = ['Charlie', 'Alice', 'Bob', 'David']
names.sort()
print(names)  # ['Alice', 'Bob', 'Charlie', 'David']
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;reverse() - 순서 뒤집기&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# reverse() 함수 사용
countdown = [1, 2, 3, 4, 5]
countdown.reverse()
print(countdown)  # [5, 4, 3, 2, 1]
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;count() - 요소 개수 세기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# count() 함수 사용
grades = ['A', 'B', 'A', 'C', 'B', 'A', 'D']
a_count = grades.count('A')
print(f&quot;A 학점의 개수: {a_count}&quot;)  # A 학점의 개수: 3
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;index() - 요소의 위치 찾기&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# index() 함수 사용
animals = ['cat', 'dog', 'rabbit', 'hamster']
dog_position = animals.index('dog')
print(f&quot;강아지는 {dog_position}번 인덱스에 있습니다.&quot;)  # 강아지는 1번 인덱스에 있습니다.
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;extend() - 리스트 확장&lt;/h4&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;# extend() 함수 사용
fruits = ['apple', 'banana']
vegetables = ['carrot', 'lettuce']

fruits.extend(vegetables)
print(fruits)  # ['apple', 'banana', 'carrot', 'lettuce']

# += 연산자와 동일한 효과
fruits += ['tomato', 'cucumber']
print(fruits)  # ['apple', 'banana', 'carrot', 'lettuce', 'tomato', 'cucumber']
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;

&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실전 예제: 간단한 학생 성적 관리 시스템&lt;/h3&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 학생 성적 관리 시스템
class StudentGradeManager:
    def __init__(self):
        self.students = []        # 학생 이름 리스트
        self.grades = []          # 성적 리스트
    
    def add_student(self, name, grade):
        &quot;&quot;&quot;학생과 성적 추가&quot;&quot;&quot;
        self.students.append(name)
        self.grades.append(grade)
        print(f&quot;{name} 학생이 추가되었습니다. (성적: {grade})&quot;)
    
    def remove_student(self, name):
        &quot;&quot;&quot;학생 삭제&quot;&quot;&quot;
        if name in self.students:
            index = self.students.index(name)
            removed_grade = self.grades.pop(index)
            self.students.remove(name)
            print(f&quot;{name} 학생이 삭제되었습니다. (성적: {removed_grade})&quot;)
        else:
            print(f&quot;{name} 학생을 찾을 수 없습니다.&quot;)
    
    def update_grade(self, name, new_grade):
        &quot;&quot;&quot;성적 수정&quot;&quot;&quot;
        if name in self.students:
            index = self.students.index(name)
            old_grade = self.grades[index]
            self.grades[index] = new_grade
            print(f&quot;{name} 학생의 성적이 {old_grade}에서 {new_grade}로 수정되었습니다.&quot;)
        else:
            print(f&quot;{name} 학생을 찾을 수 없습니다.&quot;)
    
    def get_average(self):
        &quot;&quot;&quot;평균 점수 계산&quot;&quot;&quot;
        if self.grades:
            return sum(self.grades) / len(self.grades)
        return 0
    
    def get_top_student(self):
        &quot;&quot;&quot;최고 점수 학생 찾기&quot;&quot;&quot;
        if self.grades:
            max_grade = max(self.grades)
            max_index = self.grades.index(max_grade)
            return self.students[max_index], max_grade
        return None, 0
    
    def display_all(self):
        &quot;&quot;&quot;모든 학생 정보 출력&quot;&quot;&quot;
        print(&quot;\n=== 학생 성적 현황 ===&quot;)
        for i in range(len(self.students)):
            print(f&quot;{self.students[i]}: {self.grades[i]}점&quot;)
        print(f&quot;평균 점수: {self.get_average():.1f}점&quot;)
        
        top_student, top_grade = self.get_top_student()
        if top_student:
            print(f&quot;최고 점수: {top_student} ({top_grade}점)&quot;)

# 사용 예제
manager = StudentGradeManager()

# 학생 추가
manager.add_student(&quot;김철수&quot;, 85)
manager.add_student(&quot;이영희&quot;, 92)
manager.add_student(&quot;박민수&quot;, 78)
manager.add_student(&quot;정소영&quot;, 96)

# 전체 현황 출력
manager.display_all()

# 성적 수정
manager.update_grade(&quot;박민수&quot;, 88)

# 학생 삭제
manager.remove_student(&quot;김철수&quot;)

# 최종 현황 출력
manager.display_all()
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실전 예제: 간단한 숫자 맞추기 게임&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;import random

def number_guessing_game():
    &quot;&quot;&quot;숫자 맞추기 게임&quot;&quot;&quot;
    print(&quot;=== 숫자 맞추기 게임 ===&quot;)
    print(&quot;1부터 100 사이의 숫자를 맞춰보세요!&quot;)
    
    # 게임 설정
    secret_number = random.randint(1, 100)
    guess_history = []  # 추측 기록을 저장할 리스트
    max_attempts = 7
    
    for attempt in range(1, max_attempts + 1):
        print(f&quot;\n시도 {attempt}/{max_attempts}&quot;)
        
        # 이전 추측 기록 표시
        if guess_history:
            print(f&quot;이전 추측: {guess_history}&quot;)
        
        try:
            guess = int(input(&quot;숫자를 입력하세요: &quot;))
            
            # 추측 기록에 추가
            guess_history.append(guess)
            
            if guess == secret_number:
                print(f&quot;\n  축하합니다! {attempt}번 만에 맞췄습니다!&quot;)
                print(f&quot;정답: {secret_number}&quot;)
                print(f&quot;추측 기록: {guess_history}&quot;)
                return
            elif guess &amp;lt; secret_number:
                print(&quot;더 큰 숫자입니다!&quot;)
            else:
                print(&quot;더 작은 숫자입니다!&quot;)
                
        except ValueError:
            print(&quot;올바른 숫자를 입력해주세요!&quot;)
            continue
    
    print(f&quot;\n  게임 오버! 정답은 {secret_number}였습니다.&quot;)
    print(f&quot;당신의 추측 기록: {guess_history}&quot;)

# 게임 실행
number_guessing_game()
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실전 예제: 할일 관리 프로그램&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def todo_manager():
    &quot;&quot;&quot;간단한 할일 관리 프로그램&quot;&quot;&quot;
    todo_list = []  # 할일 목록을 저장할 리스트
    completed = []  # 완료된 할일을 저장할 리스트
    
    while True:
        print(&quot;\n=== 할일 관리 프로그램 ===&quot;)
        print(&quot;1. 할일 추가&quot;)
        print(&quot;2. 할일 목록 보기&quot;) 
        print(&quot;3. 할일 완료 처리&quot;)
        print(&quot;4. 할일 삭제&quot;)
        print(&quot;5. 완료된 할일 보기&quot;)
        print(&quot;6. 통계 보기&quot;)
        print(&quot;0. 종료&quot;)
        
        choice = input(&quot;\n선택하세요: &quot;)
        
        if choice == '1':
            # 할일 추가
            task = input(&quot;추가할 할일을 입력하세요: &quot;)
            if task.strip():  # 빈 문자열이 아닌 경우만
                todo_list.append(task)
                print(f&quot;'{task}'가 할일 목록에 추가되었습니다.&quot;)
            else:
                print(&quot;할일을 입력해주세요.&quot;)
        
        elif choice == '2':
            # 할일 목록 보기
            if todo_list:
                print(&quot;\n  현재 할일 목록:&quot;)
                for i, task in enumerate(todo_list, 1):
                    print(f&quot;{i}. {task}&quot;)
            else:
                print(&quot;할일이 없습니다!&quot;)
        
        elif choice == '3':
            # 할일 완료 처리
            if todo_list:
                print(&quot;\n현재 할일 목록:&quot;)
                for i, task in enumerate(todo_list, 1):
                    print(f&quot;{i}. {task}&quot;)
                
                try:
                    task_num = int(input(&quot;완료할 할일 번호를 입력하세요: &quot;)) - 1
                    if 0 &amp;lt;= task_num &amp;lt; len(todo_list):
                        completed_task = todo_list.pop(task_num)
                        completed.append(completed_task)
                        print(f&quot;'{completed_task}'를 완료했습니다! ✅&quot;)
                    else:
                        print(&quot;올바른 번호를 입력해주세요.&quot;)
                except ValueError:
                    print(&quot;숫자를 입력해주세요.&quot;)
            else:
                print(&quot;완료할 할일이 없습니다.&quot;)
        
        elif choice == '4':
            # 할일 삭제
            if todo_list:
                print(&quot;\n현재 할일 목록:&quot;)
                for i, task in enumerate(todo_list, 1):
                    print(f&quot;{i}. {task}&quot;)
                
                try:
                    task_num = int(input(&quot;삭제할 할일 번호를 입력하세요: &quot;)) - 1
                    if 0 &amp;lt;= task_num &amp;lt; len(todo_list):
                        deleted_task = todo_list.pop(task_num)
                        print(f&quot;'{deleted_task}'가 삭제되었습니다.&quot;)
                    else:
                        print(&quot;올바른 번호를 입력해주세요.&quot;)
                except ValueError:
                    print(&quot;숫자를 입력해주세요.&quot;)
            else:
                print(&quot;삭제할 할일이 없습니다.&quot;)
        
        elif choice == '5':
            # 완료된 할일 보기
            if completed:
                print(&quot;\n✅ 완료된 할일 목록:&quot;)
                for i, task in enumerate(completed, 1):
                    print(f&quot;{i}. {task}&quot;)
            else:
                print(&quot;완료된 할일이 없습니다.&quot;)
        
        elif choice == '6':
            # 통계 보기
            total_tasks = len(todo_list) + len(completed)
            print(f&quot;\n  할일 통계&quot;)
            print(f&quot;전체 할일: {total_tasks}개&quot;)
            print(f&quot;남은 할일: {len(todo_list)}개&quot;)
            print(f&quot;완료된 할일: {len(completed)}개&quot;)
            
            if total_tasks &amp;gt; 0:
                completion_rate = (len(completed) / total_tasks) * 100
                print(f&quot;완료율: {completion_rate:.1f}%&quot;)
        
        elif choice == '0':
            print(&quot;프로그램을 종료합니다.&quot;)
            break
        
        else:
            print(&quot;올바른 선택지를 입력해주세요.&quot;)

# 프로그램 실행
# todo_manager()  # 주석을 해제하고 실행해보세요!
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트 컴프리헨션 (List Comprehension)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트 컴프리헨션은 리스트를 간결하게 생성하는 파이썬의 강력한 기능입니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;# 기본 형태: [표현식 for 항목 in 반복가능객체]

# 1부터 10까지의 제곱수 리스트
squares = [x**2 for x in range(1, 11)]
print(squares)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 짝수만 필터링: [표현식 for 항목 in 반복가능객체 if 조건]
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)  # [4, 16, 36, 64, 100]

# 문자열 리스트 처리
names = ['alice', 'bob', 'charlie', 'diana']
capitalized = [name.capitalize() for name in names]
print(capitalized)  # ['Alice', 'Bob', 'Charlie', 'Diana']

# 중첩 반복문 사용
matrix = [[i*j for j in range(1, 4)] for i in range(1, 4)]
print(matrix)  # [[1, 2, 3], [2, 4, 6], [3, 6, 9]]
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리스트 관련 주요 팁과 주의사항&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;일반적인 오류 예방&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오류 상황 잘못된 예제 올바른 예제&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;정수와 문자열 더하기&lt;/td&gt;
&lt;td&gt;3 + &quot;hello&quot;&lt;/td&gt;
&lt;td&gt;str(3) + &quot;hello&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;존재하지 않는 인덱스&lt;/td&gt;
&lt;td&gt;[1,2,3][5]&lt;/td&gt;
&lt;td&gt;len(list) &amp;gt; 5 먼저 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;빈 리스트에서 pop&lt;/td&gt;
&lt;td&gt;[].pop()&lt;/td&gt;
&lt;td&gt;if list: 조건 확인 후 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;remove시 존재하지 않는 값&lt;/td&gt;
&lt;td&gt;[1,2,3].remove(5)&lt;/td&gt;
&lt;td&gt;if 5 in list: 먼저 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;리스트 복사 주의사항&lt;/h4&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;# 얕은 복사 vs 깊은 복사
original = [1, 2, [3, 4]]

# 얕은 복사 (참조 복사)
shallow_copy = original.copy()
shallow_copy[2][0] = 999
print(original)  # [1, 2, [999, 4]] - 원본도 변경됨!

# 깊은 복사 (완전 복사)
import copy
deep_copy = copy.deepcopy(original)
deep_copy[2][1] = 888
print(original)  # [1, 2, [999, 4]] - 원본 변경 안됨
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;성능 최적화 팁&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;효율적인 리스트 사용법&lt;/h4&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;# 1. 리스트 초기화시 크기 예측 가능하면 미리 할당
# 비효율적
result = []
for i in range(1000):
    result.append(i*2)

# 효율적 (리스트 컴프리헨션)
result = [i*2 for i in range(1000)]

# 2. 앞쪽 요소 삽입/삭제는 비효율적
# 비효율적 (모든 요소를 이동해야 함)
my_list = [1, 2, 3, 4, 5]
my_list.insert(0, 0)  # 맨 앞에 삽입

# 효율적 (뒤쪽에서 작업)
my_list.append(6)  # 맨 뒤에 추가

# 3. 멤버십 테스트는 set이 더 빠름
# 리스트에서 검색 (느림)
large_list = list(range(10000))
if 5000 in large_list:  # O(n) 시간복잡도
    print(&quot;찾았습니다!&quot;)

# 집합에서 검색 (빠름)
large_set = set(range(10000))
if 5000 in large_set:  # O(1) 시간복잡도
    print(&quot;찾았습니다!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;실무에서 자주 사용되는 패턴&lt;/h4&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# 1. 리스트를 청크(chunk)로 나누기
def chunk_list(lst, chunk_size):
    &quot;&quot;&quot;리스트를 지정된 크기의 청크로 나누기&quot;&quot;&quot;
    return [lst[i:i + chunk_size] for i in range(0, len(lst), chunk_size)]

numbers = list(range(1, 21))
chunks = chunk_list(numbers, 5)
print(chunks)  # [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]]

# 2. 리스트의 중복 제거 (순서 유지)
def remove_duplicates(lst):
    &quot;&quot;&quot;순서를 유지하면서 중복 제거&quot;&quot;&quot;
    seen = set()
    result = []
    for item in lst:
        if item not in seen:
            seen.add(item)
            result.append(item)
    return result

data = [1, 2, 2, 3, 1, 4, 3, 5]
unique_data = remove_duplicates(data)
print(unique_data)  # [1, 2, 3, 4, 5]

# 3. 두 리스트 병합 및 정렬
def merge_and_sort(list1, list2):
    &quot;&quot;&quot;두 리스트를 병합하고 정렬&quot;&quot;&quot;
    merged = list1 + list2
    merged.sort()
    return merged

grades1 = [85, 92, 78]
grades2 = [91, 87, 95]
all_grades = merge_and_sort(grades1, grades2)
print(all_grades)  # [78, 85, 87, 91, 92, 95]

# 4. 조건에 따른 리스트 필터링
scores = [45, 78, 92, 67, 83, 56, 94, 71]

# 합격점 이상만 필터링
passing_scores = [score for score in scores if score &amp;gt;= 70]
print(f&quot;합격 점수: {passing_scores}&quot;)  # [78, 92, 83, 94, 71]

# 등급별 분류
def classify_grades(scores):
    &quot;&quot;&quot;점수를 등급별로 분류&quot;&quot;&quot;
    grade_a = [s for s in scores if s &amp;gt;= 90]
    grade_b = [s for s in scores if 80 &amp;lt;= s &amp;lt; 90]
    grade_c = [s for s in scores if 70 &amp;lt;= s &amp;lt; 80]
    grade_f = [s for s in scores if s &amp;lt; 70]
    
    return {
        'A': grade_a,
        'B': grade_b, 
        'C': grade_c,
        'F': grade_f
    }

classified = classify_grades(scores)
for grade, score_list in classified.items():
    print(f&quot;{grade}등급: {score_list}&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 파이썬 리스트의 기본 사용법부터 실무에서 활용할 수 있는 고급 기법까지 살펴보았습니다. 리스트는 파이썬 프로그래밍의 핵심 자료구조이므로, 이러한 기능들을 충분히 연습하고 익숙해지시기 바랍니다. 실제 프로젝트에서 이런 패턴들을 자주 사용하게 될 것입니다!&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/8</guid>
      <comments>https://umjam33.tistory.com/entry/%EC%98%88%EC%A0%9C%EC%99%80-%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-%EC%B4%88%EB%B3%B4%EC%9D%98-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%99%84%EC%A0%84-%EC%A0%95%EB%B3%B5-%EA%B0%80%EC%9D%B4%EB%93%9C#entry8comment</comments>
      <pubDate>Fri, 23 May 2025 23:03:48 +0900</pubDate>
    </item>
    <item>
      <title>2. 예제로 공부하는 파이썬 문자열 완전 정복 가이드 | 한번에 끝내는 문자열.</title>
      <link>https://umjam33.tistory.com/entry/%EC%98%88%EC%A0%9C%EB%A1%9C-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%99%84%EC%A0%84-%EC%A0%95%EB%B3%B5-%EA%B0%80%EC%9D%B4%EB%93%9C-%ED%95%9C%EB%B2%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-%EB%AC%B8%EC%9E%90%EC%97%B4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;예제로-공부하는-파이썬-문자열-완전-정복가이드.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beg6dt/btsN9HxmvIh/FCe4zqL9TC56EcYj6hoRyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beg6dt/btsN9HxmvIh/FCe4zqL9TC56EcYj6hoRyK/img.png&quot; data-alt=&quot;예제로-공부하는-파이썬-문자열-완전-정복가이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beg6dt/btsN9HxmvIh/FCe4zqL9TC56EcYj6hoRyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbeg6dt%2FbtsN9HxmvIh%2FFCe4zqL9TC56EcYj6hoRyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;예제로-공부하는-파이썬-문자열-완전-정복가이드.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;예제로-공부하는-파이썬-문자열-완전-정복가이드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-test-render-count=&quot;2&quot;&gt;
&lt;div data-is-streaming=&quot;false&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파이썬 문자열이란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열(String)은 프로그래밍에서 가장 기본적이면서도 중요한 데이터 타입 중 하나입니다. 간단히 말해서 문자들이 연속적으로 나열된 것을 의미합니다. 예를 들어 &quot;안녕하세요&quot;, &quot;Python Programming&quot;, &quot;12345&quot; 같은 것들이 모두 문자열입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 문자열을 만드는 방법은 총 네 가지가 있습니다. 이렇게 다양한 방법을 제공하는 이유는 각각의 상황에 맞게 사용할 수 있도록 하기 위함입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열을 만드는 네 가지 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 큰따옴표 사용하기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;cmake&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 기본적인 큰따옴표 사용법
message = &quot;안녕하세요, 파이썬 세계에 오신 것을 환영합니다!&quot;
print(message)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 작은따옴표 사용하기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 작은따옴표로 문자열 만들기
greeting = '파이썬은 정말 재미있는 언어입니다'
print(greeting)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 큰따옴표 세 개 연속 사용하기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 여러 줄 문자열을 위한 큰따옴표 세 개
long_text = &quot;&quot;&quot;
파이썬은 간단하면서도 강력한 프로그래밍 언어입니다.
배우기 쉽고 사용하기 편리합니다.
데이터 분석, 웹 개발, 인공지능 등 다양한 분야에서 사용됩니다.
&quot;&quot;&quot;
print(long_text)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 작은따옴표 세 개 연속 사용하기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 작은따옴표 세 개로 여러 줄 문자열 만들기
poem = '''
장미는 빨갛고
제비꽃은 파랗다
파이썬은 멋지고
프로그래밍은 즐겁다
'''
print(poem)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;특수 상황에서의 문자열 처리&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 안에 따옴표 포함하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 프로그래밍을 하다 보면 문자열 안에 따옴표를 포함해야 하는 경우가 자주 발생합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 문자열에 작은따옴표 포함하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;vala&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 올바른 방법: 큰따옴표로 감싸기
restaurant_review = &quot;김씨의 맛집은 정말 훌륭한 곳입니다&quot;
print(restaurant_review)

# 잘못된 방법 (오류 발생)
# wrong_text = '김씨의 맛집은 정말 좋아요'  # SyntaxError 발생!&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 문자열에 큰따옴표 포함하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 올바른 방법: 작은따옴표로 감싸기
famous_quote = '&quot;성공은 1%의 영감과 99%의 노력으로 이루어진다&quot; 라고 에디슨이 말했습니다'
print(famous_quote)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 역슬래시(백슬래시) 사용하기&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 역슬래시를 사용하여 특수문자 처리
movie_title = '영화 &quot;어벤져스&quot;는 정말 재미있어요'
book_title = &quot;책 '해리포터'를 읽어보세요&quot;
print(movie_title)
print(book_title)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이스케이프 문자 완전 정복&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이스케이프 문자는 특별한 의미를 가진 문자 조합입니다. 역슬래시()와 특정 문자를 조합하여 만듭니다.&lt;/p&gt;
이스케이프 코드설명예제
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;\n&lt;/td&gt;
&lt;td&gt;새로운 줄로 이동&lt;/td&gt;
&lt;td&gt;&quot;첫 번째 줄\n두 번째 줄&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\t&lt;/td&gt;
&lt;td&gt;탭 공간 추가&lt;/td&gt;
&lt;td&gt;&quot;이름:\t홍길동&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\&lt;/td&gt;
&lt;td&gt;역슬래시 표시&lt;/td&gt;
&lt;td&gt;&quot;파일 경로: C:\Users\Documents&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;'&lt;/td&gt;
&lt;td&gt;작은따옴표 표시&lt;/td&gt;
&lt;td&gt;'이것은 '특별한' 문자열입니다'&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&quot;&lt;/td&gt;
&lt;td&gt;큰따옴표 표시&lt;/td&gt;
&lt;td&gt;&quot;그는 &quot;안녕하세요&quot;라고 말했습니다&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 다양한 이스케이프 문자 사용 예제
def demonstrate_escape_characters():
    &quot;&quot;&quot;이스케이프 문자들의 사용법을 보여주는 함수&quot;&quot;&quot;
    
    # 줄바꿈 사용
    print(&quot;첫 번째 줄입니다\n두 번째 줄입니다\n세 번째 줄입니다&quot;)
    
    # 탭 사용으로 정렬하기
    print(&quot;이름:\t홍길동&quot;)
    print(&quot;나이:\t25세&quot;)
    print(&quot;직업:\t프로그래머&quot;)
    
    # 따옴표 포함하기
    print(&quot;선생님이 \&quot;열심히 공부하세요\&quot;라고 말씀하셨습니다&quot;)
    print('학생은 \'네, 알겠습니다\'라고 대답했습니다')
    
    # 역슬래시 표시하기
    print(&quot;윈도우 경로: C:\\Program Files\\Python&quot;)

# 함수 실행
demonstrate_escape_characters()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 연산의 마법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬의 가장 매력적인 특징 중 하나는 직관적인 문자열 연산입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 더하기 (연결하기)&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 기본적인 문자열 연결
first_name = &quot;김&quot;
last_name = &quot;철수&quot;
full_name = first_name + last_name
print(&quot;전체 이름:&quot;, full_name)

# 여러 문자열 연결하기
greeting = &quot;안녕하세요, &quot;
name = &quot;파이썬 학습자&quot;
ending = &quot;님!&quot;
complete_message = greeting + name + ending
print(complete_message)

# 숫자와 문자열 연결 (형 변환 필요)
age = 25
message = &quot;저는 &quot; + str(age) + &quot;살입니다&quot;
print(message)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 곱하기 (반복하기)&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 기본적인 문자열 반복
laugh = &quot;하하&quot;
big_laugh = laugh * 5
print(big_laugh)  # 하하하하하하하하하하

# 장식용 선 만들기
separator = &quot;=&quot; * 40
print(separator)
print(&quot;중요한 공지사항&quot;)
print(separator)

# 패턴 만들기
pattern = &quot;&amp;diams;&amp;diams;&amp;diams; &quot; * 8
print(pattern)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실용적인 문자열 연산 예제&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def create_receipt():
    &quot;&quot;&quot;영수증 형태의 출력을 만드는 함수&quot;&quot;&quot;
    
    # 상점 정보
    store_name = &quot;파이썬 마트&quot;
    address = &quot;서울시 강남구 파이썬로 123&quot;
    
    # 장식용 선
    line = &quot;=&quot; * 50
    thin_line = &quot;-&quot; * 50
    
    # 영수증 헤더 출력
    print(line)
    print(&quot; &quot; * 20 + store_name)
    print(&quot; &quot; * 15 + address)
    print(line)
    
    # 상품 목록
    items = [
        (&quot;파이썬 책&quot;, 25000),
        (&quot;노트북&quot;, 1200000),
        (&quot;마우스&quot;, 35000),
        (&quot;키보드&quot;, 89000)
    ]
    
    print(&quot;상품명&quot; + &quot; &quot; * 20 + &quot;가격&quot;)
    print(thin_line)
    
    total = 0
    for item_name, price in items:
        # 상품명과 가격을 적절히 정렬하여 출력
        spacing = &quot; &quot; * (25 - len(item_name))
        print(item_name + spacing + str(price) + &quot;원&quot;)
        total += price
    
    print(thin_line)
    print(&quot;합계:&quot; + &quot; &quot; * 20 + str(total) + &quot;원&quot;)
    print(line)

# 영수증 생성
create_receipt()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 길이 측정하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;len() 함수는 문자열의 길이를 측정하는 내장 함수입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 기본적인 길이 측정
message = &quot;파이썬 프로그래밍은 재미있습니다&quot;
length = len(message)
print(f&quot;메시지의 길이: {length}자&quot;)

# 공백도 문자로 카운트됩니다
text_with_spaces = &quot;Hello World Python&quot;
print(f&quot;공백 포함 길이: {len(text_with_spaces)}&quot;)

# 빈 문자열의 길이
empty_string = &quot;&quot;
print(f&quot;빈 문자열의 길이: {len(empty_string)}&quot;)

# 실용적인 예제: 비밀번호 길이 검증
def validate_password(password):
    &quot;&quot;&quot;비밀번호 길이를 검증하는 함수&quot;&quot;&quot;
    min_length = 8
    max_length = 20
    
    current_length = len(password)
    
    if current_length &amp;lt; min_length:
        return f&quot;비밀번호가 너무 짧습니다. (현재: {current_length}자, 최소: {min_length}자)&quot;
    elif current_length &amp;gt; max_length:
        return f&quot;비밀번호가 너무 깁니다. (현재: {current_length}자, 최대: {max_length}자)&quot;
    else:
        return f&quot;적절한 길이의 비밀번호입니다. ({current_length}자)&quot;

# 비밀번호 검증 테스트
test_passwords = [&quot;123&quot;, &quot;mypassword123&quot;, &quot;verylongpasswordthatexceedslimit&quot;]
for pwd in test_passwords:
    print(validate_password(pwd))&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 인덱싱: 문자 하나하나 접근하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열의 각 문자는 번호(인덱스)를 가지고 있습니다. 파이썬에서는 0부터 시작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 인덱싱&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 문자열 인덱싱 기본
sentence = &quot;Python Programming&quot;
print(&quot;문자열:&quot;, sentence)
print()

# 각 위치의 문자 출력
print(&quot;첫 번째 문자 (인덱스 0):&quot;, sentence[0])   # P
print(&quot;두 번째 문자 (인덱스 1):&quot;, sentence[1])   # y
print(&quot;세 번째 문자 (인덱스 2):&quot;, sentence[2])   # t
print(&quot;일곱 번째 문자 (인덱스 6):&quot;, sentence[6])  # 공백

# 음수 인덱싱 (뒤에서부터)
print(&quot;마지막 문자:&quot;, sentence[-1])      # g
print(&quot;뒤에서 두 번째:&quot;, sentence[-2])   # n
print(&quot;뒤에서 세 번째:&quot;, sentence[-3])   # i&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실용적인 인덱싱 예제&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def analyze_string(text):
    &quot;&quot;&quot;문자열을 분석하는 함수&quot;&quot;&quot;
    print(f&quot;='=' * 40&quot;)
    print(f&quot;문자열 분석: '{text}'&quot;)
    print(f&quot;='=' * 40&quot;)
    
    # 기본 정보
    print(f&quot;길이: {len(text)}자&quot;)
    
    if len(text) &amp;gt; 0:
        print(f&quot;첫 글자: '{text[0]}'&quot;)
        print(f&quot;마지막 글자: '{text[-1]}'&quot;)
        
        # 중간 글자 찾기
        middle_index = len(text) // 2
        print(f&quot;중간 글자 (인덱스 {middle_index}): '{text[middle_index]}'&quot;)
        
        # 각 문자의 위치 출력
        print(&quot;\n각 문자의 위치:&quot;)
        for i in range(len(text)):
            print(f&quot;인덱스 {i:2d}: '{text[i]}'&quot;)

# 문자열 분석 실행
analyze_string(&quot;Hello&quot;)
analyze_string(&quot;파이썬&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 슬라이싱: 부분 문자열 추출하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슬라이싱은 문자열의 일부분을 잘라내는 기능입니다. [시작:끝:간격] 형태로 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 슬라이싱&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 슬라이싱 기본 사용법
text = &quot;Python Programming Language&quot;
print(&quot;원본 문자열:&quot;, text)
print()

# 기본 슬라이싱
print(&quot;처음부터 6번째까지:&quot;, text[0:6])      # Python
print(&quot;7번째부터 18번째까지:&quot;, text[7:18])   # Programming
print(&quot;19번째부터 끝까지:&quot;, text[19:])       # Language

# 시작 인덱스 생략
print(&quot;처음부터 6번째까지:&quot;, text[:6])       # Python

# 끝 인덱스 생략
print(&quot;7번째부터 끝까지:&quot;, text[7:])         # Programming Language

# 음수 인덱스 사용
print(&quot;뒤에서 8글자:&quot;, text[-8:])           # Language
print(&quot;뒤에서 8번째부터 뒤에서 1번째까지:&quot;, text[-8:-1])  # Languag&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;슬라이싱 간격 사용하기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 간격을 사용한 슬라이싱
alphabet = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;
print(&quot;전체 알파벳:&quot;, alphabet)

# 2글자씩 건너뛰기
print(&quot;2글자씩:&quot;, alphabet[::2])     # ACEGIKMOQSUWY

# 3글자씩 건너뛰기
print(&quot;3글자씩:&quot;, alphabet[::3])     # ADGJMPSVY

# 역순으로 출력
print(&quot;거꾸로:&quot;, alphabet[::-1])     # ZYXWVUTSRQPONMLKJIHGFEDCBA

# 특정 구간을 역순으로
print(&quot;5-10구간 역순:&quot;, alphabet[5:10][::-1])  # JIHGF&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-size: 1.62em; letter-spacing: -1px;&quot;&gt;고급 문자열 활용 팁&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 포맷팅&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# f-string 사용법 (Python 3.6+)
name = &quot;홍길동&quot;
age = 25
height = 175.5

# 기본 포맷팅
intro = f&quot;안녕하세요, 제 이름은 {name}입니다. 나이는 {age}세이고, 키는 {height}cm입니다.&quot;
print(intro)

# 소수점 제어
pi = 3.14159265359
print(f&quot;원주율: {pi:.2f}&quot;)  # 소수점 2자리까지
print(f&quot;원주율: {pi:.4f}&quot;)  # 소수점 4자리까지

# 문자열 정렬
print(f&quot;{'왼쪽정렬':&amp;lt;10}|&quot;)
print(f&quot;{'가운데정렬':^10}|&quot;)
print(f&quot;{'오른쪽정렬':&amp;gt;10}|&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 메서드 활용&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def string_methods_demo():
    &quot;&quot;&quot;유용한 문자열 메서드들을 시연하는 함수&quot;&quot;&quot;
    
    sample_text = &quot;  Python Programming is Fun!  &quot;
    print(f&quot;원본: '{sample_text}'&quot;)
    
    # 공백 제거
    print(f&quot;양쪽 공백 제거: '{sample_text.strip()}'&quot;)
    print(f&quot;왼쪽 공백 제거: '{sample_text.lstrip()}'&quot;)
    print(f&quot;오른쪽 공백 제거: '{sample_text.rstrip()}'&quot;)
    
    # 대소문자 변환
    clean_text = sample_text.strip()
    print(f&quot;모두 대문자: '{clean_text.upper()}'&quot;)
    print(f&quot;모두 소문자: '{clean_text.lower()}'&quot;)
    print(f&quot;첫 글자만 대문자: '{clean_text.capitalize()}'&quot;)
    print(f&quot;각 단어 첫 글자 대문자: '{clean_text.title()}'&quot;)
    
    # 문자열 검색
    print(f&quot;'Python' 포함 여부: {clean_text.find('Python') != -1}&quot;)
    print(f&quot;'Java' 포함 여부: {clean_text.find('Java') != -1}&quot;)
    
    # 문자열 분리와 결합
    words = clean_text.split()
    print(f&quot;단어 분리: {words}&quot;)
    rejoined = &quot; | &quot;.join(words)
    print(f&quot;다시 결합: '{rejoined}'&quot;)

string_methods_demo()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실전 프로젝트: 간단한 텍스트 에디터&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;isbl&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def simple_text_editor():
    &quot;&quot;&quot;간단한 텍스트 에디터 시뮬레이션&quot;&quot;&quot;
    
    print(&quot;=&quot; * 50)
    print(&quot;간단한 텍스트 에디터&quot;)
    print(&quot;=&quot; * 50)
    print(&quot;명령어:&quot;)
    print(&quot;1. write - 텍스트 입력&quot;)
    print(&quot;2. show - 현재 텍스트 보기&quot;)
    print(&quot;3. length - 텍스트 길이 확인&quot;)
    print(&quot;4. reverse - 텍스트 뒤집기&quot;)
    print(&quot;5. upper - 대문자로 변환&quot;)
    print(&quot;6. lower - 소문자로 변환&quot;)
    print(&quot;7. clear - 텍스트 지우기&quot;)
    print(&quot;8. quit - 프로그램 종료&quot;)
    print(&quot;=&quot; * 50)
    
    text_content = &quot;&quot;
    
    while True:
        command = input(&quot;\n명령어를 입력하세요: &quot;).strip().lower()
        
        if command == &quot;write&quot;:
            new_text = input(&quot;입력할 텍스트: &quot;)
            text_content += new_text
            print(&quot;✅ 텍스트가 추가되었습니다.&quot;)
            
        elif command == &quot;show&quot;:
            print(f&quot;현재 텍스트: '{text_content}'&quot;)
            
        elif command == &quot;length&quot;:
            print(f&quot;텍스트 길이: {len(text_content)}자&quot;)
            
        elif command == &quot;reverse&quot;:
            reversed_text = text_content[::-1]
            print(f&quot;뒤집힌 텍스트: '{reversed_text}'&quot;)
            
        elif command == &quot;upper&quot;:
            upper_text = text_content.upper()
            print(f&quot;대문자 변환: '{upper_text}'&quot;)
            
        elif command == &quot;lower&quot;:
            lower_text = text_content.lower()
            print(f&quot;소문자 변환: '{lower_text}'&quot;)
            
        elif command == &quot;clear&quot;:
            text_content = &quot;&quot;
            print(&quot;✅ 텍스트가 지워졌습니다.&quot;)
            
        elif command == &quot;quit&quot;:
            print&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div data-test-render-count=&quot;2&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div data-test-render-count=&quot;1&quot;&gt;
&lt;div&gt;
&lt;div data-is-streaming=&quot;false&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;       elif command == &quot;quit&quot;:
           print(&quot;  텍스트 에디터를 종료합니다.&quot;)
           break
           
       else:
           print(&quot;❌ 잘못된 명령어입니다. 다시 입력해주세요.&quot;)

# 텍스트 에디터 실행
# simple_text_editor()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 검증과 처리 함수들&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def advanced_string_functions():
    &quot;&quot;&quot;고급 문자열 처리 함수들&quot;&quot;&quot;
    
    def validate_email(email):
        &quot;&quot;&quot;간단한 이메일 형식 검증&quot;&quot;&quot;
        if &quot;@&quot; in email and &quot;.&quot; in email:
            parts = email.split(&quot;@&quot;)
            if len(parts) == 2 and len(parts[0]) &amp;gt; 0 and len(parts[1]) &amp;gt; 0:
                domain = parts[1]
                if &quot;.&quot; in domain and len(domain.split(&quot;.&quot;)[-1]) &amp;gt;= 2:
                    return True
        return False
    
    def format_phone_number(phone):
        &quot;&quot;&quot;전화번호 형식 정리&quot;&quot;&quot;
        # 숫자만 추출
        digits = &quot;&quot;
        for char in phone:
            if char.isdigit():
                digits += char
        
        # 11자리인 경우 포맷팅
        if len(digits) == 11:
            return f&quot;{digits[:3]}-{digits[3:7]}-{digits[7:]}&quot;
        elif len(digits) == 10:
            return f&quot;{digits[:3]}-{digits[3:6]}-{digits[6:]}&quot;
        else:
            return &quot;잘못된 전화번호 형식&quot;
    
    def extract_numbers(text):
        &quot;&quot;&quot;문자열에서 숫자만 추출&quot;&quot;&quot;
        numbers = &quot;&quot;
        for char in text:
            if char.isdigit():
                numbers += char
        return numbers
    
    def count_characters(text):
        &quot;&quot;&quot;문자 유형별 개수 세기&quot;&quot;&quot;
        result = {
            'letters': 0,    # 문자
            'digits': 0,     # 숫자
            'spaces': 0,     # 공백
            'special': 0     # 특수문자
        }
        
        for char in text:
            if char.isalpha():
                result['letters'] += 1
            elif char.isdigit():
                result['digits'] += 1
            elif char.isspace():
                result['spaces'] += 1
            else:
                result['special'] += 1
        
        return result
    
    # 테스트 실행
    print(&quot;  이메일 검증 테스트:&quot;)
    test_emails = [
        &quot;user@example.com&quot;,
        &quot;invalid.email&quot;,
        &quot;test@domain.co.kr&quot;,
        &quot;@invalid.com&quot;,
        &quot;user@.com&quot;
    ]
    
    for email in test_emails:
        is_valid = validate_email(email)
        status = &quot;✅ 유효&quot; if is_valid else &quot;❌ 무효&quot;
        print(f&quot;  {email:&amp;lt;20} - {status}&quot;)
    
    print(&quot;\n  전화번호 포맷팅 테스트:&quot;)
    test_phones = [
        &quot;01012345678&quot;,
        &quot;010-1234-5678&quot;,
        &quot;010 1234 5678&quot;,
        &quot;02-123-4567&quot;,
        &quot;031.123.4567&quot;
    ]
    
    for phone in test_phones:
        formatted = format_phone_number(phone)
        print(f&quot;  {phone:&amp;lt;15} &amp;rarr; {formatted}&quot;)
    
    print(&quot;\n  숫자 추출 테스트:&quot;)
    test_texts = [
        &quot;가격은 15,000원입니다&quot;,
        &quot;전화: 010-1234-5678&quot;,
        &quot;우편번호: 12345&quot;,
        &quot;abc123def456ghi&quot;
    ]
    
    for text in test_texts:
        numbers = extract_numbers(text)
        print(f&quot;  '{text}' &amp;rarr; '{numbers}'&quot;)
    
    print(&quot;\n  문자 분석 테스트:&quot;)
    analysis_text = &quot;Hello World 123! 안녕하세요 456?&quot;
    char_count = count_characters(analysis_text)
    print(f&quot;  분석 대상: '{analysis_text}'&quot;)
    print(f&quot;  문자: {char_count['letters']}개&quot;)
    print(f&quot;  숫자: {char_count['digits']}개&quot;)
    print(f&quot;  공백: {char_count['spaces']}개&quot;)
    print(f&quot;  특수문자: {char_count['special']}개&quot;)

# 고급 함수 실행
advanced_string_functions()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 암호화와 복호화 게임&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def cipher_game():
    &quot;&quot;&quot;간단한 시저 암호화 게임&quot;&quot;&quot;
    
    def caesar_cipher(text, shift, decrypt=False):
        &quot;&quot;&quot;시저 암호화/복호화 함수&quot;&quot;&quot;
        if decrypt:
            shift = -shift
        
        result = &quot;&quot;
        for char in text:
            if char.isalpha():
                # 대문자와 소문자 구분
                if char.isupper():
                    # A=65, Z=90
                    shifted = ((ord(char) - ord('A') + shift) % 26) + ord('A')
                else:
                    # a=97, z=122
                    shifted = ((ord(char) - ord('a') + shift) % 26) + ord('a')
                result += chr(shifted)
            else:
                # 알파벳이 아닌 문자는 그대로
                result += char
        
        return result
    
    print(&quot;  시저 암호화 게임&quot;)
    print(&quot;=&quot; * 40)
    print(&quot;간단한 암호화를 체험해보세요!&quot;)
    
    while True:
        print(&quot;\n선택하세요:&quot;)
        print(&quot;1. 암호화하기&quot;)
        print(&quot;2. 복호화하기&quot;)
        print(&quot;3. 암호 맞추기 게임&quot;)
        print(&quot;4. 종료&quot;)
        
        choice = input(&quot;선택 (1-4): &quot;).strip()
        
        if choice == &quot;1&quot;:
            text = input(&quot;암호화할 텍스트: &quot;)
            shift = int(input(&quot;이동할 칸 수 (1-25): &quot;))
            encrypted = caesar_cipher(text, shift)
            print(f&quot;암호화 결과: {encrypted}&quot;)
            
        elif choice == &quot;2&quot;:
            text = input(&quot;복호화할 텍스트: &quot;)
            shift = int(input(&quot;이동했던 칸 수 (1-25): &quot;))
            decrypted = caesar_cipher(text, shift, decrypt=True)
            print(f&quot;복호화 결과: {decrypted}&quot;)
            
        elif choice == &quot;3&quot;:
            # 게임 모드
            original_messages = [
                &quot;HELLO PYTHON&quot;,
                &quot;PROGRAMMING IS FUN&quot;,
                &quot;LEARN TO CODE&quot;,
                &quot;STRING MANIPULATION&quot;
            ]
            
            import random
            message = random.choice(original_messages)
            shift = random.randint(1, 25)
            encrypted = caesar_cipher(message, shift)
            
            print(f&quot;암호화된 메시지: {encrypted}&quot;)
            print(&quot;원본 메시지를 맞춰보세요!&quot;)
            
            attempts = 3
            while attempts &amp;gt; 0:
                guess = input(f&quot;추측 ({attempts}번 기회 남음): &quot;).upper()
                if guess == message:
                    print(&quot;  정답입니다!&quot;)
                    break
                else:
                    attempts -= 1
                    if attempts &amp;gt; 0:
                        print(&quot;❌ 틀렸습니다. 다시 시도하세요.&quot;)
                    else:
                        print(f&quot;❌ 실패! 정답은 '{message}'였습니다.&quot;)
            
        elif choice == &quot;4&quot;:
            print(&quot;  게임을 종료합니다.&quot;)
            break
        else:
            print(&quot;❌ 잘못된 선택입니다.&quot;)

# 암호화 게임 실행
# cipher_game()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 패턴 매칭과 정규표현식 기초&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def pattern_matching_basics():
    &quot;&quot;&quot;문자열 패턴 매칭 기초&quot;&quot;&quot;
    
    def find_pattern(text, pattern):
        &quot;&quot;&quot;간단한 패턴 찾기 함수&quot;&quot;&quot;
        positions = []
        start = 0
        
        while True:
            pos = text.find(pattern, start)
            if pos == -1:
                break
            positions.append(pos)
            start = pos + 1
        
        return positions
    
    def replace_pattern(text, old_pattern, new_pattern):
        &quot;&quot;&quot;패턴 바꾸기 함수&quot;&quot;&quot;
        return text.replace(old_pattern, new_pattern)
    
    def extract_words(text):
        &quot;&quot;&quot;단어 추출하기&quot;&quot;&quot;
        words = []
        current_word = &quot;&quot;
        
        for char in text:
            if char.isalpha():
                current_word += char
            else:
                if current_word:
                    words.append(current_word)
                    current_word = &quot;&quot;
        
        # 마지막 단어 처리
        if current_word:
            words.append(current_word)
        
        return words
    
    def validate_korean_name(name):
        &quot;&quot;&quot;한글 이름 형식 검증&quot;&quot;&quot;
        if len(name) &amp;lt; 2 or len(name) &amp;gt; 4:
            return False
        
        for char in name:
            # 한글 유니코드 범위: 가(44032) ~ 힣(55203)
            if not (44032 &amp;lt;= ord(char) &amp;lt;= 55203):
                return False
        
        return True
    
    # 테스트 실행
    print(&quot;  패턴 찾기 테스트:&quot;)
    test_text = &quot;Python is powerful. Python is easy. Python is fun.&quot;
    pattern = &quot;Python&quot;
    positions = find_pattern(test_text, pattern)
    print(f&quot;  텍스트: '{test_text}'&quot;)
    print(f&quot;  패턴 '{pattern}' 위치: {positions}&quot;)
    
    print(&quot;\n  패턴 바꾸기 테스트:&quot;)
    replaced = replace_pattern(test_text, &quot;Python&quot;, &quot;프로그래밍&quot;)
    print(f&quot;  바뀐 결과: '{replaced}'&quot;)
    
    print(&quot;\n  단어 추출 테스트:&quot;)
    sample_text = &quot;Hello, World! This is a test.&quot;
    words = extract_words(sample_text)
    print(f&quot;  원본: '{sample_text}'&quot;)
    print(f&quot;  추출된 단어: {words}&quot;)
    
    print(&quot;\n  한글 이름 검증 테스트:&quot;)
    test_names = [&quot;김철수&quot;, &quot;이영희&quot;, &quot;박&quot;, &quot;정수진아&quot;, &quot;John&quot;, &quot;김영수&quot;]
    for name in test_names:
        is_valid = validate_korean_name(name)
        status = &quot;✅ 유효&quot; if is_valid else &quot;❌ 무효&quot;
        print(f&quot;  '{name}' - {status}&quot;)

# 패턴 매칭 테스트 실행
pattern_matching_basics()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문자열 성능 최적화 팁&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def string_performance_tips():
    &quot;&quot;&quot;문자열 성능 최적화 방법들&quot;&quot;&quot;
    
    import time
    
    def test_string_concatenation():
        &quot;&quot;&quot;문자열 연결 성능 비교&quot;&quot;&quot;
        print(&quot;⚡ 문자열 연결 성능 비교:&quot;)
        
        # 방법 1: + 연산자 사용 (비효율적)
        start_time = time.time()
        result1 = &quot;&quot;
        for i in range(1000):
            result1 += str(i) + &quot; &quot;
        time1 = time.time() - start_time
        
        # 방법 2: join 사용 (효율적)
        start_time = time.time()
        parts = []
        for i in range(1000):
            parts.append(str(i))
        result2 = &quot; &quot;.join(parts)
        time2 = time.time() - start_time
        
        # 방법 3: f-string 사용
        start_time = time.time()
        parts = []
        for i in range(1000):
            parts.append(f&quot;{i}&quot;)
        result3 = &quot; &quot;.join(parts)
        time3 = time.time() - start_time
        
        print(f&quot;  + 연산자: {time1:.4f}초&quot;)
        print(f&quot;  join 사용: {time2:.4f}초&quot;)
        print(f&quot;  f-string + join: {time3:.4f}초&quot;)
        print(f&quot;  join이 + 연산자보다 {time1/time2:.1f}배 빠름&quot;)
    
    def memory_efficient_string_processing():
        &quot;&quot;&quot;메모리 효율적인 문자열 처리&quot;&quot;&quot;
        print(&quot;\n  메모리 효율적인 문자열 처리:&quot;)
        
        # 큰 텍스트 처리 시뮬레이션
        large_text = &quot;파이썬 프로그래밍을 배우는 것은 정말 즐거운 일입니다. &quot; * 100
        
        # 비효율적인 방법: 전체 텍스트를 메모리에 로드
        def inefficient_word_count(text):
            words = text.split()
            return len(words)
        
        # 효율적인 방법: 청크 단위로 처리
        def efficient_word_count(text, chunk_size=100):
            word_count = 0
            for i in range(0, len(text), chunk_size):
                chunk = text[i:i+chunk_size]
                # 단어 경계 처리
                if i + chunk_size &amp;lt; len(text) and not text[i+chunk_size].isspace():
                    last_space = chunk.rfind(' ')
                    if last_space != -1:
                        chunk = chunk[:last_space]
                
                word_count += len(chunk.split())
            
            return word_count
        
        count1 = inefficient_word_count(large_text)
        count2 = efficient_word_count(large_text)
        
        print(f&quot;  일반적인 방법: {count1}개 단어&quot;)
        print(f&quot;  청크 처리 방법: {count2}개 단어&quot;)
    
    # 성능 테스트 실행
    test_string_concatenation()
    memory_efficient_string_processing()

# 성능 최적화 테스트 실행
string_performance_tips()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;종합 실습 프로젝트: 텍스트 분석기&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;def comprehensive_text_analyzer():
    &quot;&quot;&quot;종합적인 텍스트 분석기&quot;&quot;&quot;
    
    def analyze_comprehensive(text):
        &quot;&quot;&quot;텍스트 종합 분석&quot;&quot;&quot;
        results = {}
        
        # 기본 통계
        results['총_문자수'] = len(text)
        results['공백_제외_문자수'] = len(text.replace(' ', ''))
        results['단어수'] = len(text.split())
        results['문장수'] = text.count('.') + text.count('!') + text.count('?')
        
        # 문자 유형별 분석
        char_analysis = {
            '영문자': 0, '한글': 0, '숫자': 0, 
            '공백': 0, '특수문자': 0
        }
        
        for char in text:
            if char.isalpha():
                if ord(char) &amp;lt; 128:  # ASCII 범위 (영문)
                    char_analysis['영문자'] += 1
                else:  # 한글 또는 기타
                    char_analysis['한글'] += 1
            elif char.isdigit():
                char_analysis['숫자'] += 1
            elif char.isspace():
                char_analysis['공백'] += 1
            else:
                char_analysis['특수문자'] += 1
        
        results['문자_분석'] = char_analysis
        
        # 단어 빈도 분석
        words = text.lower().split()
        word_freq = {}
        for word in words:
            # 특수문자 제거
            clean_word = &quot;&quot;
            for char in word:
                if char.isalnum():
                    clean_word += char
            
            if clean_word:
                word_freq[clean_word] = word_freq.get(clean_word, 0) + 1
        
        # 상위 5개 단어
        sorted_words = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)
        results['빈도수_높은_단어'] = sorted_words[:5]
        
        # 가독성 분석 (간단한 지표)
        avg_word_length = sum(len(word) for word in words) / len(words) if words else 0
        results['평균_단어_길이'] = round(avg_word_length, 2)
        
        if results['문장수'] &amp;gt; 0:
            avg_sentence_length = results['단어수'] / results['문장수']
            results['평균_문장_길이'] = round(avg_sentence_length, 2)
        else:
            results['평균_문장_길이'] = 0
        
        return results
    
    def display_analysis(results):
        &quot;&quot;&quot;분석 결과를 보기 좋게 출력&quot;&quot;&quot;
        print(&quot;  텍스트 분석 결과&quot;)
        print(&quot;=&quot; * 50)
        
        print(&quot;  기본 통계:&quot;)
        print(f&quot;  전체 문자 수: {results['총_문자수']:,}자&quot;)
        print(f&quot;  공백 제외: {results['공백_제외_문자수']:,}자&quot;)
        print(f&quot;  단어 수: {results['단어수']:,}개&quot;)
        print(f&quot;  문장 수: {results['문장수']:,}개&quot;)
        
        print(&quot;\n  문자 구성:&quot;)
        for char_type, count in results['문자_분석'].items():
            percentage = (count / results['총_문자수'] * 100) if results['총_문자수'] &amp;gt; 0 else 0
            print(f&quot;  {char_type}: {count:,}개 ({percentage:.1f}%)&quot;)
        
        print(&quot;\n  빈도수가 높은 단어:&quot;)
        for i, (word, freq) in enumerate(results['빈도수_높은_단어'], 1):
            print(f&quot;  {i}. '{word}': {freq}번&quot;)
        
        print(&quot;\n  가독성 지표:&quot;)
        print(f&quot;  평균 단어 길이: {results['평균_단어_길이']}자&quot;)
        print(f&quot;  평균 문장 길이: {results['평균_문장_길이']}단어&quot;)
        
        # 가독성 평가
        if results['평균_단어_길이'] &amp;lt; 4:
            readability = &quot;쉬움&quot;
        elif results['평균_단어_길이'] &amp;lt; 6:
            readability = &quot;보통&quot;
        else:
            readability = &quot;어려움&quot;
        
        print(f&quot;  예상 난이도: {readability}&quot;)
    
    # 샘플 텍스트들
    sample_texts = {
        &quot;소설&quot;: &quot;&quot;&quot;
        어느 날 갑자기 세상이 변했다. 하늘은 붉게 물들었고, 
        사람들은 모두 집 안에 숨어버렸다. 주인공은 이 상황을 
        이해할 수 없었다. 그는 용기를 내어 밖으로 나가기로 
        결심했다. 거리는 조용했고, 바람만이 쓸쓸히 불고 있었다.
        &quot;&quot;&quot;,
        
        &quot;기술문서&quot;: &quot;&quot;&quot;
        Python is a high-level programming language. It was created by 
        Guido van Rossum and first released in 1991. Python's design 
        philosophy emphasizes code readability with its notable use of 
        significant whitespace. The language provides constructs intended 
        to enable writing clear programs on both small and large scales.
        &quot;&quot;&quot;,
        
        &quot;뉴스&quot;: &quot;&quot;&quot;
        오늘 정부는 새로운 경제정책을 발표했습니다. 이 정책은 
        중소기업 지원과 일자리 창출에 초점을 맞추고 있습니다. 
        전문가들은 이번 정책이 경제 회복에 도움이 될 것으로 
        전망한다고 밝혔습니다. 시행은 다음 달부터 시작됩니다.
        &quot;&quot;&quot;
    }
    
    print(&quot;  텍스트 분석기에 오신 것을 환영합니다!&quot;)
    print(&quot;=&quot; * 50)
    
    while True:
        print(&quot;\n선택하세요:&quot;)
        print(&quot;1. 샘플 텍스트 분석&quot;)
        print(&quot;2. 직접 입력한 텍스트 분석&quot;)
        print(&quot;3. 파일에서 텍스트 읽어서 분석&quot;)
        print(&quot;4. 종료&quot;)
        
        choice = input(&quot;선택 (1-4): &quot;).strip()
        
        if choice == &quot;1&quot;:
            print(&quot;\n샘플 텍스트 선택:&quot;)
            for i, (name, _) in enumerate(sample_texts.items(), 1):
                print(f&quot;  {i}. {name}&quot;)
            
            sample_choice = input(&quot;선택 (1-3): &quot;).strip()
            if sample_choice in [&quot;1&quot;, &quot;2&quot;, &quot;3&quot;]:
                text_name = list(sample_texts.keys())[int(sample_choice) - 1]
                text = sample_texts[text_name].strip()
                print(f&quot;\n  분석 대상: {text_name}&quot;)
                print(f&quot;내용 미리보기: {text[:100]}...&quot;)
                
                results = analyze_comprehensive(text)
                display_analysis(results)
        
        elif choice == &quot;2&quot;:
            print(&quot;\n텍스트를 입력하세요 (완료하려면 빈 줄 입력):&quot;)
            lines = []
            while True:
                line = input()
                if not line.strip():
                    break
                lines.append(line)
            
            if lines:
                text = &quot;\n&quot;.join(lines)
                results = analyze_comprehensive(text)
                display_analysis(results)
            else:
                print(&quot;❌ 텍스트가 입력되지 않았습니다.&quot;)
        
        elif choice == &quot;3&quot;:
            filename = input(&quot;파일 이름을 입력하세요: &quot;).strip()
            try:
                with open(filename, 'r', encoding='utf-8') as file:
                    text = file.read()
                    results = analyze_comprehensive(text)
                    display_analysis(results)
            except FileNotFoundError:
                print(&quot;❌ 파일을 찾을 수 없습니다.&quot;)
            except Exception as e:
                print(f&quot;❌ 오류 발생: {e}&quot;)
        
        elif choice == &quot;4&quot;:
            print(&quot;  텍스트 분석기를 종료합니다.&quot;)
            break
        
        else:
            print(&quot;❌ 잘못된 선택입니다.&quot;)

# 텍스트 분석기 실행
# comprehensive_text_analyzer()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마무리 정리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 가이드에서 우리는 파이썬 문자열의 핵심 개념들을 다음과 같이 학습했습니다:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주요 학습 내용&lt;/h3&gt;
주제핵심 내용활용도
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;문자열 생성&lt;/td&gt;
&lt;td&gt;4가지 방법 (&quot;, ', &quot;&quot;&quot;, ''')&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;특수문자 처리&lt;/td&gt;
&lt;td&gt;이스케이프 문자, 따옴표 포함&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;문자열 연산&lt;/td&gt;
&lt;td&gt;더하기, 곱하기, 길이 측정&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;인덱싱/슬라이싱&lt;/td&gt;
&lt;td&gt;문자 접근, 부분 문자열 추출&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;문자열 메서드&lt;/td&gt;
&lt;td&gt;upper, lower, strip, split 등&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;패턴 매칭&lt;/td&gt;
&lt;td&gt;find, replace, 검증 함수&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;성능 최적화&lt;/td&gt;
&lt;td&gt;join 활용, 메모리 효율성&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실전 활용 팁&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;문자열 연결할 때&lt;/b&gt;: + 대신 join() 사용하기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대용량 텍스트&lt;/b&gt;: 청크 단위로 처리하기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용자 입력 검증&lt;/b&gt;: 항상 예외 상황 고려하기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;코드 가독성&lt;/b&gt;: f-string 적극 활용하기&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 여러분은 파이썬 문자열을 자유자재로 다룰 수 있는 기초를 단단히 다졌습니다. 계속해서 실습하고 다양한 프로젝트에 적용해보시기 바랍니다!&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 마지막 격려 메시지
def final_message():
    message = &quot;파이썬 문자열 마스터가 되신 것을 축하합니다!&quot;
    border = &quot; &quot; * len(message)
    
    print(border)
    print(message)
    print(border)
    print(&quot;이제 더 복잡한 프로그래밍 도전을 시작해보세요!  &quot;)

final_message()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/7</guid>
      <comments>https://umjam33.tistory.com/entry/%EC%98%88%EC%A0%9C%EB%A1%9C-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%99%84%EC%A0%84-%EC%A0%95%EB%B3%B5-%EA%B0%80%EC%9D%B4%EB%93%9C-%ED%95%9C%EB%B2%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-%EB%AC%B8%EC%9E%90%EC%97%B4#entry7comment</comments>
      <pubDate>Fri, 23 May 2025 04:23:01 +0900</pubDate>
    </item>
    <item>
      <title>1. 파이썬 숫자형 자료형 완벽 가이드 | 정수형, 실수형, 8진수, 16진수, 사칙연산, 계산기, 숫자 맞추기</title>
      <link>https://umjam33.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%88%AB%EC%9E%90%ED%98%95-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C-%EC%A0%95%EC%88%98%ED%98%95-%EC%8B%A4%EC%88%98%ED%98%95-8%EC%A7%84%EC%88%98-16%EC%A7%84%EC%88%98-%EC%82%AC%EC%B9%99%EC%97%B0%EC%82%B0-%EA%B3%84%EC%82%B0%EA%B8%B0-%EC%88%AB%EC%9E%90-%EB%A7%9E%EC%B6%94%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;파이썬-숫자형-자료형-완벽-가이드.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwFj0M/btsN8EIsJ0A/3sqhUBcHdKiipk3u2wgLNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwFj0M/btsN8EIsJ0A/3sqhUBcHdKiipk3u2wgLNk/img.png&quot; data-alt=&quot;파이썬-숫자형-자료형-완벽-가이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwFj0M/btsN8EIsJ0A/3sqhUBcHdKiipk3u2wgLNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwFj0M%2FbtsN8EIsJ0A%2F3sqhUBcHdKiipk3u2wgLNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;파이썬-숫자형-자료형-완벽-가이드.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파이썬-숫자형-자료형-완벽-가이드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;파이썬 숫자형 자료형 완벽 가이드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 숫자형 자료형은 프로그래밍의 기본이 되는 핵심 요소입니다. 이 가이드에서는 숫자형 자료형의 모든 것을 상세히 다루어 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;숫자형 자료형의 종류와 특징&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬의 숫자형은 크게 네 가지 종류로 분류됩니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자료형표현 방법사용 예시&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;정수형&lt;/td&gt;
&lt;td&gt;일반적인 정수&lt;/td&gt;
&lt;td&gt;456, -789, 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;실수형&lt;/td&gt;
&lt;td&gt;소수점을 포함한 수&lt;/td&gt;
&lt;td&gt;67.89, -234.56, 2.7e5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8진수&lt;/td&gt;
&lt;td&gt;0o 또는 0O로 시작&lt;/td&gt;
&lt;td&gt;0o42, 0O17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16진수&lt;/td&gt;
&lt;td&gt;0x 또는 0X로 시작&lt;/td&gt;
&lt;td&gt;0x3F, 0XFF&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;정수형 자료형 심화 학습&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수형은 양수, 음수, 그리고 0을 포함하는 모든 자연수를 표현합니다. 파이썬의 정수형은 다른 언어와 달리 크기 제한이 없어 매우 큰 수도 처리할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 정수형 변수 생성 및 활용
number1 = 456
number2 = -789
zero_value = 0

print(f&quot;양의 정수: {number1}&quot;)
print(f&quot;음의 정수: {number2}&quot;)
print(f&quot;영: {zero_value}&quot;)

# 매우 큰 정수도 처리 가능
big_number = 12345678901234567890123456789
print(f&quot;큰 정수: {big_number}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;실수형 자료형과 과학적 표기법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실수형은 소수점이 포함된 숫자를 다룹니다. 파이썬에서는 일반적인 소수점 표기법뿐만 아니라 과학적 표기법도 지원합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 일반적인 실수 표현
decimal1 = 3.14159
decimal2 = -0.005

# 과학적 표기법 (지수 표현)
scientific1 = 2.5e3    # 2.5 &amp;times; 10&amp;sup3; = 2500
scientific2 = 1.2E-4  # 1.2 &amp;times; 10⁻⁴ = 0.00012
scientific3 = 6.67e-11 # 중력상수와 유사한 값

print(f&quot;파이: {decimal1}&quot;)
print(f&quot;작은 실수: {decimal2}&quot;)
print(f&quot;과학적 표기법 1: {scientific1}&quot;)
print(f&quot;과학적 표기법 2: {scientific2}&quot;)
print(f&quot;과학적 표기법 3: {scientific3}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;8진수와 16진수 체계&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터 시스템에서는 8진수와 16진수가 자주 사용됩니다. 파이썬에서는 이러한 진법을 쉽게 다룰 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;lsl&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 8진수 (0o 또는 0O로 시작)
octal1 = 0o25   # 8진수 25 = 2&amp;times;8&amp;sup1; + 5&amp;times;8⁰ = 21
octal2 = 0O177  # 8진수 177 = 1&amp;times;8&amp;sup2; + 7&amp;times;8&amp;sup1; + 7&amp;times;8⁰ = 127

# 16진수 (0x 또는 0X로 시작)
hex1 = 0x1A     # 16진수 1A = 1&amp;times;16&amp;sup1; + 10&amp;times;16⁰ = 26
hex2 = 0XFF     # 16진수 FF = 15&amp;times;16&amp;sup1; + 15&amp;times;16⁰ = 255
hex3 = 0xDEAD   # 16진수 DEAD = 13&amp;times;16&amp;sup3; + 14&amp;times;16&amp;sup2; + 10&amp;times;16&amp;sup1; + 13&amp;times;16⁰

print(f&quot;8진수 0o25의 10진수 값: {octal1}&quot;)
print(f&quot;8진수 0O177의 10진수 값: {octal2}&quot;)
print(f&quot;16진수 0x1A의 10진수 값: {hex1}&quot;)
print(f&quot;16진수 0XFF의 10진수 값: {hex2}&quot;)
print(f&quot;16진수 0xDEAD의 10진수 값: {hex3}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;

&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;숫자형 연산자 완전 분석&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기본 사칙연산&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬의 사칙연산은 직관적이고 강력합니다:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;x = 15
y = 4

# 기본 사칙연산
addition = x + y      # 덧셈: 19
subtraction = x - y   # 뺄셈: 11
multiplication = x * y # 곱셈: 60
division = x / y      # 나눗셈: 3.75

print(f&quot;{x} + {y} = {addition}&quot;)
print(f&quot;{x} - {y} = {subtraction}&quot;)
print(f&quot;{x} * {y} = {multiplication}&quot;)
print(f&quot;{x} / {y} = {division}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고급 연산자들&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 거듭제곱 연산자 (**)
base = 2
exponent = 8
power_result = base ** exponent  # 2⁸ = 256

# 나머지 연산자 (%)
dividend = 17
divisor = 5
remainder = dividend % divisor   # 17을 5로 나눈 나머지: 2

# 몫 연산자 (//)
quotient = dividend // divisor   # 17을 5로 나눈 몫: 3

print(f&quot;{base}의 {exponent}제곱: {power_result}&quot;)
print(f&quot;{dividend} % {divisor} = {remainder}&quot;)
print(f&quot;{dividend} // {divisor} = {quotient}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;복합 대입 연산자 활용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복합 대입 연산자는 코드를 간결하게 만들어 줍니다:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;# 복합 대입 연산자 예제
counter = 10

counter += 5   # counter = counter + 5
print(f&quot;5 더한 후: {counter}&quot;)

counter -= 3   # counter = counter - 3
print(f&quot;3 뺀 후: {counter}&quot;)

counter *= 2   # counter = counter * 2
print(f&quot;2 곱한 후: {counter}&quot;)

counter /= 4   # counter = counter / 4
print(f&quot;4로 나눈 후: {counter}&quot;)

counter **= 2  # counter = counter ** 2
print(f&quot;제곱한 후: {counter}&quot;)

counter %= 7   # counter = counter % 7
print(f&quot;7로 나눈 나머지: {counter}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;실전 예제: 간단한 계산기 프로그램&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자형 자료형과 연산자를 활용한 실용적인 예제를 살펴보겠습니다:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;class SimpleCalculator:
    &quot;&quot;&quot;간단한 계산기 클래스&quot;&quot;&quot;
    
    def __init__(self):
        print(&quot;=== 파이썬 계산기 ===&quot;)
        print(&quot;사용 가능한 연산: +, -, *, /, **, %, //&quot;)
    
    def calculate(self, num1, operator, num2):
        &quot;&quot;&quot;두 숫자와 연산자를 받아 계산 수행&quot;&quot;&quot;
        try:
            if operator == '+':
                return num1 + num2
            elif operator == '-':
                return num1 - num2
            elif operator == '*':
                return num1 * num2
            elif operator == '/':
                if num2 == 0:
                    return &quot;오류: 0으로 나눌 수 없습니다&quot;
                return num1 / num2
            elif operator == '**':
                return num1 ** num2
            elif operator == '%':
                if num2 == 0:
                    return &quot;오류: 0으로 나눌 수 없습니다&quot;
                return num1 % num2
            elif operator == '//':
                if num2 == 0:
                    return &quot;오류: 0으로 나눌 수 없습니다&quot;
                return num1 // num2
            else:
                return &quot;오류: 지원하지 않는 연산자입니다&quot;
        except Exception as e:
            return f&quot;계산 오류: {e}&quot;
    
    def run_examples(self):
        &quot;&quot;&quot;다양한 계산 예제 실행&quot;&quot;&quot;
        examples = [
            (25, '+', 17),
            (100, '-', 37),
            (12, '*', 8),
            (144, '/', 12),
            (3, '**', 4),
            (23, '%', 7),
            (47, '//', 6)
        ]
        
        for num1, op, num2 in examples:
            result = self.calculate(num1, op, num2)
            print(f&quot;{num1} {op} {num2} = {result}&quot;)

# 계산기 실행
calc = SimpleCalculator()
calc.run_examples()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;실전 예제: 숫자 맞추기 게임&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;import random

class NumberGuessingGame:
    &quot;&quot;&quot;숫자 맞추기 게임 클래스&quot;&quot;&quot;
    
    def __init__(self, min_num=1, max_num=100):
        self.min_num = min_num
        self.max_num = max_num
        self.secret_number = random.randint(min_num, max_num)
        self.attempts = 0
        self.max_attempts = 7
        
    def play(self):
        &quot;&quot;&quot;게임 실행 메서드&quot;&quot;&quot;
        print(f&quot;=== 숫자 맞추기 게임 ===&quot;)
        print(f&quot;{self.min_num}부터 {self.max_num} 사이의 숫자를 맞춰보세요!&quot;)
        print(f&quot;최대 {self.max_attempts}번의 기회가 있습니다.&quot;)
        
        while self.attempts &amp;lt; self.max_attempts:
            try:
                # 사용자 입력 받기 (실제 게임에서는 input() 사용)
                # 여기서는 예제를 위해 임의의 추측값들을 사용
                sample_guesses = [50, 25, 75, 37, 62, 44, 56]
                
                if self.attempts &amp;lt; len(sample_guesses):
                    guess = sample_guesses[self.attempts]
                else:
                    guess = random.randint(self.min_num, self.max_num)
                
                print(f&quot;\n시도 {self.attempts + 1}: {guess}&quot;)
                self.attempts += 1
                
                # 추측값과 비밀 숫자 비교
                if guess == self.secret_number:
                    print(f&quot;  정답입니다! {self.attempts}번 만에 맞추셨네요!&quot;)
                    self.show_statistics()
                    break
                elif guess &amp;lt; self.secret_number:
                    print(&quot;  더 큰 숫자입니다!&quot;)
                    remaining = self.max_attempts - self.attempts
                    if remaining &amp;gt; 0:
                        print(f&quot;남은 기회: {remaining}번&quot;)
                else:
                    print(&quot;  더 작은 숫자입니다!&quot;)
                    remaining = self.max_attempts - self.attempts
                    if remaining &amp;gt; 0:
                        print(f&quot;남은 기회: {remaining}번&quot;)
                        
            except ValueError:
                print(&quot;올바른 숫자를 입력해주세요!&quot;)
                continue
        
        if self.attempts &amp;gt;= self.max_attempts:
            print(f&quot;\n  게임 오버! 정답은 {self.secret_number}였습니다.&quot;)
            self.show_statistics()
    
    def show_statistics(self):
        &quot;&quot;&quot;게임 통계 표시&quot;&quot;&quot;
        success_rate = (1 / self.attempts) * 100 if self.attempts &amp;gt; 0 else 0
        print(f&quot;\n=== 게임 통계 ===&quot;)
        print(f&quot;총 시도 횟수: {self.attempts}&quot;)
        print(f&quot;성공률: {success_rate:.1f}%&quot;)
        print(f&quot;난이도 범위: {self.min_num} ~ {self.max_num}&quot;)

# 게임 실행 예제
game = NumberGuessingGame(1, 100)
# 실제 비밀 번호를 56으로 설정 (예제용)
game.secret_number = 56
game.play()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;고급 숫자 처리 기법&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;import math

class AdvancedNumberOperations:
    &quot;&quot;&quot;고급 숫자 연산 클래스&quot;&quot;&quot;
    
    @staticmethod
    def number_properties(num):
        &quot;&quot;&quot;숫자의 다양한 속성 분석&quot;&quot;&quot;
        properties = {}
        
        # 기본 속성
        properties['원본값'] = num
        properties['절댓값'] = abs(num)
        properties['제곱'] = num ** 2
        properties['세제곱'] = num ** 3
        
        # 진법 변환
        if isinstance(num, int) and num &amp;gt;= 0:
            properties['2진수'] = bin(num)
            properties['8진수'] = oct(num)
            properties['16진수'] = hex(num)
        
        # 수학적 함수들
        if num &amp;gt; 0:
            properties['제곱근'] = math.sqrt(num)
            properties['자연로그'] = math.log(num)
            properties['상용로그'] = math.log10(num)
        
        return properties
    
    @staticmethod
    def fibonacci_sequence(n):
        &quot;&quot;&quot;피보나치 수열 생성&quot;&quot;&quot;
        if n &amp;lt;= 0:
            return []
        elif n == 1:
            return [0]
        elif n == 2:
            return [0, 1]
        
        sequence = [0, 1]
        for i in range(2, n):
            next_num = sequence[i-1] + sequence[i-2]
            sequence.append(next_num)
        
        return sequence
    
    @staticmethod
    def prime_checker(num):
        &quot;&quot;&quot;소수 판별 함수&quot;&quot;&quot;
        if num &amp;lt; 2:
            return False
        if num == 2:
            return True
        if num % 2 == 0:
            return False
        
        for i in range(3, int(math.sqrt(num)) + 1, 2):
            if num % i == 0:
                return False
        return True
    
    @staticmethod
    def factorial(n):
        &quot;&quot;&quot;팩토리얼 계산&quot;&quot;&quot;
        if n &amp;lt; 0:
            return None
        if n == 0 or n == 1:
            return 1
        
        result = 1
        for i in range(2, n + 1):
            result *= i
        return result

# 고급 연산 예제 실행
advanced_ops = AdvancedNumberOperations()

# 숫자 속성 분석
test_number = 144
properties = advanced_ops.number_properties(test_number)
print(f&quot;=== 숫자 {test_number}의 속성 ===&quot;)
for key, value in properties.items():
    print(f&quot;{key}: {value}&quot;)

print(&quot;\n=== 피보나치 수열 (첫 15개) ===&quot;)
fib_sequence = advanced_ops.fibonacci_sequence(15)
print(fib_sequence)

print(&quot;\n=== 소수 판별 테스트 ===&quot;)
test_numbers = [17, 18, 19, 20, 21, 22, 23]
for num in test_numbers:
    is_prime = advanced_ops.prime_checker(num)
    print(f&quot;{num}: {'소수' if is_prime else '합성수'}&quot;)

print(&quot;\n=== 팩토리얼 계산 ===&quot;)
for i in range(1, 8):
    factorial_result = advanced_ops.factorial(i)
    print(f&quot;{i}! = {factorial_result}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;데이터 타입 변환과 검증&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;python&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #abb2bf; text-align: left;&quot;&gt;&lt;code&gt;class NumberTypeConverter:
    &quot;&quot;&quot;숫자 타입 변환 및 검증 클래스&quot;&quot;&quot;
    
    @staticmethod
    def safe_convert_to_int(value):
        &quot;&quot;&quot;안전한 정수 변환&quot;&quot;&quot;
        try:
            if isinstance(value, str):
                # 공백 제거
                value = value.strip()
                
                # 16진수 처리
                if value.startswith(('0x', '0X')):
                    return int(value, 16)
                
                # 8진수 처리
                if value.startswith(('0o', '0O')):
                    return int(value, 8)
                
                # 2진수 처리
                if value.startswith(('0b', '0B')):
                    return int(value, 2)
            
            return int(float(value))
        
        except (ValueError, TypeError):
            return None
    
    @staticmethod
    def safe_convert_to_float(value):
        &quot;&quot;&quot;안전한 실수 변환&quot;&quot;&quot;
        try:
            return float(value)
        except (ValueError, TypeError):
            return None
    
    @staticmethod
    def analyze_number_string(s):
        &quot;&quot;&quot;숫자 문자열 분석&quot;&quot;&quot;
        analysis = {
            '원본': s,
            '정수_변환_가능': False,
            '실수_변환_가능': False,
            '정수값': None,
            '실수값': None,
            '타입': None
        }
        
        # 정수 변환 시도
        int_result = NumberTypeConverter.safe_convert_to_int(s)
        if int_result is not None:
            analysis['정수_변환_가능'] = True
            analysis['정수값'] = int_result
        
        # 실수 변환 시도
        float_result = NumberTypeConverter.safe_convert_to_float(s)
        if float_result is not None:
            analysis['실수_변환_가능'] = True
            analysis['실수값'] = float_result
        
        # 타입 결정
        if analysis['정수_변환_가능'] and analysis['실수_변환_가능']:
            if analysis['정수값'] == analysis['실수값']:
                analysis['타입'] = 'integer'
            else:
                analysis['타입'] = 'float'
        elif analysis['실수_변환_가능']:
            analysis['타입'] = 'float'
        else:
            analysis['타입'] = 'string'
        
        return analysis

# 변환 테스트 예제
converter = NumberTypeConverter()

test_strings = [
    &quot;123&quot;,
    &quot;45.67&quot;,
    &quot;0x1F&quot;,
    &quot;0o77&quot;,
    &quot;0b1010&quot;,
    &quot;2.5e3&quot;,
    &quot;invalid&quot;,
    &quot;  89  &quot;,
    &quot;-123.45&quot;
]

print(&quot;=== 숫자 문자열 변환 테스트 ===&quot;)
for test_str in test_strings:
    result = converter.analyze_number_string(test_str)
    print(f&quot;\n입력: '{test_str}'&quot;)
    print(f&quot;타입: {result['타입']}&quot;)
    if result['정수값'] is not None:
        print(f&quot;정수값: {result['정수값']}&quot;)
    if result['실수값'] is not None:
        print(f&quot;실수값: {result['실수값']}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 가이드를 통해 파이썬의 숫자형 자료형에 대한 포괄적인 이해를 얻으실 수 있을 것입니다. 각 예제를 직접 실행해보며 숫자형 자료형의 다양한 활용법을 익혀보시기 바랍니다.&lt;/p&gt;</description>
      <category>파이썬</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/6</guid>
      <comments>https://umjam33.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%88%AB%EC%9E%90%ED%98%95-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C-%EC%A0%95%EC%88%98%ED%98%95-%EC%8B%A4%EC%88%98%ED%98%95-8%EC%A7%84%EC%88%98-16%EC%A7%84%EC%88%98-%EC%82%AC%EC%B9%99%EC%97%B0%EC%82%B0-%EA%B3%84%EC%82%B0%EA%B8%B0-%EC%88%AB%EC%9E%90-%EB%A7%9E%EC%B6%94%EA%B8%B0#entry6comment</comments>
      <pubDate>Fri, 23 May 2025 03:39:46 +0900</pubDate>
    </item>
    <item>
      <title>GPTS의 GPT 지침 설정 방법. 답변 설정 방법.</title>
      <link>https://umjam33.tistory.com/entry/GPTS%EC%9D%98-GPT-%EC%A7%80%EC%B9%A8-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95-%EB%8B%B5%EB%B3%80-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;GPTS-GPT-지침설정방법-답변설정방법.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XZWDr/btsN6nzYe53/q1ZWq7EU5FGJ9ZdKR1OtN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XZWDr/btsN6nzYe53/q1ZWq7EU5FGJ9ZdKR1OtN1/img.png&quot; data-alt=&quot;GPTS-GPT-지침설정방법-답변설정방법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XZWDr/btsN6nzYe53/q1ZWq7EU5FGJ9ZdKR1OtN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXZWDr%2FbtsN6nzYe53%2Fq1ZWq7EU5FGJ9ZdKR1OtN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;GPTS-GPT-지침설정방법-답변설정방법.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;GPTS-GPT-지침설정방법-답변설정방법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPTS의 GPT를 한번 만들어 두었다고 하더라도, 나만보기 또는 링크로 공유기능을 이용하는 사용자들 제외한 스토어 사용자 전부가 매번 동일한 결과를 주는 것은 아닙니다. GPT 환경이나, 설정이 전부 다르기 때문입니다. 최대한 동일한 결과를 주기 위해서 GPT는 언제든지 수정이 가능하다는 점은 장점이라고 할 수가 있겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT가 목표한 작업을 오류없이 정확하게 이행할 확률을 높이고, 계정별 차이점과 챗GPT의 업데이트에 따른 변동성을 최소한으로 줄일 수 있는 지침 방법에는 어떤것이 있는지 한번 알아보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;GPT의 지침 설정 방법.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. GPT의 목적은 꼭 지침의 제일 처음에 입력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT는 기본적으로 지침 영역의 제일 앞부분을 가장 높은 우선순위를 줍니다. 그래야 GPT가 제작자의 의도에 따라 제대로 동작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2, GPT가 제공하는 기능이 많아질 경우, 각 기능별로 [CASE]로 구분해줘라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예:[CASE 1: 예제]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 단계별로 결과를 도출하는 경우 [스텝] 또는 [STEP]으로 구분하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예:[스텝 1: 단계별 동작]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 직후, 반드시를 적절히 이용하자. 직후는 특정 단계 바로 뒤에 실행, 반드시는 꼭 실행해야함을 알려준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 고정된 답변의 양식을 이용하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예: [질문하자] 당신의 이름이 무엇입니까? [답변하자] 안녕하세요. XX님. 반갑습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. GPT의 답변 방식을 미리 정해두자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예: 답변을 우측 코드창에서 대답해죠. 끊기지 않게 한번에 작성해주고, 미리보기는 생략해.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;GPT의 답변 설정 방법.&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 테이블(표).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예: 잘 정리된 답변을 받을 때 유용합니다.&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;테스트1&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;테스트2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;내용1&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;내용2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 코드 블록.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정의: 프로그래밍 언어의 코드를 표시하는 형식을 말합니다. 코드 요청시 대화창 밑으로 작성하는 경우가 있는데 우측 코드창에 작성해 달라고 요청합니다. 대화창 밑으로 작성하게 되면 코드가 짤려서 코드 수정시 어려움을 겪을수가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 이모티콘.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;답변에 이모티콘을 적절히 사용하면 가독성을 올리는데 좋은 방법입니다. 친근함! 강조! 역할에 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 텍스트 서식 변경.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적절한 텍스트를 사요함으로써 가독성 향상에 이바지합니다. 글꼴, 기울임꼴, 크기조정, 제목크기설정등을 조정할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 이미지 삽입하기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미리 지정한 이미지를 출력할 수 있습니다. 이미지 출력 양식 : ![](이미지 주소) 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 링크 삽입.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT 답변에 링크를 삽입할 수가 있습니다. 링크 삽입 양식 : [텍스트](링크주소)입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예:[네이버](www,naver.com)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 이전 단계 복원&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT 편집기 -&amp;gt; ''' 점 세개 클릭 -&amp;gt; 버전 기록 클릭 -&amp;gt; 이전 버전 선택 -&amp;gt; 우측 상단의 이 버전 복원 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. GPT 복제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT 편집기 -&amp;gt; ''' 점 세개 클릭 -&amp;gt; GPT 복제 클릭 -&amp;gt; 내 GPT 확인&lt;/p&gt;</description>
      <category>챗GPTS</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/5</guid>
      <comments>https://umjam33.tistory.com/entry/GPTS%EC%9D%98-GPT-%EC%A7%80%EC%B9%A8-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95-%EB%8B%B5%EB%B3%80-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95#entry5comment</comments>
      <pubDate>Thu, 22 May 2025 01:16:35 +0900</pubDate>
    </item>
    <item>
      <title>나만의 챗 GPT만들기 | GPTS 하는 방법 | GPT 탐색 | GPT 스토어</title>
      <link>https://umjam33.tistory.com/entry/%EB%82%98%EB%A7%8C%EC%9D%98-%EC%B1%97-GPT%EB%A7%8C%EB%93%A4%EA%B8%B0-GPTS-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-GPT-%ED%83%90%EC%83%89-GPT-%EC%8A%A4%ED%86%A0%EC%96%B4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나만의-GPTS-만들기0.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDq9SM/btsN60J5GY2/pXbSnZ5qqKyWDEmUU4YiXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDq9SM/btsN60J5GY2/pXbSnZ5qqKyWDEmUU4YiXK/img.png&quot; data-alt=&quot;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDq9SM/btsN60J5GY2/pXbSnZ5qqKyWDEmUU4YiXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDq9SM%2FbtsN60J5GY2%2FpXbSnZ5qqKyWDEmUU4YiXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;나만의-GPTS-만들기0.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반갑습니다. 오늘은 나만의 챗 GPT 만들기. GPTS 하는 방법. GPT 탐색 및 스토어를 이용하는 방법에 대해서 순서대로 알려드리려고 합니다. GPT를 만들고, 수정하고, 다른 사용자가 만든 GPT를 검색하는 모든 과정은 모두 GPT 스토어에서 진행되니 참고하시기 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 다른 사용자가 만든 GPT는 챗GPT 무료 이용자도 이용이 가능하지만 내가 직접 GPT를 만드는 과정은 유료 이용자만 가능합니다. 챗GPT의 유료 가격은 20달러 우리나라 돈으로 3만원 정도에 가입이 가능합니다. 챗GPT를 저렴하게 월 구독료 8천원대에 이용하는 방법도 있습니다. 아래 링크 참고 하시면 좋을 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kangpring.com/%eb%84%b7%ed%94%8c%eb%a6%ad%ec%8a%a4-%eb%94%94%ec%a6%88%eb%8b%88-%ed%94%8c%eb%9f%ac%ec%8a%a4-%ec%b1%97gpt-%eb%b0%98%ea%b0%92%ec%97%90-%ec%9d%b4%ec%9a%a9%ed%95%98%eb%8a%94-%eb%b0%a9%eb%b2%95/&quot;&gt;챗GPT 반값에 이용하는 방법 -겜스고&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;※ GPTS를 만들어서 스토어에 공유할 생각이신 경우에는 겜스고 이용하지 마세요. 겜스고는 저렴한 가격에 이용이 가능하지만, GPTS를 나만 이용하던가, 링크로 공유하는 목적으로 사용하실 경우에 이용하시는 것을 추천드립니다. 참고로, 겜스고는 여러명이 하나의 아이디를 공유하기 때문에 저렴한 가격에 이용이 가능한 장점이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 3개월씩 끊어서 이용하고 있습니다. 장점도 있지만 단점도 있으니 필요에 따라서 이용해 보시는걸 추천드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 새 GPT 생성하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나만의-GPTS-만들기1.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uLrPB/btsN5JJch29/sO1APa331152HlX91ytm31/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uLrPB/btsN5JJch29/sO1APa331152HlX91ytm31/img.jpg&quot; data-alt=&quot;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uLrPB/btsN5JJch29/sO1APa331152HlX91ytm31/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuLrPB%2FbtsN5JJch29%2FsO1APa331152HlX91ytm31%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;171&quot; data-filename=&quot;나만의-GPTS-만들기1.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT를 한번 실제로 만들어 보면서 설명드리겠습니다. 좌측에 GPT탐색을 누르시고 챗GPT 화면의 우측 상단에 보시면 +만들기 버튼이 있습니다. 꾹 눌러줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나만의-GPTS-만들기2.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;877&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GqNlY/btsN4BST9wv/dCaCGjeVgrOkiGUdqcPNXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GqNlY/btsN4BST9wv/dCaCGjeVgrOkiGUdqcPNXK/img.jpg&quot; data-alt=&quot;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GqNlY/btsN4BST9wv/dCaCGjeVgrOkiGUdqcPNXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGqNlY%2FbtsN4BST9wv%2FdCaCGjeVgrOkiGUdqcPNXK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;877&quot; data-filename=&quot;나만의-GPTS-만들기2.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;877&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 위와 같은 화면이 나옵니다. 만들기 버튼과 구성버튼이 있는데요. 먼저, 만들기 화면은 대화형식으로 GPT 초안을 만든다는 느낌으로 접근하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나만의-GPTS-만들기3.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYljhF/btsN5NSmubV/SsTkb0EWTQ8uE1B7gfKVtk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYljhF/btsN5NSmubV/SsTkb0EWTQ8uE1B7gfKVtk/img.jpg&quot; data-alt=&quot;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYljhF/btsN5NSmubV/SsTkb0EWTQ8uE1B7gfKVtk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYljhF%2FbtsN5NSmubV%2FSsTkb0EWTQ8uE1B7gfKVtk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;770&quot; data-filename=&quot;나만의-GPTS-만들기3.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;770&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만들기가 끝나면 구성버튼을 눌러주세요. 더욱 세세하게 이곳에서 수정하시면 되겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나만의-GPTS-만들기4.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmRE0E/btsN6mNv7fW/NLwbkNkPgg7Ti3Lmm9BF3k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmRE0E/btsN6mNv7fW/NLwbkNkPgg7Ti3Lmm9BF3k/img.jpg&quot; data-alt=&quot;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmRE0E/btsN6mNv7fW/NLwbkNkPgg7Ti3Lmm9BF3k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmRE0E%2FbtsN6mNv7fW%2FNLwbkNkPgg7Ti3Lmm9BF3k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;880&quot; data-filename=&quot;나만의-GPTS-만들기4.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 만들기부터 시작해봤습니다. 채팅창에 &quot;너는 병명 당뇨에 대해서만 10년동안 연구한 학자야. 당뇨와 관련된 지식에 대해서는 1등이야. 내가 당뇨와 관련된 질문을 하면 한글로 대답해줘. 그리고 설정값들도 한글로 변경해줘.&quot; 라고 입력했습니다. 그랬더니 이름을 제안하고, 프로필 사진까지 만들어 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나만의-GPTS-만들기5.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;987&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bx664a/btsN5QVt3A6/02NWhRqvIy0zKgpYR4Ulv0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bx664a/btsN5QVt3A6/02NWhRqvIy0zKgpYR4Ulv0/img.jpg&quot; data-alt=&quot;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bx664a/btsN5QVt3A6/02NWhRqvIy0zKgpYR4Ulv0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx664a%2FbtsN5QVt3A6%2F02NWhRqvIy0zKgpYR4Ulv0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;987&quot; data-filename=&quot;나만의-GPTS-만들기5.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;987&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 구성버튼을 눌러서 화면이 바뀝니다. 각종 정보들이 가득 들어있는데, 세부사항에 대한 내용은 아래에서 알려드리도록 하겠습니다. 모든 작업이 끝났으면 만들기 버튼을 눌러줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나만의-GPTS-만들기6.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zszpx/btsN5tzTBOX/mKbFykNwijjGzPkJ99AAPK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zszpx/btsN5tzTBOX/mKbFykNwijjGzPkJ99AAPK/img.jpg&quot; data-alt=&quot;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zszpx/btsN5tzTBOX/mKbFykNwijjGzPkJ99AAPK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZszpx%2FbtsN5tzTBOX%2FmKbFykNwijjGzPkJ99AAPK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;572&quot; data-filename=&quot;나만의-GPTS-만들기6.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당뇨 연구자 GPT를 어떻게 공유할것인지 물어봅니다. 저는 나만 보기를 선택해서 저장해줬습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나만의-GPTS-만들기7.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zt1BQ/btsN5VvPJKc/sH0KFxkaaTZzV24Y76TQMk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zt1BQ/btsN5VvPJKc/sH0KFxkaaTZzV24Y76TQMk/img.jpg&quot; data-alt=&quot;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zt1BQ/btsN5VvPJKc/sH0KFxkaaTZzV24Y76TQMk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzt1BQ%2FbtsN5VvPJKc%2FsH0KFxkaaTZzV24Y76TQMk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;380&quot; data-filename=&quot;나만의-GPTS-만들기7.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당뇨 연구자 GPT가 만들어진 모습입니다. 꽤 볼만하죠?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나만의-GPTS-만들기8.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UEfS2/btsN4pSn2vL/2IOehB1VPzKF8tJZ8d9ZC0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UEfS2/btsN4pSn2vL/2IOehB1VPzKF8tJZ8d9ZC0/img.jpg&quot; data-alt=&quot;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UEfS2/btsN4pSn2vL/2IOehB1VPzKF8tJZ8d9ZC0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUEfS2%2FbtsN4pSn2vL%2F2IOehB1VPzKF8tJZ8d9ZC0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;258&quot; data-filename=&quot;나만의-GPTS-만들기8.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나만의-챗GPT만들기-GPTS-하는방법-GPT탐색-GPT스토어&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 만든 GPT는 챗GPT 첫 화면에서 우측 상단의 내 GPT를 누르면 확인하실수가 있으니 참고하시기 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. GPTS 구성탭 세부 설정하는 방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이름 : 당뇨 연구자. (검색 결과에 노출되기 때문에 전략적으로 잘 지어주는 것이 좋습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설명 : ,,, (GPT의 역할을 직관적으로 알려주는 내용이 적혀 있습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지침 : ,,, (가장 중요한 부분, 미리 입력된 프롬프트라고 생각하면 됩니다. 목적과 역할등이 있으면 좋습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화 스터터 : ,,, (GPT 설명 아래에 위치한 텍스트 버튼. 사용자의 궁금증을 유발하기에 좋은 기능)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지식 : ,,, (GPT에 관련 파일을 첨부하는 기능. 미리 학습을 시켜주는 용도로 사용합니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능 : ,,, (웹 검색, 캔버스, 이미지 생성등 필요한 기능을 활성화 시켜주는 용도로 사용합니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업 : ,,, (GPT와 외부 서비스의 연동을 지원하는 부분입니다.)&lt;/p&gt;</description>
      <category>챗GPTS</category>
      <category>gpt</category>
      <category>GPTs</category>
      <category>gpt만들기</category>
      <category>GPT스토어</category>
      <category>gpt탐색</category>
      <category>챗gpt</category>
      <category>챗gpts</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/4</guid>
      <comments>https://umjam33.tistory.com/entry/%EB%82%98%EB%A7%8C%EC%9D%98-%EC%B1%97-GPT%EB%A7%8C%EB%93%A4%EA%B8%B0-GPTS-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-GPT-%ED%83%90%EC%83%89-GPT-%EC%8A%A4%ED%86%A0%EC%96%B4#entry4comment</comments>
      <pubDate>Wed, 21 May 2025 01:16:57 +0900</pubDate>
    </item>
    <item>
      <title>에이아이 GOGO 블로그를 시작합니다.</title>
      <link>https://umjam33.tistory.com/notice/3</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;방문해 주신 모든 분들에게 감사드리고요. 방치했던 블로그라 새롭게 시작하려고 합니다. 열심히 할 예정이니 서로 화이팅 하며 소통했으면 합니다. 궁금하신 내용이 있으시면 댓글부탁드리고, 요청도 있으면 해드릴려고 노력하겠으니 많은 관심 부탁드립니다. 감사합니다.&lt;/p&gt;</description>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/notice/3</guid>
      <pubDate>Tue, 20 May 2025 23:38:55 +0900</pubDate>
    </item>
    <item>
      <title>챗 GPTS란? GPT를 알면 AI의 속도를 2배 향상시킬 수 있다.</title>
      <link>https://umjam33.tistory.com/entry/%EC%B1%97-GPTS%EB%9E%80-GPT%EB%A5%BC-%EC%95%8C%EB%A9%B4-AI%EC%9D%98-%EC%86%8D%EB%8F%84%EB%A5%BC-2%EB%B0%B0-%ED%96%A5%EC%83%81%EC%8B%9C%ED%82%AC-%EC%88%98-%EC%9E%88%EB%8B%A4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자0.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDfCsS/btsN5r9SPsi/f8KdGlhqiV7xLIVkmGDgD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDfCsS/btsN5r9SPsi/f8KdGlhqiV7xLIVkmGDgD1/img.png&quot; data-alt=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDfCsS/btsN5r9SPsi/f8KdGlhqiV7xLIVkmGDgD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDfCsS%2FbtsN5r9SPsi%2Ff8KdGlhqiV7xLIVkmGDgD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;700&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자0.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 챗 GPTS 기초. GPT와 챗GPT에 대해서 알아보자.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗GPT는 2022년 출시되었습니다. 처음에 비해 비약적으로 향상된 AI의 성능으로인해 2025년 현재 엄청난 사용자수를 자랑합니다. 예전에는 정보의 질도 양도 모자랐습니다. 정보의 질도 문제였지만, 거짓말을 하는 챗봇이라는 오명아래 정보도 현재 정보가 아니라 몇년전 정보만을 학습하고 사용했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2023년에는 사용자가 직접 챗GPT의 작동방식을 조정하고 글쓰기, 그림그리기, 코딩하기등의 특정 역할을 전문적으로 수행하는 전문 챗봇을 만들 수 있게 되었습니다. 이런 전문 챗봇을 GPT라고 하고, 커스텀 GPT라고 부릅니다. 그리고 GPT들을 통칭하여 GPTS라고 부르고 있습니다. GPT는 GPT 스토어를 통해서 공개적으로 다른 사람들과 공유할 수 있으며, 혼자만 비공개적으로 사용할 수도 있게 선택이 가능하다는 점도 장점이라고 할 수가 있겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;GPT는 코딩에 대한 지식이 전무하고, 그림 그리는 실력이 없어도, 음악에 대해서 아무것도 몰라도 누구나 만들 수 있다는 점은 여타의 다른 챗봇들과는 조금 다릅니다. GPT는 사용자가 미리 입력한 지침에 의해서 작동을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들엇, 설명을 드려보겠습니다. 내가 네이버 블로그 글쓰기를 하려고 한다고 합시다. 네이버 블로그 글쓰기 초안을 작성하고 이 글이 네이버 검색에 나왔으면 좋겠습니다. 그러려면 내가 쓴글을 네이버 SEO에 맞게 황금키워드를 가지고 작성을 해주면 더욱 노출될 확률이 올라갈 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼, 챗GPT에 요청을 합니다. 먼저, 내가 작성한 초안을 챗GPT에 복사 붙여넣기하고 &quot;네이버 SEO에 맞게 황금 키워드를 이용해서 새로 작성해줘&quot; 라고 명령을 내릴수가 있습니다. 그런데 매번 이런 명령을 내리는 것은 비합리적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이유로 첫번째가 반복된 명령어를 계속 입력을 해주는 것은 한두번 글쓰기를 할 것이라면 상관이 없지만, 몇십번 몇백번의 글쓰기를 한다고 치면 굉장한 스트레스로 다가오기도 합니다. 두번째로, 네이버 SEO라는 단어와 황금키워드라는 단어가 문제입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론, 챗GPT가 어느정도 네이버 SEO와 황금키워드에 대해서 알고 있는 내용도 있습니다. 하지만, 전문적으로 블로그를 하시는 분들에게는 불만족적인 데이터일 수도 있다는 단점도 있습니다. 내가 알고 있는 네이버 SEO를 지침으로 미리 입력해 두면 매번 따로 입력할 필요없이 결과를 만들어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 알고 있는 네이버 SEO... 예를 들어, &quot;황금키워드를 본문에 2~5번정도 녹여서 들어가게 해줘&quot;라는 명령과 본문안에 사진을 넣을 수 있는 위치에다가 &quot;사진&quot; 이라는 글자를 다섯군데에 배치해줘. 라는 내용을 미리 GPT에 입력을 해주고 해당 GPT에 지침으로 입력을 해둔 다음에 다시 해당 GPT에게 명령을 내린다면 더욱 더 네이버 SEO에 맞는 결과를 도출해 줄 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해 GPT는 아이디어만 있으면 누구나 쉽게 만들 수 있습니다. GPT는 사용자가 입력한 지침에 맞게 작동합니다. 지침은 한글로 작성해도 되며 수정도 마음대로 할 수가 있습니다. 지침은 미리 입력된 프롬프트라고 생각하셔도 무방합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. GPT 스토어 활용법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT 스토어는 사용자들이 만들어서 GPT를 공유하는 스토어를 말합니다. 구글의 플레이스토어나 앱스토어에서 앱을 검색하듯이 GPT 스토어에서도 검색을 통해서 다른 사용자들의 GPT를 사용하실수가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자1.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S8G5S/btsN4umg4iS/BuHHyQn62O017zc5p4Xto0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S8G5S/btsN4umg4iS/BuHHyQn62O017zc5p4Xto0/img.jpg&quot; data-alt=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S8G5S/btsN4umg4iS/BuHHyQn62O017zc5p4Xto0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS8G5S%2FbtsN4umg4iS%2FBuHHyQn62O017zc5p4Xto0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;130&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자1.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗GPT 사이트에 접속합니다. 좌측에 GPT탐색이라고 써진곳은 눌러줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자2.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsKW6i/btsN5QnXuer/kK2uyHYgbHb88LrtjZHhG0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsKW6i/btsN5QnXuer/kK2uyHYgbHb88LrtjZHhG0/img.jpg&quot; data-alt=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsKW6i/btsN5QnXuer/kK2uyHYgbHb88LrtjZHhG0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsKW6i%2FbtsN5QnXuer%2FkK2uyHYgbHb88LrtjZHhG0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;718&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자2.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;718&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 GPT 검색화면이 나옵니다. 원하시는 내용을 넣고 검색해줍니다. 최상위 선택 항목으로 글쓰기, 생산성, 연구및분석, 라이프스타일, 델E, 프로그래밍등이 있으니 참고하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자3.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0JQqd/btsN5KBizei/LoqCfpKVVC1gKPCDN1Xc1K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0JQqd/btsN5KBizei/LoqCfpKVVC1gKPCDN1Xc1K/img.jpg&quot; data-alt=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0JQqd/btsN5KBizei/LoqCfpKVVC1gKPCDN1Xc1K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0JQqd%2FbtsN5KBizei%2FLoqCfpKVVC1gKPCDN1Xc1K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;475&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자3.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 네이버 SEO를 검색해봤습니다. 그리고 첫 번째 100K 이용자가 있는 GPT를 선택해주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자4.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6n3kT/btsN4JC5ntL/QNBvxFYPS6ZeAM12ZDKRek/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6n3kT/btsN4JC5ntL/QNBvxFYPS6ZeAM12ZDKRek/img.jpg&quot; data-alt=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6n3kT/btsN4JC5ntL/QNBvxFYPS6ZeAM12ZDKRek/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6n3kT%2FbtsN4JC5ntL%2FQNBvxFYPS6ZeAM12ZDKRek%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;545&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자4.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 화면이 나오면 채팅을 눌러줍니다. 사용설명서도 있으니 한번 읽어 봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자5.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m1gPX/btsN4pkuDr3/Kj0faPrud7t2HyHXqr1PQk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m1gPX/btsN4pkuDr3/Kj0faPrud7t2HyHXqr1PQk/img.jpg&quot; data-alt=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m1gPX/btsN4pkuDr3/Kj0faPrud7t2HyHXqr1PQk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm1gPX%2FbtsN4pkuDr3%2FKj0faPrud7t2HyHXqr1PQk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;256&quot; data-filename=&quot;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자5.jpg&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;챗 GPTS-기초-GPT와-챗GPT에-대해서-알아보자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 궁금해서 &quot;네이버 블로그 SEO가 뭐야? 라고 물어봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대답:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;네이버 블로그 SEO&quot; 는 정말 중요한 개념인데요. 쉽게 말해서 내가 쓴 블로그 글이 네이버 검색에 잘 뜨게 만드는 방법이에요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SEO는 영어로 Search Enging Optimization의 줄임말인데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리말로 하면 검색 최적화라고 할 수 있어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 대답이 나왔네요. 여기서 우리가 GPT를 이용하는 방법은 두가지가 있겠습니다. 처음부터 대화 스타터를 눌러서 하나하나 진행하는 방법이 있겠고요. 또 한가지 방법은 내가 써놓은 초안을 복사 붙여넣기해서 네이버 SEO에 맞게 작성해줘! 라고 요청하는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버 블로그의 상위 블로거들이 만든 GPT들이 포진하고 있기 때문에 잘만 이용하면 노출에 도움이 될것 같네요. 꼭 네이버 SEO만이 있는것이 아닙니다. 저는 여기서 또 자주 사용하는 GPT가 있는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://app.leonardo.ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://app.leonardo.ai/&lt;/a&gt; 에서 사용할 프롬프트를 작성해주는 GPT를 이용하고 있습니다. 이 사이트는 이미지를 만들어주는 사이트인데, GPT가 도와주니까 더욱 마음에 드는 이미지가 나오는것을 확인할수가 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뿐만 아니라, 동영상을 만들어주는 사이트 부터 시작해서 각종 도움이 되는 GPT가 가득하니 한번 테스트겸 해보시면 좋을 것 같습니다. 오늘은 여기까지입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>챗GPTS</category>
      <category>gpt</category>
      <category>GPTs</category>
      <category>챗gpt</category>
      <category>챗gpts</category>
      <category>챗봇</category>
      <author>＆＠■&amp;larr;※</author>
      <guid isPermaLink="true">https://umjam33.tistory.com/2</guid>
      <comments>https://umjam33.tistory.com/entry/%EC%B1%97-GPTS%EB%9E%80-GPT%EB%A5%BC-%EC%95%8C%EB%A9%B4-AI%EC%9D%98-%EC%86%8D%EB%8F%84%EB%A5%BC-2%EB%B0%B0-%ED%96%A5%EC%83%81%EC%8B%9C%ED%82%AC-%EC%88%98-%EC%9E%88%EB%8B%A4#entry2comment</comments>
      <pubDate>Tue, 20 May 2025 23:34:28 +0900</pubDate>
    </item>
  </channel>
</rss>