<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>MoonHalo</title>
  
  
  <link href="https://www.moonhalo.fun/atom.xml" rel="self"/>
  
  <link href="https://www.moonhalo.fun/"/>
  <updated>2026-07-27T13:07:07.527Z</updated>
  <id>https://www.moonhalo.fun/</id>
  
  <author>
    <name>MoonHalo</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Python基础</title>
    <link href="https://www.moonhalo.fun/posts/99832f47.html"/>
    <id>https://www.moonhalo.fun/posts/99832f47.html</id>
    <published>2026-07-27T13:07:07.527Z</published>
    <updated>2026-07-27T13:07:07.527Z</updated>
    
    <content type="html"><![CDATA[<h1>一、基础语法</h1><h2 id="1、注释">1、注释</h2><h3 id="1-1、单行注释">1.1、单行注释</h3><p>单行注释以&quot;#&quot;开头，直到行尾都会被注释。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 这是一行注释</span></span><br></pre></td></tr></table></figure><h3 id="1-2、多行注释">1.2、多行注释</h3><p>多行注释以&quot;&quot;&quot;或’''开始，指导下一个相同符号结束。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">这是多行注释</span></span><br><span class="line"><span class="string">这是多行注释</span></span><br><span class="line"><span class="string">&quot;&quot;&quot;</span></span><br></pre></td></tr></table></figure><h2 id="2、标识符和关键字">2、标识符和关键字</h2><h3 id="2-1、标识符">2.1、标识符</h3><p>标识符指变量、函数、类等的名称。</p><blockquote><p>规则：必须以字母和下划线开头，并且只能包含下划线、数字和字母，区分大小写。</p></blockquote><h3 id="2-2、关键字">2.2、关键字</h3><p>Python中关键字不可作为标识符。</p><blockquote><p>常见关键字有：if、else、for、while、def、class、import等</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 查看所有 Python 关键字</span></span><br><span class="line"><span class="keyword">import</span> keyword</span><br><span class="line"><span class="built_in">print</span>(keyword.kwlist)</span><br></pre></td></tr></table></figure><h2 id="3、输入输出">3、输入输出</h2><p>Python通过==input()==函数获取用户输入，通过==print()==函数显示输出。</p><blockquote><p>注意：input()获取的数据类型是字符串类型</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># input()</span></span><br><span class="line"><span class="comment"># 输入数字并进行计算</span></span><br><span class="line">num1 = <span class="built_in">input</span>(<span class="string">&quot;请输入第一个数字：&quot;</span>)</span><br><span class="line">num2 = <span class="built_in">input</span>(<span class="string">&quot;请输入第二个数字：&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 错误的做法</span></span><br><span class="line"><span class="comment"># result = num1 + num2  # 这会进行字符串拼接，不是数学运算</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 正确的做法</span></span><br><span class="line">result = <span class="built_in">int</span>(num1) + <span class="built_in">int</span>(num2)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;两数之和为：<span class="subst">&#123;result&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># print() 函数的高级用法</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;第一行&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;第二行&quot;</span>)  <span class="comment"># 默认会换行</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;同一行&quot;</span>, end=<span class="string">&quot; &quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;输出&quot;</span>, end=<span class="string">&quot; &quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;内容&quot;</span>)  <span class="comment"># 使用 end 参数控制结尾</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;苹果&quot;</span>, <span class="string">&quot;香蕉&quot;</span>, <span class="string">&quot;橙子&quot;</span>, sep=<span class="string">&quot;-&quot;</span>)  <span class="comment"># 使用 sep 参数控制分隔符</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="4、变量的定义与使用">4、变量的定义与使用</h2><p>在Python中，不需要提前声明变量，可以直接赋值使。</p><figure class="highlight apache"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 单独赋值</span></span><br><span class="line"><span class="attribute">x</span> = <span class="number">1</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 多重赋值</span></span><br><span class="line"><span class="attribute">x</span>,y,z = <span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="5、内存管理和垃圾回收机制">5、内存管理和垃圾回收机制</h2><blockquote><p>在Python中，创建变量时，会在内存中创建一个对象，并将这个变量指向这个对象。而当这个对象没有变量指向时，就会被自动清理。</p></blockquote><h1>二、数据类型和运算符</h1><h2 id="1、数字类型">1、数字类型</h2><h3 id="1-1、整数">1.1、整数</h3><blockquote><p>整数类型可以表示任意大小的整数。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 整数类型示例</span></span><br><span class="line">age = <span class="number">25</span></span><br><span class="line">population = <span class="number">1400000000</span>  <span class="comment"># 14亿</span></span><br><span class="line">small_number = -<span class="number">100</span></span><br><span class="line">big_number = <span class="number">999999999999999999999999999999</span></span><br></pre></td></tr></table></figure><h3 id="1-2、浮点数">1.2、浮点数</h3><blockquote><p>浮点数指带小数点的数字。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 浮点数类型示例</span></span><br><span class="line">temperature = <span class="number">36.5</span></span><br><span class="line">pi = <span class="number">3.14159</span></span><br><span class="line">scientific_notation = <span class="number">1.23e-4</span>  <span class="comment"># 科学计数法，等于0.000123</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># 浮点数的精度问题</span></span><br><span class="line">result = <span class="number">0.1</span> + <span class="number">0.2</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;0.1 + 0.2 = <span class="subst">&#123;result&#125;</span>&quot;</span>)  <span class="comment"># 可能不是你期望的0.3</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;结果是否等于0.3：<span class="subst">&#123;result == <span class="number">0.3</span>&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="1-3、复数">1.3、复数</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 复数类型示例</span></span><br><span class="line">complex_num1 = <span class="number">3</span> + <span class="number">4j</span></span><br><span class="line">complex_num2 = <span class="built_in">complex</span>(<span class="number">5</span>, <span class="number">6</span>)  <span class="comment"># 另一种创建方式</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;复数1：<span class="subst">&#123;complex_num1&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;复数2：<span class="subst">&#123;complex_num2&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;复数1的实部：<span class="subst">&#123;complex_num1.real&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;复数1的虚部：<span class="subst">&#123;complex_num1.imag&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="2、字符串类型">2、字符串类型</h2><blockquote><p>字符串类型常用于处理文本信息。可以用单、双、三引号创建。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 字符串创建的不同方式</span></span><br><span class="line">name = <span class="string">&#x27;Alice&#x27;</span></span><br><span class="line">message = <span class="string">&quot;Hello, World!&quot;</span></span><br><span class="line">long_text = <span class="string">&quot;&quot;&quot;这是一个</span></span><br><span class="line"><span class="string">多行字符串</span></span><br><span class="line"><span class="string">可以包含换行&quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(name)</span><br><span class="line"><span class="built_in">print</span>(message)</span><br><span class="line"><span class="built_in">print</span>(long_text)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 字符串的常用操作</span></span><br><span class="line">text = <span class="string">&quot;  Python Programming  &quot;</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;原始字符串：&#x27;<span class="subst">&#123;text&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;去掉空格：&#x27;<span class="subst">&#123;text.strip()&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;转大写：&#x27;<span class="subst">&#123;text.upper()&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;转小写：&#x27;<span class="subst">&#123;text.lower()&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;替换内容：&#x27;<span class="subst">&#123;text.replace(<span class="string">&#x27;Python&#x27;</span>, <span class="string">&#x27;Java&#x27;</span>)&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;字符串长度：<span class="subst">&#123;<span class="built_in">len</span>(text)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;是否包含Python：<span class="subst">&#123;<span class="string">&#x27;Python&#x27;</span> <span class="keyword">in</span> text&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 字符串索引和切片</span></span><br><span class="line">greeting = <span class="string">&quot;Hello, Python!&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;第一个字符：<span class="subst">&#123;greeting[<span class="number">0</span>]&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;最后一个字符：<span class="subst">&#123;greeting[-<span class="number">1</span>]&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;前5个字符：<span class="subst">&#123;greeting[:<span class="number">5</span>]&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;后7个字符：<span class="subst">&#123;greeting[-<span class="number">7</span>:]&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;中间部分：<span class="subst">&#123;greeting[<span class="number">7</span>:<span class="number">13</span>]&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;反转字符串：<span class="subst">&#123;greeting[::-<span class="number">1</span>]&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="3、布尔类型">3、布尔类型</h2><blockquote><p>布尔类型用于表示真或假。即true或false。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 布尔类型的基本使用</span></span><br><span class="line">is_student = <span class="literal">True</span></span><br><span class="line">is_working = <span class="literal">False</span></span><br><span class="line">has_license = <span class="literal">True</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;是学生：<span class="subst">&#123;is_student&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;在工作：<span class="subst">&#123;is_working&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;有驾照：<span class="subst">&#123;has_license&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 布尔值的产生</span></span><br><span class="line">age = <span class="number">20</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;是否成年：<span class="subst">&#123;age &gt;= <span class="number">18</span>&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;是否未成年：<span class="subst">&#123;age &lt; <span class="number">18</span>&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 空值的布尔转换</span></span><br><span class="line">empty_string = <span class="string">&quot;&quot;</span></span><br><span class="line">empty_list = []</span><br><span class="line">zero = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;空字符串的布尔值：<span class="subst">&#123;<span class="built_in">bool</span>(empty_string)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;空列表的布尔值：<span class="subst">&#123;<span class="built_in">bool</span>(empty_list)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;零的布尔值：<span class="subst">&#123;<span class="built_in">bool</span>(zero)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="4、数据类型转换">4、数据类型转换</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 数据类型转换示例</span></span><br><span class="line"><span class="comment"># 字符串转数字</span></span><br><span class="line">str_num = <span class="string">&quot;123&quot;</span></span><br><span class="line">int_num = <span class="built_in">int</span>(str_num)</span><br><span class="line">float_num = <span class="built_in">float</span>(str_num)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;字符串：<span class="subst">&#123;str_num&#125;</span> (类型：<span class="subst">&#123;<span class="built_in">type</span>(str_num)&#125;</span>)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;整数：<span class="subst">&#123;int_num&#125;</span> (类型：<span class="subst">&#123;<span class="built_in">type</span>(int_num)&#125;</span>)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;浮点数：<span class="subst">&#123;float_num&#125;</span> (类型：<span class="subst">&#123;<span class="built_in">type</span>(float_num)&#125;</span>)&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 数字转字符串</span></span><br><span class="line">number = <span class="number">456</span></span><br><span class="line">str_number = <span class="built_in">str</span>(number)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;数字转字符串：<span class="subst">&#123;str_number&#125;</span> (类型：<span class="subst">&#123;<span class="built_in">type</span>(str_number)&#125;</span>)&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="5、算数运算符">5、算数运算符</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 基本算术运算</span></span><br><span class="line">a = <span class="number">10</span></span><br><span class="line">b = <span class="number">3</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;加法：<span class="subst">&#123;a&#125;</span> + <span class="subst">&#123;b&#125;</span> = <span class="subst">&#123;a + b&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;减法：<span class="subst">&#123;a&#125;</span> - <span class="subst">&#123;b&#125;</span> = <span class="subst">&#123;a - b&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;乘法：<span class="subst">&#123;a&#125;</span> * <span class="subst">&#123;b&#125;</span> = <span class="subst">&#123;a * b&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;除法：<span class="subst">&#123;a&#125;</span> / <span class="subst">&#123;b&#125;</span> = <span class="subst">&#123;a / b&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;整除：<span class="subst">&#123;a&#125;</span> // <span class="subst">&#123;b&#125;</span> = <span class="subst">&#123;a // b&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;取模：<span class="subst">&#123;a&#125;</span> % <span class="subst">&#123;b&#125;</span> = <span class="subst">&#123;a % b&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;幂运算：<span class="subst">&#123;a&#125;</span> ** <span class="subst">&#123;b&#125;</span> = <span class="subst">&#123;a ** b&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="6、比较运算符">6、比较运算符</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 比较运算符示例</span></span><br><span class="line">x = <span class="number">10</span></span><br><span class="line">y = <span class="number">5</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;x&#125;</span> &gt; <span class="subst">&#123;y&#125;</span>: <span class="subst">&#123;x &gt; y&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;x&#125;</span> &lt; <span class="subst">&#123;y&#125;</span>: <span class="subst">&#123;x &lt; y&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;x&#125;</span> &gt;= <span class="subst">&#123;y&#125;</span>: <span class="subst">&#123;x &gt;= y&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;x&#125;</span> &lt;= <span class="subst">&#123;y&#125;</span>: <span class="subst">&#123;x &lt;= y&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;x&#125;</span> == <span class="subst">&#123;y&#125;</span>: <span class="subst">&#123;x == y&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;x&#125;</span> != <span class="subst">&#123;y&#125;</span>: <span class="subst">&#123;x != y&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 字符串比较</span></span><br><span class="line">name1 = <span class="string">&quot;Alice&quot;</span></span><br><span class="line">name2 = <span class="string">&quot;Bob&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;字符串比较：<span class="subst">&#123;name1&#125;</span> &lt; <span class="subst">&#123;name2&#125;</span> = <span class="subst">&#123;name1 &lt; name2&#125;</span>&quot;</span>)  <span class="comment"># 按字典序比较</span></span><br></pre></td></tr></table></figure><h2 id="7、逻辑运算符">7、逻辑运算符</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 逻辑运算符示例</span></span><br><span class="line">age = <span class="number">25</span></span><br><span class="line">has_job = <span class="literal">True</span></span><br><span class="line">has_car = <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># and运算符：所有条件都为True时结果才为True</span></span><br><span class="line">can_rent_car = age &gt;= <span class="number">21</span> <span class="keyword">and</span> has_job</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;可以租车：<span class="subst">&#123;can_rent_car&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># or运算符：任意一个条件为True时结果就为True</span></span><br><span class="line">can_travel = has_car <span class="keyword">or</span> age &gt;= <span class="number">18</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;可以旅行：<span class="subst">&#123;can_travel&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># not运算符：取反</span></span><br><span class="line">is_minor = <span class="keyword">not</span> (age &gt;= <span class="number">18</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;是未成年人：<span class="subst">&#123;is_minor&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 复杂逻辑判断</span></span><br><span class="line">username = <span class="string">&quot;admin&quot;</span></span><br><span class="line">password = <span class="string">&quot;123456&quot;</span></span><br><span class="line">is_admin = username == <span class="string">&quot;admin&quot;</span> <span class="keyword">and</span> password == <span class="string">&quot;123456&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;是管理员：<span class="subst">&#123;is_admin&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="8、赋值运算符">8、赋值运算符</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 基本赋值和复合赋值</span></span><br><span class="line">count = <span class="number">10</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;初始值：<span class="subst">&#123;count&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">count += <span class="number">5</span>  <span class="comment"># 等同于 count = count + 5</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;加5后：<span class="subst">&#123;count&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">count -= <span class="number">3</span>  <span class="comment"># 等同于 count = count - 3</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;减3后：<span class="subst">&#123;count&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">count *= <span class="number">2</span>  <span class="comment"># 等同于 count = count * 2</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;乘2后：<span class="subst">&#123;count&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">count //= <span class="number">4</span>  <span class="comment"># 等同于 count = count // 4</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;整除4后：<span class="subst">&#123;count&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="9、位运算符">9、位运算符</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 位运算符示例</span></span><br><span class="line">a = <span class="number">12</span>  <span class="comment"># 二进制：1100</span></span><br><span class="line">b = <span class="number">5</span>   <span class="comment"># 二进制：0101</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;a = <span class="subst">&#123;a&#125;</span> (二进制：<span class="subst">&#123;<span class="built_in">bin</span>(a)&#125;</span>)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;b = <span class="subst">&#123;b&#125;</span> (二进制：<span class="subst">&#123;<span class="built_in">bin</span>(b)&#125;</span>)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;a &amp; b = <span class="subst">&#123;a &amp; b&#125;</span> (按位与)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;a | b = <span class="subst">&#123;a | b&#125;</span> (按位或)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;a ^ b = <span class="subst">&#123;a ^ b&#125;</span> (按位异或)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;~a = <span class="subst">&#123;~a&#125;</span> (按位取反)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;a &lt;&lt; 1 = <span class="subst">&#123;a &lt;&lt; <span class="number">1</span>&#125;</span> (左移1位)&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;a &gt;&gt; 1 = <span class="subst">&#123;a &gt;&gt; <span class="number">1</span>&#125;</span> (右移1位)&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="10、成员运算符和身份运算符">10、成员运算符和身份运算符</h2><blockquote><p>成员运算符用于判断某个元素是否在某个序列中。<br>身份运算符用于判断两个对象是否是引用同一个对象。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 成员运算符</span></span><br><span class="line">fruits = [<span class="string">&quot;apple&quot;</span>, <span class="string">&quot;banana&quot;</span>, <span class="string">&quot;orange&quot;</span>]</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;apple在列表中：<span class="subst">&#123;<span class="string">&#x27;apple&#x27;</span> <span class="keyword">in</span> fruits&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;grape不在列表中：<span class="subst">&#123;<span class="string">&#x27;grape&#x27;</span> <span class="keyword">not</span> <span class="keyword">in</span> fruits&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 字符串中的成员运算</span></span><br><span class="line">text = <span class="string">&quot;Hello, Python!&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Python在字符串中：<span class="subst">&#123;<span class="string">&#x27;Python&#x27;</span> <span class="keyword">in</span> text&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 身份运算符</span></span><br><span class="line">list1 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br><span class="line">list2 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br><span class="line">list3 = list1</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;list1 is list2: <span class="subst">&#123;list1 <span class="keyword">is</span> list2&#125;</span>&quot;</span>)  <span class="comment"># False，不同对象</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;list1 is list3: <span class="subst">&#123;list1 <span class="keyword">is</span> list3&#125;</span>&quot;</span>)  <span class="comment"># True，同一对象</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;list1 == list2: <span class="subst">&#123;list1 == list2&#125;</span>&quot;</span>)  <span class="comment"># True，内容相同</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 小整数对象的特殊情况</span></span><br><span class="line">x = <span class="number">100</span></span><br><span class="line">y = <span class="number">100</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;x is y: <span class="subst">&#123;x <span class="keyword">is</span> y&#125;</span>&quot;</span>)  <span class="comment"># True，小整数有缓存</span></span><br></pre></td></tr></table></figure><h1>三、字符串详解</h1><h2 id="1、索引与切片">1、索引与切片</h2><blockquote><p>索引和切片用于访问字符串中的字符。索引从0开始，负数表示从字符串末尾开始数。切片用于获取字符串的子串。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 算法导航的题目编号分析</span></span><br><span class="line">problem_code = <span class="string">&quot;ALG001_ARRAY_EASY&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 索引操作</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;第一个字符: <span class="subst">&#123;problem_code[<span class="number">0</span>]&#125;</span>&quot;</span>)        <span class="comment"># 输出: A</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;最后一个字符: <span class="subst">&#123;problem_code[-<span class="number">1</span>]&#125;</span>&quot;</span>)      <span class="comment"># 输出: Y</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;第7个字符: <span class="subst">&#123;problem_code[<span class="number">6</span>]&#125;</span>&quot;</span>)          <span class="comment"># 输出: _</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 切片操作</span></span><br><span class="line">problem_id = problem_code[<span class="number">0</span>:<span class="number">6</span>]              <span class="comment"># ALG001</span></span><br><span class="line">problem_type = problem_code[<span class="number">7</span>:<span class="number">12</span>]           <span class="comment"># ARRAY</span></span><br><span class="line">problem_level = problem_code[<span class="number">13</span>:]           <span class="comment"># EASY</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;题目ID: <span class="subst">&#123;problem_id&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;题目类型: <span class="subst">&#123;problem_type&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;难度等级: <span class="subst">&#123;problem_level&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 文件名处理</span></span><br><span class="line">filename = <span class="string">&quot;video_2024_01_15_final.mp4&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用步长提取信息</span></span><br><span class="line">year = filename[<span class="number">6</span>:<span class="number">10</span>]                       <span class="comment"># 2024</span></span><br><span class="line">month = filename[<span class="number">11</span>:<span class="number">13</span>]                     <span class="comment"># 01</span></span><br><span class="line">day = filename[<span class="number">14</span>:<span class="number">16</span>]                       <span class="comment"># 15</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 反向切片</span></span><br><span class="line">reversed_name = filename[::-<span class="number">1</span>]              <span class="comment"># 反转整个文件名</span></span><br><span class="line">extension = filename[-<span class="number">4</span>:]                   <span class="comment"># .mp4</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;年份: <span class="subst">&#123;year&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;月份: <span class="subst">&#123;month&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;日期: <span class="subst">&#123;day&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;反转文件名: <span class="subst">&#123;reversed_name&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;文件扩展名: <span class="subst">&#123;extension&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="2、拼接与重复">2、拼接与重复</h2><blockquote><p>拼接用于将多个字符串连接成一个新的字符串。重复用于将字符串重复指定次数。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 编程导航用户信息拼接</span></span><br><span class="line">username = <span class="string">&quot;程序员&quot;</span></span><br><span class="line">platform = <span class="string">&quot;开发&quot;</span></span><br><span class="line">role = <span class="string">&quot;应用&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用 + 运算符拼接</span></span><br><span class="line">user_info = username + <span class="string">&quot; 正在 &quot;</span> + platform + <span class="string">&quot; Hello World &quot;</span> + role</span><br><span class="line"><span class="built_in">print</span>(user_info)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用 join() 方法拼接</span></span><br><span class="line">info_parts = [username, <span class="string">&quot;是&quot;</span>, platform, <span class="string">&quot;的&quot;</span>, role]</span><br><span class="line">user_info_joined = <span class="string">&quot; &quot;</span>.join(info_parts)</span><br><span class="line"><span class="built_in">print</span>(user_info_joined)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 字符串重复</span></span><br><span class="line">separator = <span class="string">&quot;=&quot;</span> * <span class="number">50</span></span><br><span class="line"><span class="built_in">print</span>(separator)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;公告&quot;</span>.center(<span class="number">50</span>))</span><br><span class="line"><span class="built_in">print</span>(separator)</span><br></pre></td></tr></table></figure><h2 id="3、常用方法">3、常用方法</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 用户输入处理</span></span><br><span class="line">user_input = <span class="string">&quot;  Hello Algorithm Navigation!  &quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 大小写转换</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;转大写: <span class="subst">&#123;user_input.upper()&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;转小写: <span class="subst">&#123;user_input.lower()&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;首字母大写: <span class="subst">&#123;user_input.capitalize()&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;标题格式: <span class="subst">&#123;user_input.title()&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 去除空白字符</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;去除两端空白: &#x27;<span class="subst">&#123;user_input.strip()&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;去除左侧空白: &#x27;<span class="subst">&#123;user_input.lstrip()&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;去除右侧空白: &#x27;<span class="subst">&#123;user_input.rstrip()&#125;</span>&#x27;&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 字符串查找和替换</span></span><br><span class="line">content = <span class="string">&quot;Python教程，Java教程，JavaScript教程&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;查找&#x27;Python&#x27;: <span class="subst">&#123;content.find(<span class="string">&#x27;Python&#x27;</span>)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;替换教程: <span class="subst">&#123;content.replace(<span class="string">&#x27;教程&#x27;</span>, <span class="string">&#x27;课程&#x27;</span>)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;统计&#x27;教程&#x27;出现次数: <span class="subst">&#123;content.count(<span class="string">&#x27;教程&#x27;</span>)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="4、字符串的格式化">4、字符串的格式化</h2><h3 id="1、-格式化">1、%格式化</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 剪切助手的处理进度报告</span></span><br><span class="line">video_name = <span class="string">&quot;教学视频.mp4&quot;</span></span><br><span class="line">progress = <span class="number">75.5</span></span><br><span class="line">total_size = <span class="number">1024</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># % 格式化</span></span><br><span class="line">progress_msg = <span class="string">&quot;正在处理 %s，进度：%.1f%%，文件大小：%d MB&quot;</span> % (video_name, progress, total_size)</span><br><span class="line"><span class="built_in">print</span>(progress_msg)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 用户统计</span></span><br><span class="line">user_count = <span class="number">50000</span></span><br><span class="line">active_rate = <span class="number">0.85</span></span><br><span class="line">stats_msg = <span class="string">&quot;用户总数：%d，活跃率：%.2f%%&quot;</span> % (user_count, active_rate * <span class="number">100</span>)</span><br><span class="line"><span class="built_in">print</span>(stats_msg)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="3、format">3、format()</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 老鱼简历的信息展示</span></span><br><span class="line">name = <span class="string">&quot;程序员&quot;</span></span><br><span class="line">age = <span class="number">27</span></span><br><span class="line">skills = [<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>]</span><br><span class="line">experience = <span class="number">5</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 位置参数</span></span><br><span class="line">info1 = <span class="string">&quot;姓名：&#123;&#125;，年龄：&#123;&#125;，经验：&#123;&#125;年&quot;</span>.<span class="built_in">format</span>(name, age, experience)</span><br><span class="line"><span class="built_in">print</span>(info1)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 关键字参数</span></span><br><span class="line">info2 = <span class="string">&quot;姓名：&#123;name&#125;，年龄：&#123;age&#125;，经验：&#123;exp&#125;年&quot;</span>.<span class="built_in">format</span>(name=name, age=age, exp=experience)</span><br><span class="line"><span class="built_in">print</span>(info2)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 数字格式化</span></span><br><span class="line">salary = <span class="number">25000.5</span></span><br><span class="line">formatted_salary = <span class="string">&quot;期望薪资：&#123;:.2f&#125; 元&quot;</span>.<span class="built_in">format</span>(salary)</span><br><span class="line"><span class="built_in">print</span>(formatted_salary)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 成绩单格式化</span></span><br><span class="line">score = <span class="number">0.856</span></span><br><span class="line">percentage = <span class="string">&quot;&#123;:.2%&#125;&quot;</span>.<span class="built_in">format</span>(score)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;面试通过率：<span class="subst">&#123;percentage&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="4、f-string">4、f-string</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 信息展示</span></span><br><span class="line">problem_id = <span class="string">&quot;ALG001&quot;</span></span><br><span class="line">problem_title = <span class="string">&quot;两数之和&quot;</span></span><br><span class="line">difficulty = <span class="string">&quot;简单&quot;</span></span><br><span class="line">solved_count = <span class="number">1250</span></span><br><span class="line">total_count = <span class="number">5000</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># f-string 基本用法</span></span><br><span class="line">problem_info = <span class="string">f&quot;题目 <span class="subst">&#123;problem_id&#125;</span>：<span class="subst">&#123;problem_title&#125;</span>（难度：<span class="subst">&#123;difficulty&#125;</span>）&quot;</span></span><br><span class="line"><span class="built_in">print</span>(problem_info)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 表达式计算</span></span><br><span class="line">solve_rate = solved_count / total_count</span><br><span class="line">progress_info = <span class="string">f&quot;解决进度：<span class="subst">&#123;solved_count&#125;</span>/<span class="subst">&#123;total_count&#125;</span> (<span class="subst">&#123;solve_rate:<span class="number">.1</span>%&#125;</span>)&quot;</span></span><br><span class="line"><span class="built_in">print</span>(progress_info)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 格式化数字</span></span><br><span class="line">large_number = <span class="number">1234567</span></span><br><span class="line">formatted_number = <span class="string">f&quot;用户总数：<span class="subst">&#123;large_number:,&#125;</span>&quot;</span></span><br><span class="line"><span class="built_in">print</span>(formatted_number)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 对齐和填充</span></span><br><span class="line">header = <span class="string">f&quot;<span class="subst">&#123;<span class="string">&#x27;题目ID&#x27;</span>:&lt;<span class="number">10</span>&#125;</span> <span class="subst">&#123;<span class="string">&#x27;标题&#x27;</span>:&lt;<span class="number">20</span>&#125;</span> <span class="subst">&#123;<span class="string">&#x27;难度&#x27;</span>:&lt;<span class="number">10</span>&#125;</span> <span class="subst">&#123;<span class="string">&#x27;通过率&#x27;</span>:&lt;<span class="number">10</span>&#125;</span>&quot;</span></span><br><span class="line"><span class="built_in">print</span>(header)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;-&quot;</span> * <span class="number">60</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;problem_id:&lt;<span class="number">10</span>&#125;</span> <span class="subst">&#123;problem_title:&lt;<span class="number">20</span>&#125;</span> <span class="subst">&#123;difficulty:&lt;<span class="number">10</span>&#125;</span> <span class="subst">&#123;solve_rate:&lt;<span class="number">10.1</span>%&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="5、正则表达式">5、正则表达式</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> re</span><br><span class="line"></span><br><span class="line"><span class="comment"># 的用户数据清洗</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">clean_user_data</span>():</span><br><span class="line">    <span class="comment"># 邮箱验证</span></span><br><span class="line">    emails = [<span class="string">&quot;123@yuyuanweb.com&quot;</span>, <span class="string">&quot;invalid-email&quot;</span>, <span class="string">&quot;user@domain.cn&quot;</span>]</span><br><span class="line">    email_pattern = <span class="string">r&#x27;^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]&#123;2,&#125;$&#x27;</span></span><br><span class="line"></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;=== 邮箱验证 ===&quot;</span>)</span><br><span class="line">    <span class="keyword">for</span> email <span class="keyword">in</span> emails:</span><br><span class="line">        <span class="keyword">if</span> re.<span class="keyword">match</span>(email_pattern, email):</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;✓ <span class="subst">&#123;email&#125;</span> 格式正确&quot;</span>)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;✗ <span class="subst">&#123;email&#125;</span> 格式错误&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 手机号提取</span></span><br><span class="line">    text = <span class="string">&quot;联系程序员：手机 13800138000，微信同号。备用联系方式：15900159000&quot;</span></span><br><span class="line">    phone_pattern = <span class="string">r&#x27;1[3-9]\d&#123;9&#125;&#x27;</span></span><br><span class="line">    phones = re.findall(phone_pattern, text)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;\n提取到的手机号：<span class="subst">&#123;phones&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 密码强度检查</span></span><br><span class="line">    passwords = [<span class="string">&quot;123456&quot;</span>, <span class="string">&quot;abc123&quot;</span>, <span class="string">&quot;MyPassword123!&quot;</span>, <span class="string">&quot;weakpwd&quot;</span>]</span><br><span class="line">    <span class="comment"># 至少8位，包含大小写字母、数字和特殊字符</span></span><br><span class="line">    strong_pattern = <span class="string">r&#x27;^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&amp;])[A-Za-z\d@$!%*?&amp;]&#123;8,&#125;$&#x27;</span></span><br><span class="line"></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;\n=== 密码强度检查 ===&quot;</span>)</span><br><span class="line">    <span class="keyword">for</span> pwd <span class="keyword">in</span> passwords:</span><br><span class="line">        <span class="keyword">if</span> re.<span class="keyword">match</span>(strong_pattern, pwd):</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;✓ <span class="subst">&#123;pwd&#125;</span> 强度足够&quot;</span>)</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f&quot;✗ <span class="subst">&#123;pwd&#125;</span> 强度不足&quot;</span>)</span><br><span class="line"></span><br><span class="line">clean_user_data()</span><br><span class="line"></span><br></pre></td></tr></table></figure><h1>四、列表与元组</h1><h2 id="1、列表的创建于基本操作">1、列表的创建于基本操作</h2><blockquote><p>列表可以存储任意类型的数据，可以动态的添加、删除、修改元素。</p><p>特性：有序、可重复</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1、创建</span></span><br><span class="line">popular_courses = [<span class="string">&quot;Python 基础&quot;</span>, <span class="string">&quot;数据结构与算法&quot;</span>, <span class="string">&quot;Web 开发&quot;</span>, <span class="string">&quot;机器学习&quot;</span>, <span class="string">&quot;项目实战&quot;</span>]</span><br><span class="line">hh_skills = [<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>, <span class="string">&quot;MySQL&quot;</span>, <span class="string">&quot;Redis&quot;</span>]</span><br><span class="line"><span class="comment"># 混合类型列表</span></span><br><span class="line">mixed_data = [<span class="string">&quot;程序员&quot;</span>, <span class="number">2024</span>, <span class="number">3.14</span>, <span class="literal">True</span>, <span class="literal">None</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2、修改</span></span><br><span class="line">study_plan = [<span class="string">&quot;数组&quot;</span>, <span class="string">&quot;链表&quot;</span>, <span class="string">&quot;栈&quot;</span>, <span class="string">&quot;队列&quot;</span>, <span class="string">&quot;树&quot;</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 修改</span></span><br><span class="line">study_plan[<span class="number">2</span>] = <span class="string">&quot;栈和队列&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;更新后的计划: <span class="subst">&#123;study_plan&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 修改多个元素</span></span><br><span class="line">study_plan[<span class="number">3</span>:<span class="number">5</span>] = [<span class="string">&quot;二叉树&quot;</span>, <span class="string">&quot;平衡树&quot;</span>, <span class="string">&quot;图论&quot;</span>]</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;扩展后的计划: <span class="subst">&#123;study_plan&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="2、列表的索引与切片">2、列表的索引与切片</h2><blockquote><p>Python 使用从0开始的索引系统，支持负数索引从尾开始访问元素。</p><p>支持步长参数，可以以特定的间隔提取元素。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 用户等级</span></span><br><span class="line">user_levels = [<span class="string">&quot;新手&quot;</span>, <span class="string">&quot;初级&quot;</span>, <span class="string">&quot;中级&quot;</span>, <span class="string">&quot;高级&quot;</span>, <span class="string">&quot;专家&quot;</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 正向索引</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;第一个等级: <span class="subst">&#123;user_levels[<span class="number">0</span>]&#125;</span>&quot;</span>)    <span class="comment"># 输出: 新手</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;第三个等级: <span class="subst">&#123;user_levels[<span class="number">2</span>]&#125;</span>&quot;</span>)    <span class="comment"># 输出: 中级</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 负向索引</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;最高等级: <span class="subst">&#123;user_levels[-<span class="number">1</span>]&#125;</span>&quot;</span>)     <span class="comment"># 输出: 专家</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;倒数第二个等级: <span class="subst">&#123;user_levels[-<span class="number">2</span>]&#125;</span>&quot;</span>)  <span class="comment"># 输出: 高级</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 切片操作</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;前三个等级: <span class="subst">&#123;user_levels[<span class="number">0</span>:<span class="number">3</span>]&#125;</span>&quot;</span>)   <span class="comment"># 输出: [&#x27;新手&#x27;, &#x27;初级&#x27;, &#x27;中级&#x27;]</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;从中级开始: <span class="subst">&#123;user_levels[<span class="number">2</span>:]&#125;</span>&quot;</span>)    <span class="comment"># 输出: [&#x27;中级&#x27;, &#x27;高级&#x27;, &#x27;专家&#x27;]</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;最后两个等级: <span class="subst">&#123;user_levels[-<span class="number">2</span>:]&#125;</span>&quot;</span>)  <span class="comment"># 输出: [&#x27;高级&#x27;, &#x27;专家&#x27;]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 编号</span></span><br><span class="line">question_numbers = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用步长</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;奇数题目: <span class="subst">&#123;question_numbers[::<span class="number">2</span>]&#125;</span>&quot;</span>)      <span class="comment"># 输出: [1, 3, 5, 7, 9]</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;偶数题目: <span class="subst">&#123;question_numbers[<span class="number">1</span>::<span class="number">2</span>]&#125;</span>&quot;</span>)     <span class="comment"># 输出: [2, 4, 6, 8, 10]</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;逆序排列: <span class="subst">&#123;question_numbers[::-<span class="number">1</span>]&#125;</span>&quot;</span>)     <span class="comment"># 输出: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 复杂切片</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;每隔2个取一个: <span class="subst">&#123;question_numbers[<span class="number">1</span>:<span class="number">9</span>:<span class="number">2</span>]&#125;</span>&quot;</span>)  <span class="comment"># 输出: [2, 4, 6, 8]</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="3、列表的常用方法">3、列表的常用方法</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1、添加</span></span><br><span class="line"><span class="comment"># 剪切助手的待处理任务列表</span></span><br><span class="line">tasks = [<span class="string">&quot;视频转码&quot;</span>, <span class="string">&quot;音频提取&quot;</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># append() 在末尾添加单个元素</span></span><br><span class="line">tasks.append(<span class="string">&quot;添加字幕&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;添加任务后: <span class="subst">&#123;tasks&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># insert() 在指定位置插入元素</span></span><br><span class="line">tasks.insert(<span class="number">1</span>, <span class="string">&quot;质量检查&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;插入任务后: <span class="subst">&#123;tasks&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># extend() 添加多个元素</span></span><br><span class="line">new_tasks = [<span class="string">&quot;生成缩略图&quot;</span>, <span class="string">&quot;上传到服务器&quot;</span>]</span><br><span class="line">tasks.extend(new_tasks)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;扩展任务后: <span class="subst">&#123;tasks&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用 + 运算符连接列表</span></span><br><span class="line">urgent_tasks = [<span class="string">&quot;紧急修复&quot;</span>, <span class="string">&quot;客户支持&quot;</span>]</span><br><span class="line">all_tasks = tasks + urgent_tasks</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;所有任务: <span class="subst">&#123;all_tasks&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2、删除</span></span><br><span class="line"><span class="comment"># 题目标签</span></span><br><span class="line">tags = [<span class="string">&quot;数组&quot;</span>, <span class="string">&quot;链表&quot;</span>, <span class="string">&quot;栈&quot;</span>, <span class="string">&quot;队列&quot;</span>, <span class="string">&quot;数组&quot;</span>]  <span class="comment"># 注意有重复</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># remove() 删除第一个匹配的元素</span></span><br><span class="line">tags.remove(<span class="string">&quot;数组&quot;</span>)  <span class="comment"># 只删除第一个&quot;数组&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;删除后: <span class="subst">&#123;tags&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># pop() 删除并返回指定位置的元素</span></span><br><span class="line">removed_tag = tags.pop(<span class="number">1</span>)  <span class="comment"># 删除索引为1的元素</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;删除的标签: <span class="subst">&#123;removed_tag&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;删除后的标签: <span class="subst">&#123;tags&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># del 关键字删除元素或切片</span></span><br><span class="line"><span class="keyword">del</span> tags[<span class="number">0</span>]  <span class="comment"># 删除第一个元素</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;删除第一个元素后: <span class="subst">&#123;tags&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># clear() 清空整个列表</span></span><br><span class="line">backup_tags = tags.copy()  <span class="comment"># 先备份</span></span><br><span class="line">tags.clear()</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;清空后: <span class="subst">&#123;tags&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;备份: <span class="subst">&#123;backup_tags&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3、查找和统计</span></span><br><span class="line"><span class="comment"># 用户的学习时长记录（分钟）</span></span><br><span class="line">study_minutes = [<span class="number">45</span>, <span class="number">60</span>, <span class="number">30</span>, <span class="number">60</span>, <span class="number">90</span>, <span class="number">45</span>, <span class="number">120</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 查找元素</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;60分钟学习的位置: <span class="subst">&#123;study_minutes.index(<span class="number">60</span>)&#125;</span>&quot;</span>)     <span class="comment"># 输出: 1</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;45分钟学习的次数: <span class="subst">&#123;study_minutes.count(<span class="number">45</span>)&#125;</span>&quot;</span>)    <span class="comment"># 输出: 2</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 排序操作</span></span><br><span class="line">study_minutes_copy = study_minutes.copy()</span><br><span class="line">study_minutes_copy.sort()  <span class="comment"># 原地排序</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;升序排序: <span class="subst">&#123;study_minutes_copy&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line">study_minutes_copy.sort(reverse=<span class="literal">True</span>)  <span class="comment"># 降序排序</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;降序排序: <span class="subst">&#123;study_minutes_copy&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用 sorted() 函数（不修改原列表）</span></span><br><span class="line">sorted_minutes = <span class="built_in">sorted</span>(study_minutes)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;原列表: <span class="subst">&#123;study_minutes&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;排序后的新列表: <span class="subst">&#123;sorted_minutes&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="4、列表推导式">4、列表推导式</h2><blockquote><p>列表推导式是Python的一个强大特性，它允许你用简洁的语法创建列表。</p><p>基本语法：[ expression for item in iterable ]。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 筛选高分</span></span><br><span class="line">source = [<span class="number">90</span>,<span class="number">80</span>,<span class="number">20</span>,<span class="number">98</span>,<span class="number">92</span>,<span class="number">10</span>,<span class="number">49</span>,<span class="number">93</span>];</span><br><span class="line">height_source = [ item <span class="keyword">for</span> item <span class="keyword">in</span> source <span class="keyword">if</span> item &gt;= <span class="number">90</span> ]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 嵌套循环</span></span><br><span class="line">video_batches = [</span><br><span class="line">    [<span class="string">&quot;video1.mp4&quot;</span>, <span class="string">&quot;video2.avi&quot;</span>],</span><br><span class="line">    [<span class="string">&quot;video3.mov&quot;</span>, <span class="string">&quot;video4.mkv&quot;</span>],</span><br><span class="line">    [<span class="string">&quot;video5.wmv&quot;</span>]</span><br><span class="line">]</span><br><span class="line"></span><br><span class="line">video = [video.split(<span class="string">&#x27;.&#x27;</span>)[-<span class="number">1</span>] <span class="keyword">for</span> batch <span class="keyword">in</span> video_batches <span class="keyword">for</span> video <span class="keyword">in</span> batch <span class="keyword">if</span> video.endswith(<span class="string">&#x27;.mkv&#x27;</span>)]</span><br></pre></td></tr></table></figure><h2 id="5、元组的创建于基本操作">5、元组的创建于基本操作</h2><blockquote><p>元组一旦创建不可改变。</p><p>支持索引和切片操作。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建单元素元组（注意逗号不能省略）</span></span><br><span class="line">single_element = (<span class="string">&quot;Python&quot;</span>,)  <span class="comment"># 或者 &quot;Python&quot;,</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;单元素元组: <span class="subst">&#123;single_element&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;类型: <span class="subst">&#123;<span class="built_in">type</span>(single_element)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 不用括号也可以创建元组</span></span><br><span class="line">coordinates = <span class="number">10</span>, <span class="number">20</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;坐标: <span class="subst">&#123;coordinates&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;类型: <span class="subst">&#123;<span class="built_in">type</span>(coordinates)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 空元组</span></span><br><span class="line">empty_tuple = ()</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;空元组: <span class="subst">&#123;empty_tuple&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="6、序列通用操作">6、序列通用操作</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 课程信息</span></span><br><span class="line">course_list = [<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>, <span class="string">&quot;Go&quot;</span>, <span class="string">&quot;Rust&quot;</span>]</span><br><span class="line">course_tuple = (<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>, <span class="string">&quot;Go&quot;</span>, <span class="string">&quot;Rust&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 长度操作</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;列表长度: <span class="subst">&#123;<span class="built_in">len</span>(course_list)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;元组长度: <span class="subst">&#123;<span class="built_in">len</span>(course_tuple)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 成员检测</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;&#x27;Python&#x27; 在列表中: <span class="subst">&#123;<span class="string">&#x27;Python&#x27;</span> <span class="keyword">in</span> course_list&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;&#x27;C++&#x27; 在元组中: <span class="subst">&#123;<span class="string">&#x27;C++&#x27;</span> <span class="keyword">in</span> course_tuple&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 最大最小值</span></span><br><span class="line">numbers_list = [<span class="number">85</span>, <span class="number">92</span>, <span class="number">78</span>, <span class="number">95</span>, <span class="number">88</span>]</span><br><span class="line">numbers_tuple = (<span class="number">85</span>, <span class="number">92</span>, <span class="number">78</span>, <span class="number">95</span>, <span class="number">88</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;列表最大值: <span class="subst">&#123;<span class="built_in">max</span>(numbers_list)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;元组最小值: <span class="subst">&#123;<span class="built_in">min</span>(numbers_tuple)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;列表总和: <span class="subst">&#123;<span class="built_in">sum</span>(numbers_list)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 剪切助手的版本比较</span></span><br><span class="line">version_a = (<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>)</span><br><span class="line">version_b = (<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>)</span><br><span class="line">version_c = (<span class="number">1</span>, <span class="number">3</span>, <span class="number">0</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;版本A &lt; 版本B: <span class="subst">&#123;version_a &lt; version_b&#125;</span>&quot;</span>)  <span class="comment"># True</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;版本B &lt; 版本C: <span class="subst">&#123;version_b &lt; version_c&#125;</span>&quot;</span>)  <span class="comment"># True</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列表比较</span></span><br><span class="line">scores_a = [<span class="number">85</span>, <span class="number">90</span>, <span class="number">78</span>]</span><br><span class="line">scores_b = [<span class="number">85</span>, <span class="number">90</span>, <span class="number">80</span>]</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;分数A &lt; 分数B: <span class="subst">&#123;scores_a &lt; scores_b&#125;</span>&quot;</span>)  <span class="comment"># True</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 字符串序列比较</span></span><br><span class="line">names_a = [<span class="string">&quot;Alice&quot;</span>, <span class="string">&quot;Bob&quot;</span>]</span><br><span class="line">names_b = [<span class="string">&quot;Alice&quot;</span>, <span class="string">&quot;Charlie&quot;</span>]</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;名单A &lt; 名单B: <span class="subst">&#123;names_a &lt; names_b&#125;</span>&quot;</span>)  <span class="comment"># True</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 3x4矩阵</span></span><br><span class="line">rows, cols = <span class="number">3</span>, <span class="number">4</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 错误的初始化方式</span></span><br><span class="line">wrong_matrix = [[<span class="number">0</span>] * cols] * rows  <span class="comment"># 这会创建相同引用的行</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 正确的初始化方式</span></span><br><span class="line">correct_matrix = [[<span class="number">0</span> <span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(cols)] <span class="keyword">for</span> _ <span class="keyword">in</span> <span class="built_in">range</span>(rows)]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 或者使用这种方式</span></span><br><span class="line">score_matrix = [</span><br><span class="line">    [<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>],</span><br><span class="line">    [<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>],</span><br><span class="line">    [<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>]</span><br><span class="line">]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 填充一些数据</span></span><br><span class="line">score_matrix[<span class="number">0</span>] = [<span class="number">85</span>, <span class="number">90</span>, <span class="number">78</span>, <span class="number">92</span>]</span><br><span class="line">score_matrix[<span class="number">1</span>] = [<span class="number">88</span>, <span class="number">85</span>, <span class="number">95</span>, <span class="number">87</span>]</span><br><span class="line">score_matrix[<span class="number">2</span>] = [<span class="number">90</span>, <span class="number">92</span>, <span class="number">88</span>, <span class="number">94</span>]</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;矩阵:&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> i, row <span class="keyword">in</span> <span class="built_in">enumerate</span>(score_matrix):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;用户<span class="subst">&#123;i+<span class="number">1</span>&#125;</span>: <span class="subst">&#123;row&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h1>五、字典与集合</h1><h2 id="1、字典的创建与基本操作">1、字典的创建与基本操作</h2><blockquote><p>字典是Python中最灵活的数据结构之一,以键值对形式存在,查询高效</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 大括号创建</span></span><br><span class="line">interview_question = &#123;</span><br><span class="line">    <span class="string">&quot;id&quot;</span>: <span class="string">&quot;Q001&quot;</span>,</span><br><span class="line">    <span class="string">&quot;title&quot;</span>: <span class="string">&quot;Python 中的装饰器原理&quot;</span>,</span><br><span class="line">    <span class="string">&quot;difficulty&quot;</span>: <span class="string">&quot;中等&quot;</span>,</span><br><span class="line">    <span class="string">&quot;tags&quot;</span>: [<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;装饰器&quot;</span>, <span class="string">&quot;高级特性&quot;</span>],</span><br><span class="line">    <span class="string">&quot;solved_count&quot;</span>: <span class="number">1245</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># dictc创建一个字典</span></span><br><span class="line">algorithm_stats = <span class="built_in">dict</span>([</span><br><span class="line">    (<span class="string">&quot;数组&quot;</span>, <span class="number">156</span>),</span><br><span class="line">    (<span class="string">&quot;链表&quot;</span>, <span class="number">89</span>),</span><br><span class="line">    (<span class="string">&quot;二叉树&quot;</span>, <span class="number">124</span>),</span><br><span class="line">    (<span class="string">&quot;图论&quot;</span>, <span class="number">67</span>)</span><br><span class="line">])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 项目配置</span></span><br><span class="line">project_config = &#123;</span><br><span class="line">    <span class="string">&quot;project_name&quot;</span>: <span class="string">&quot;项目&quot;</span>,</span><br><span class="line">    <span class="string">&quot;video_format&quot;</span>: <span class="string">&quot;mp4&quot;</span>,</span><br><span class="line">    <span class="string">&quot;resolution&quot;</span>: <span class="string">&quot;1080p&quot;</span>,</span><br><span class="line">    <span class="string">&quot;fps&quot;</span>: <span class="number">30</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># 访问值</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;项目名称: <span class="subst">&#123;project_config[<span class="string">&#x27;project_name&#x27;</span>]&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;视频格式: <span class="subst">&#123;project_config[<span class="string">&#x27;video_format&#x27;</span>]&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 修改值</span></span><br><span class="line">project_config[<span class="string">&quot;resolution&quot;</span>] = <span class="string">&quot;4K&quot;</span></span><br><span class="line">project_config[<span class="string">&quot;fps&quot;</span>] = <span class="number">60</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 添加新键值对</span></span><br><span class="line">project_config[<span class="string">&quot;duration&quot;</span>] = <span class="number">120</span>  <span class="comment"># 视频时长（秒）</span></span><br><span class="line">project_config[<span class="string">&quot;audio_quality&quot;</span>] = <span class="string">&quot;高品质&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除键值对</span></span><br><span class="line"><span class="keyword">del</span> project_config[<span class="string">&quot;fps&quot;</span>]</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(project_config)</span><br></pre></td></tr></table></figure><h2 id="2、字典的常用方法">2、字典的常用方法</h2><blockquote><p>get(key)：根据key获取值</p><p>keys()：获取所有键</p><p>values()：获取所有值</p><p>items()：获取键值对</p><p>update(字典)：合并字典</p><p>setdefault(key,value)：添加键值对</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 编程导航课程信息</span></span><br><span class="line">course_info = &#123;</span><br><span class="line">    <span class="string">&quot;course_name&quot;</span>: <span class="string">&quot;Python&quot;</span>,</span><br><span class="line">    <span class="string">&quot;instructor&quot;</span>: <span class="string">&quot;程序员&quot;</span>,</span><br><span class="line">    <span class="string">&quot;duration&quot;</span>: <span class="number">120</span>,</span><br><span class="line">    <span class="string">&quot;students&quot;</span>: <span class="number">5680</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># 安全获取值</span></span><br><span class="line">instructor = course_info.get(<span class="string">&quot;instructor&quot;</span>)</span><br><span class="line">price = course_info.get(<span class="string">&quot;price&quot;</span>, <span class="string">&quot;免费&quot;</span>)  <span class="comment"># 如果没有价格信息，默认为免费</span></span><br><span class="line">category = course_info.get(<span class="string">&quot;category&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;讲师: <span class="subst">&#123;instructor&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;价格: <span class="subst">&#123;price&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;分类: <span class="subst">&#123;category&#125;</span>&quot;</span>)  <span class="comment"># 输出: None</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 检查键是否存在</span></span><br><span class="line"><span class="keyword">if</span> <span class="string">&quot;students&quot;</span> <span class="keyword">in</span> course_info:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;学生数量: <span class="subst">&#123;course_info[<span class="string">&#x27;students&#x27;</span>]&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 获取键列表</span></span><br><span class="line"><span class="keyword">for</span> key <span class="keyword">in</span> course_info.keys():</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;• <span class="subst">&#123;key&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 获取值列表</span></span><br><span class="line"><span class="keyword">for</span> value <span class="keyword">in</span> course_info.values():</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;• <span class="subst">&#123;value&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 获取键值对</span></span><br><span class="line"><span class="keyword">for</span> key,value <span class="keyword">in</span> course_info.items():</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;• <span class="subst">&#123;key&#125;</span>:<span class="subst">&#123;value&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="3、字典推导式">3、字典推导式</h2><blockquote><p>字典推导式是创建字典的一种简洁而强大的方式，它允许你用简洁的语法创建字典。</p><p>基本语法：{ key: value for item in iterable }。</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 面试鸭题目统计</span></span><br><span class="line">interview_data = [</span><br><span class="line">    &#123;<span class="string">&quot;category&quot;</span>: <span class="string">&quot;Python&quot;</span>, <span class="string">&quot;difficulty&quot;</span>: <span class="string">&quot;简单&quot;</span>, <span class="string">&quot;count&quot;</span>: <span class="number">45</span>&#125;,</span><br><span class="line">    &#123;<span class="string">&quot;category&quot;</span>: <span class="string">&quot;Python&quot;</span>, <span class="string">&quot;difficulty&quot;</span>: <span class="string">&quot;中等&quot;</span>, <span class="string">&quot;count&quot;</span>: <span class="number">32</span>&#125;,</span><br><span class="line">    &#123;<span class="string">&quot;category&quot;</span>: <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;difficulty&quot;</span>: <span class="string">&quot;简单&quot;</span>, <span class="string">&quot;count&quot;</span>: <span class="number">38</span>&#125;,</span><br><span class="line">    &#123;<span class="string">&quot;category&quot;</span>: <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;difficulty&quot;</span>: <span class="string">&quot;困难&quot;</span>, <span class="string">&quot;count&quot;</span>: <span class="number">15</span>&#125;,</span><br><span class="line">    &#123;<span class="string">&quot;category&quot;</span>: <span class="string">&quot;算法&quot;</span>, <span class="string">&quot;difficulty&quot;</span>: <span class="string">&quot;中等&quot;</span>, <span class="string">&quot;count&quot;</span>: <span class="number">67</span>&#125;</span><br><span class="line">]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 按分类统计题目总数</span></span><br><span class="line">category_totals = &#123;&#125;</span><br><span class="line"><span class="keyword">for</span> item <span class="keyword">in</span> interview_data:</span><br><span class="line">    category = item[<span class="string">&quot;category&quot;</span>]</span><br><span class="line">    count = item[<span class="string">&quot;count&quot;</span>]</span><br><span class="line">    category_totals[category] = category_totals.get(category, <span class="number">0</span>) + count</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;各分类题目统计:&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> category, total <span class="keyword">in</span> category_totals.items():</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;category&#125;</span>: <span class="subst">&#123;total&#125;</span>题&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用字典推导式创建难度标签</span></span><br><span class="line">difficulty_tags = &#123;</span><br><span class="line">    <span class="string">f&quot;<span class="subst">&#123;item[<span class="string">&#x27;category&#x27;</span>]&#125;</span>-<span class="subst">&#123;item[<span class="string">&#x27;difficulty&#x27;</span>]&#125;</span>&quot;</span>: <span class="string">f&quot;【<span class="subst">&#123;item[<span class="string">&#x27;difficulty&#x27;</span>]&#125;</span>】<span class="subst">&#123;item[<span class="string">&#x27;category&#x27;</span>]&#125;</span>类题目&quot;</span></span><br><span class="line">    <span class="keyword">for</span> item <span class="keyword">in</span> interview_data</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n题目标签:&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> tag, desc <span class="keyword">in</span> difficulty_tags.items():</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;tag&#125;</span>: <span class="subst">&#123;desc&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="4、集合的创建与操作">4、集合的创建与操作</h2><blockquote><p>集合是无序且不重复的元素集合。</p><p>特点：自动去重、快速成员检测</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 技术栈</span></span><br><span class="line">popular_technologies = &#123;<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>, <span class="string">&quot;Go&quot;</span>, <span class="string">&quot;Python&quot;</span>&#125;  <span class="comment"># 重复的Python会被去除</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;热门技术栈: <span class="subst">&#123;popular_technologies&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 从列表创建集合</span></span><br><span class="line">programming_languages = [<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;C++&quot;</span>, <span class="string">&quot;Python&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>, <span class="string">&quot;Java&quot;</span>]</span><br><span class="line">unique_languages = <span class="built_in">set</span>(programming_languages)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;去重后的语言: <span class="subst">&#123;unique_languages&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 剪切助手支持的输入格式</span></span><br><span class="line">input_formats = <span class="built_in">set</span>([<span class="string">&quot;mp4&quot;</span>, <span class="string">&quot;avi&quot;</span>, <span class="string">&quot;mov&quot;</span>, <span class="string">&quot;mkv&quot;</span>, <span class="string">&quot;flv&quot;</span>])</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;支持的输入格式: <span class="subst">&#123;input_formats&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 创建空集合</span></span><br><span class="line">empty_set = <span class="built_in">set</span>()  <span class="comment"># 注意：&#123;&#125; 创建的是空字典，不是空集合</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;空集合: <span class="subst">&#123;empty_set&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 数据结构</span></span><br><span class="line">user_skills = &#123;<span class="string">&quot;数组&quot;</span>, <span class="string">&quot;链表&quot;</span>, <span class="string">&quot;栈&quot;</span>&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># 添加新技能</span></span><br><span class="line">user_skills.add(<span class="string">&quot;队列&quot;</span>)</span><br><span class="line">user_skills.add(<span class="string">&quot;二叉树&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;学习新技能后: <span class="subst">&#123;user_skills&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 添加多个技能</span></span><br><span class="line">advanced_skills = &#123;<span class="string">&quot;红黑树&quot;</span>, <span class="string">&quot;B树&quot;</span>, <span class="string">&quot;跳跃表&quot;</span>&#125;</span><br><span class="line">user_skills.update(advanced_skills)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;进阶学习后: <span class="subst">&#123;user_skills&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除技能</span></span><br><span class="line">user_skills.remove(<span class="string">&quot;跳跃表&quot;</span>)  <span class="comment"># 如果元素不存在会抛出异常</span></span><br><span class="line">user_skills.discard(<span class="string">&quot;哈希表&quot;</span>)  <span class="comment"># 如果元素不存在不会抛出异常</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 检查技能是否掌握</span></span><br><span class="line"><span class="keyword">if</span> <span class="string">&quot;二叉树&quot;</span> <span class="keyword">in</span> user_skills:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;✅ 已掌握二叉树&quot;</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;❌ 尚未掌握二叉树&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;最终技能集合: <span class="subst">&#123;user_skills&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="5-集合的数学运算">5.集合的数学运算</h2><blockquote><p>交集：两个集合共有的元素</p><p>并集：两个集合全部的元素</p><p>差集：一个集合有另一个集合没有的元素</p><p>对称差集：只在其中一个集合的元素</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 技能匹配</span></span><br><span class="line">frontend_skills = &#123;<span class="string">&quot;HTML&quot;</span>, <span class="string">&quot;CSS&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>, <span class="string">&quot;React&quot;</span>, <span class="string">&quot;Vue&quot;</span>, <span class="string">&quot;TypeScript&quot;</span>&#125;</span><br><span class="line">backend_skills = &#123;<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>, <span class="string">&quot;MySQL&quot;</span>, <span class="string">&quot;Redis&quot;</span>, <span class="string">&quot;Docker&quot;</span>&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># 找出前后端共同需要的技能</span></span><br><span class="line">common_skills = frontend_skills &amp; backend_skills</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;前后端共同技能: <span class="subst">&#123;common_skills&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 也可以使用 intersection() 方法</span></span><br><span class="line">common_skills_2 = frontend_skills.intersection(backend_skills)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;使用方法获取: <span class="subst">&#123;common_skills_2&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 全栈开发者应该掌握的技能交集</span></span><br><span class="line">fullstack_essential = frontend_skills &amp; backend_skills</span><br><span class="line"><span class="keyword">if</span> fullstack_essential:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;全栈开发者必备技能: <span class="subst">&#123;<span class="string">&#x27;, &#x27;</span>.join(fullstack_essential)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 技能的并集</span></span><br><span class="line">all_course_skills = frontend_skills | backend_skills</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;涵盖的技能数量: <span class="subst">&#123;<span class="built_in">len</span>(all_course_skills)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;技能列表: <span class="subst">&#123;<span class="built_in">sorted</span>(all_course_skills)&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 计算技能覆盖率</span></span><br><span class="line">total_market_skills = &#123;<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>, <span class="string">&quot;Go&quot;</span>, <span class="string">&quot;C++&quot;</span>, <span class="string">&quot;Django&quot;</span>, <span class="string">&quot;Spring&quot;</span>, <span class="string">&quot;React&quot;</span>, <span class="string">&quot;Vue&quot;</span>, <span class="string">&quot;MySQL&quot;</span>, <span class="string">&quot;Redis&quot;</span>, <span class="string">&quot;Docker&quot;</span>, <span class="string">&quot;Kubernetes&quot;</span>&#125;</span><br><span class="line">coverage_rate = <span class="built_in">len</span>(all_course_skills &amp; total_market_skills) / <span class="built_in">len</span>(total_market_skills) * <span class="number">100</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;市场技能覆盖率: <span class="subst">&#123;coverage_rate:<span class="number">.1</span>f&#125;</span>%&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 差集</span></span><br><span class="line"><span class="comment"># 还需要学习</span></span><br><span class="line">need_to_learn = frontend_skills - backend_skills</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;推荐学习: <span class="subst">&#123;need_to_learn&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 额外掌握的技能</span></span><br><span class="line">extra_skills = frontend_skills - backend_skills</span><br><span class="line"><span class="keyword">if</span> extra_skills:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;额外掌握的技能: <span class="subst">&#123;extra_skills&#125;</span>&quot;</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;学习内容完全符合推荐路径&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 学习进度计算</span></span><br><span class="line">progress = <span class="built_in">len</span>(frontend_skills &amp; backend_skills) / <span class="built_in">len</span>(backend_skills) * <span class="number">100</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;学习进度: <span class="subst">&#123;progress:<span class="number">.1</span>f&#125;</span>%&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment">#对称差集</span></span><br><span class="line"><span class="comment"># 找出技能的差异</span></span><br><span class="line">format_differences = frontend_skills ^ backend_skills</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;技能差异: <span class="subst">&#123;format_differences&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 分别找出独有的技能</span></span><br><span class="line">input_only = frontend_skills - backend_skills</span><br><span class="line">output_only = backend_skills - frontend_skills</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot; <span class="subst">&#123;input_only&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot; <span class="subst">&#123;output_only&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 都有的技能</span></span><br><span class="line">universal_formats = frontend_skills &amp; backend_skills</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;都有的技能: <span class="subst">&#123;universal_formats&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="6、集合推导式">6、集合推导式</h2><blockquote><p>类似列表推导式，但是集合推导式结果自动去重</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line">article_titles = [</span><br><span class="line">    <span class="string">&quot;Python数据结构详解&quot;</span>,</span><br><span class="line">    <span class="string">&quot;Java算法实战指南&quot;</span>,</span><br><span class="line">    <span class="string">&quot;JavaScript前端开发&quot;</span>,</span><br><span class="line">    <span class="string">&quot;Python爬虫技术&quot;</span>,</span><br><span class="line">    <span class="string">&quot;数据结构与算法&quot;</span>,</span><br><span class="line">    <span class="string">&quot;Java设计模式&quot;</span>,</span><br><span class="line">    <span class="string">&quot;Python机器学习&quot;</span></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 提取编程语言</span></span><br><span class="line">programming_languages = &#123;</span><br><span class="line">    word <span class="keyword">for</span> title <span class="keyword">in</span> article_titles</span><br><span class="line">    <span class="keyword">for</span> word <span class="keyword">in</span> title.split()</span><br><span class="line">    <span class="keyword">if</span> word <span class="keyword">in</span> [<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>, <span class="string">&quot;JavaScript&quot;</span>, <span class="string">&quot;C++&quot;</span>, <span class="string">&quot;Go&quot;</span>]</span><br><span class="line">&#125;</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;涉及的编程语言: <span class="subst">&#123;programming_languages&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 提取技术关键词（长度大于3的词）</span></span><br><span class="line">tech_keywords = &#123;</span><br><span class="line">    word <span class="keyword">for</span> title <span class="keyword">in</span> article_titles</span><br><span class="line">    <span class="keyword">for</span> word <span class="keyword">in</span> title.split()</span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">len</span>(word) &gt; <span class="number">3</span> <span class="keyword">and</span> word <span class="keyword">not</span> <span class="keyword">in</span> [<span class="string">&quot;详解&quot;</span>, <span class="string">&quot;指南&quot;</span>, <span class="string">&quot;技术&quot;</span>]</span><br><span class="line">&#125;</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;技术关键词: <span class="subst">&#123;tech_keywords&#125;</span>&quot;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="7、可变类型和不可变类型">7、可变类型和不可变类型</h2><blockquote><p>不可变类型包括数字、字符串、元组和冻结集合：</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 剪切助手的配置信息（不可变）</span></span><br><span class="line">DEFAULT_CONFIG = &#123;</span><br><span class="line">    <span class="string">&quot;max_file_size&quot;</span>: <span class="number">1024</span> * <span class="number">1024</span> * <span class="number">100</span>,  <span class="comment"># 100MB</span></span><br><span class="line">    <span class="string">&quot;supported_formats&quot;</span>: (<span class="string">&quot;mp4&quot;</span>, <span class="string">&quot;avi&quot;</span>, <span class="string">&quot;mov&quot;</span>, <span class="string">&quot;mkv&quot;</span>),  <span class="comment"># 元组不可变</span></span><br><span class="line">    <span class="string">&quot;quality_levels&quot;</span>: <span class="built_in">frozenset</span>([<span class="string">&quot;低&quot;</span>, <span class="string">&quot;中&quot;</span>, <span class="string">&quot;高&quot;</span>, <span class="string">&quot;超高&quot;</span>])  <span class="comment"># 冻结集合不可变</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment"># 尝试修改元组会报错</span></span><br><span class="line"><span class="comment"># DEFAULT_CONFIG[&quot;supported_formats&quot;][0] = &quot;webm&quot;  # TypeError</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 字符串不可变性演示</span></span><br><span class="line">project_name = <span class="string">&quot;编程导航&quot;</span></span><br><span class="line">original_id = <span class="built_in">id</span>(project_name)</span><br><span class="line">project_name += <span class="string">&quot;平台&quot;</span>  <span class="comment"># 这实际上创建了新的字符串对象</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;原始ID: <span class="subst">&#123;original_id&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;修改后ID: <span class="subst">&#123;<span class="built_in">id</span>(project_name)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;是同一个对象: <span class="subst">&#123;original_id == <span class="built_in">id</span>(project_name)&#125;</span>&quot;</span>)  <span class="comment"># False</span></span><br></pre></td></tr></table></figure><blockquote><p>可变类型包括列表、字典、集合：</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 用户数据（可变）</span></span><br><span class="line">user_profile = &#123;</span><br><span class="line">    <span class="string">&quot;username&quot;</span>: <span class="string">&quot;程序员&quot;</span>,</span><br><span class="line">    <span class="string">&quot;skills&quot;</span>: [<span class="string">&quot;Python&quot;</span>, <span class="string">&quot;Java&quot;</span>],  <span class="comment"># 列表可变</span></span><br><span class="line">    <span class="string">&quot;completed_questions&quot;</span>: &#123;<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>&#125;,  <span class="comment"># 集合可变</span></span><br><span class="line">    <span class="string">&quot;preferences&quot;</span>: &#123;<span class="string">&quot;theme&quot;</span>: <span class="string">&quot;dark&quot;</span>&#125;  <span class="comment"># 字典可变</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">original_id = <span class="built_in">id</span>(user_profile)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 修改可变对象</span></span><br><span class="line">user_profile[<span class="string">&quot;skills&quot;</span>].append(<span class="string">&quot;JavaScript&quot;</span>)  <span class="comment"># 原地修改列表</span></span><br><span class="line">user_profile[<span class="string">&quot;completed_questions&quot;</span>].add(<span class="number">4</span>)  <span class="comment"># 原地修改集合</span></span><br><span class="line">user_profile[<span class="string">&quot;preferences&quot;</span>][<span class="string">&quot;language&quot;</span>] = <span class="string">&quot;中文&quot;</span>  <span class="comment"># 原地修改字典</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;修改后ID: <span class="subst">&#123;<span class="built_in">id</span>(user_profile)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;是同一个对象: <span class="subst">&#123;original_id == <span class="built_in">id</span>(user_profile)&#125;</span>&quot;</span>)  <span class="comment"># True</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;用户资料: <span class="subst">&#123;user_profile&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h1>六、流程控制</h1><h2 id="1、条件语句">1、条件语句</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 文件大小检查</span></span><br><span class="line">file_size = <span class="number">1024</span> * <span class="number">1024</span> * <span class="number">10</span>  <span class="comment"># 10MB</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 传统写法</span></span><br><span class="line"><span class="keyword">if</span> file_size &gt; <span class="number">1024</span> * <span class="number">1024</span> * <span class="number">5</span>:</span><br><span class="line">    status = <span class="string">&quot;大文件&quot;</span></span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    status = <span class="string">&quot;普通文件&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用条件表达式</span></span><br><span class="line">status = <span class="string">&quot;大文件&quot;</span> <span class="keyword">if</span> file_size &gt; <span class="number">1024</span> * <span class="number">1024</span> * <span class="number">5</span> <span class="keyword">else</span> <span class="string">&quot;普通文件&quot;</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;文件状态：<span class="subst">&#123;status&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="2-循环语句">2.循环语句</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 课程列表展示</span></span><br><span class="line">courses = [<span class="string">&quot;Python 基础&quot;</span>, <span class="string">&quot;数据结构&quot;</span>, <span class="string">&quot;算法设计&quot;</span>, <span class="string">&quot;Web 开发&quot;</span>, <span class="string">&quot;机器学习&quot;</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> course <span class="keyword">in</span> courses:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;📚 <span class="subst">&#123;course&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> index, task <span class="keyword">in</span> <span class="built_in">enumerate</span>(courses, <span class="number">1</span>):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;index&#125;</span>. <span class="subst">&#123;task&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment">#文件处理队列</span></span><br><span class="line">file_queue = [<span class="string">&quot;video1.mp4&quot;</span>, <span class="string">&quot;video2.avi&quot;</span>, <span class="string">&quot;video3.mov&quot;</span>, <span class="string">&quot;video4.mkv&quot;</span>]</span><br><span class="line">processed_files = []</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;=== 处理队列 ===&quot;</span>)</span><br><span class="line"><span class="keyword">while</span> file_queue:</span><br><span class="line">    current_file = file_queue.pop(<span class="number">0</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;正在处理：<span class="subst">&#123;current_file&#125;</span>&quot;</span>)</span><br><span class="line">    processed_files.append(current_file)</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 模拟处理过程</span></span><br><span class="line">    <span class="keyword">if</span> <span class="built_in">len</span>(processed_files) &gt;= <span class="number">3</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">&quot;批量处理完成，暂停处理&quot;</span>)</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;已处理文件：<span class="subst">&#123;processed_files&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;待处理文件：<span class="subst">&#123;file_queue&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="3、循环控制语句">3、循环控制语句</h2><blockquote><p>循环控制语句让我们能够更精确地控制循环的执行流程。 break 用于提前<br>终止循环， continue 用于跳过当前迭代， 而 pass 则作为占位符使用。</p></blockquote><h2 id="4、range-函数详解">4、range()函数详解</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 基本用法</span></span><br><span class="line"><span class="comment"># 批量文件处理</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;=== 批量处理演示 ===&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># range(stop) - 从0开始到stop-1</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;处理前5个文件:&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">5</span>):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;  处理文件 <span class="subst">&#123;i + <span class="number">1</span>&#125;</span>: video_<span class="subst">&#123;i + <span class="number">1</span>&#125;</span>.mp4&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># range(start, stop) - 从start开始到stop-1</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n处理文件3到文件7:&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">3</span>, <span class="number">8</span>):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;  处理文件 <span class="subst">&#123;i&#125;</span>: video_<span class="subst">&#123;i&#125;</span>.mp4&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># range(start, stop, step) - 指定步长</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n每隔2个文件处理一次:&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>, <span class="number">11</span>, <span class="number">2</span>):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;  处理文件 <span class="subst">&#123;i&#125;</span>: video_<span class="subst">&#123;i&#125;</span>.mp4&quot;</span>)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># 倒叙和负步长的使用</span></span><br><span class="line"><span class="comment"># 版本回退功能</span></span><br><span class="line">resume_versions = [</span><br><span class="line">    <span class="string">&quot;v1.0 - 基础版本&quot;</span>,</span><br><span class="line">    <span class="string">&quot;v1.1 - 添加项目经验&quot;</span>,</span><br><span class="line">    <span class="string">&quot;v1.2 - 优化布局&quot;</span>,</span><br><span class="line">    <span class="string">&quot;v1.3 - 添加技能标签&quot;</span>,</span><br><span class="line">    <span class="string">&quot;v1.4 - 最新版本&quot;</span></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;=== 版本历史 ===&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;正序显示:&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(resume_versions)):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;  <span class="subst">&#123;resume_versions[i]&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n倒序显示:&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(resume_versions) - <span class="number">1</span>, -<span class="number">1</span>, -<span class="number">1</span>):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;  <span class="subst">&#123;resume_versions[i]&#125;</span>&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 使用负步长更简洁的写法</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n最近3个版本:&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(resume_versions) - <span class="number">1</span>, <span class="built_in">len</span>(resume_versions) - <span class="number">4</span>, -<span class="number">1</span>):</span><br><span class="line">    <span class="keyword">if</span> i &gt;= <span class="number">0</span>:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f&quot;  <span class="subst">&#123;resume_versions[i]&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><h2 id="5、enumerate-和zip-函数">5、enumerate()和zip()函数</h2><blockquote><p>enumerate()在遍历序列时同时获取索引和值</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">interview_topics = [</span><br><span class="line">    <span class="string">&quot;Python基础语法&quot;</span>,</span><br><span class="line">    <span class="string">&quot;数据结构与算法&quot;</span>,</span><br><span class="line">    <span class="string">&quot;数据库设计&quot;</span>,</span><br><span class="line">    <span class="string">&quot;系统架构&quot;</span>,</span><br><span class="line">    <span class="string">&quot;项目经验&quot;</span></span><br><span class="line">]</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;\n=== 题目清单 ===&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> index, topic <span class="keyword">in</span> <span class="built_in">enumerate</span>(interview_topics):</span><br><span class="line">    question_id = <span class="string">f&quot;Q<span class="subst">&#123;index + <span class="number">1</span>:03d&#125;</span>&quot;</span>  <span class="comment"># 生成Q001, Q002格式</span></span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;question_id&#125;</span>: <span class="subst">&#123;topic&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><blockquote><p>zip()可以同时遍历多个序列</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 课程评分统计</span></span><br><span class="line">course_names = [<span class="string">&quot;Python基础&quot;</span>, <span class="string">&quot;数据结构&quot;</span>, <span class="string">&quot;算法设计&quot;</span>, <span class="string">&quot;Web开发&quot;</span>, <span class="string">&quot;机器学习&quot;</span>]</span><br><span class="line">course_ratings = [<span class="number">4.8</span>, <span class="number">4.6</span>, <span class="number">4.7</span>, <span class="number">4.5</span>, <span class="number">4.9</span>]</span><br><span class="line">course_students = [<span class="number">1250</span>, <span class="number">980</span>, <span class="number">760</span>, <span class="number">1100</span>, <span class="number">650</span>]</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;=== 编程导航课程统计 ===&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> name, rating, students <span class="keyword">in</span> <span class="built_in">zip</span>(course_names, course_ratings, course_students):</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;name:&lt;<span class="number">12</span>&#125;</span> 评分: <span class="subst">&#123;rating&#125;</span>/5.0  学员: <span class="subst">&#123;students&#125;</span>人&quot;</span>)</span><br></pre></td></tr></table></figure><blockquote><p>同时使用处理复杂数据</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 任务进度跟踪</span></span><br><span class="line">task_names = [<span class="string">&quot;视频转码&quot;</span>, <span class="string">&quot;音频提取&quot;</span>, <span class="string">&quot;字幕生成&quot;</span>, <span class="string">&quot;封面制作&quot;</span>]</span><br><span class="line">task_progress = [<span class="number">85</span>, <span class="number">60</span>, <span class="number">30</span>, <span class="number">10</span>]</span><br><span class="line">task_status = [<span class="string">&quot;进行中&quot;</span>, <span class="string">&quot;进行中&quot;</span>, <span class="string">&quot;排队中&quot;</span>, <span class="string">&quot;未开始&quot;</span>]</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;=== 任务进度 ===&quot;</span>)</span><br><span class="line"><span class="keyword">for</span> index, (name, progress, status) <span class="keyword">in</span> <span class="built_in">enumerate</span>(<span class="built_in">zip</span>(task_names, task_progress, task_status)):</span><br><span class="line">    task_id = <span class="string">f&quot;T<span class="subst">&#123;index + <span class="number">1</span>:02d&#125;</span>&quot;</span></span><br><span class="line">    progress_bar = <span class="string">&quot;█&quot;</span> * (progress // <span class="number">10</span>) + <span class="string">&quot;░&quot;</span> * (<span class="number">10</span> - progress // <span class="number">10</span>)</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">f&quot;<span class="subst">&#123;task_id&#125;</span> <span class="subst">&#123;name:&lt;<span class="number">12</span>&#125;</span> [<span class="subst">&#123;progress_bar&#125;</span>] <span class="subst">&#123;progress&#125;</span>% - <span class="subst">&#123;status&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">Python基础</summary>
    
    
    
    <category term="Python" scheme="https://www.moonhalo.fun/categories/Python/"/>
    
    
    <category term="Python" scheme="https://www.moonhalo.fun/tags/Python/"/>
    
  </entry>
  
  <entry>
    <title>certbor 域名证书自动续期</title>
    <link href="https://www.moonhalo.fun/posts/177588fd.html"/>
    <id>https://www.moonhalo.fun/posts/177588fd.html</id>
    <published>2025-12-15T16:57:05.000Z</published>
    <updated>2026-07-27T13:07:07.527Z</updated>
    
    <content type="html"><![CDATA[<h1>1、拉去镜像</h1><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker pull certbot/certbot</span><br></pre></td></tr></table></figure><h1>2、创建docker-compose.yml文件</h1><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="symbol">version:</span> <span class="string">&#x27;1.0&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="symbol">services:</span></span><br><span class="line">  <span class="symbol">certbot:</span></span><br><span class="line">    <span class="symbol">image:</span> certbot/certbot  <span class="comment"># 镜像</span></span><br><span class="line">    <span class="symbol">container_name:</span> certbot <span class="comment"># 容器名称</span></span><br><span class="line">    <span class="symbol">volumes:</span></span><br><span class="line">      - <span class="regexp">/data/docker</span><span class="regexp">/nginx/certs</span><span class="symbol">:/etc/letsencrypt</span> <span class="comment">#映射nginx的证书目录</span></span><br><span class="line">      - <span class="regexp">/data/docker</span><span class="regexp">/nginx/html</span><span class="symbol">:/var/www/html</span>     <span class="comment">#映射nginx的html目录</span></span><br><span class="line">    <span class="symbol">networks:</span></span><br><span class="line">      - certbot_network</span><br><span class="line">    <span class="symbol">restart:</span> always</span><br><span class="line"></span><br><span class="line"><span class="symbol">networks:</span></span><br><span class="line">  <span class="symbol">certbot_network:</span></span><br><span class="line">    <span class="symbol">driver:</span> bridge</span><br></pre></td></tr></table></figure><h1>3、创建nginx配置</h1><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># server模块</span></span><br><span class="line"><span class="section">server</span> &#123;</span><br><span class="line">    <span class="attribute">listen</span> <span class="number">80</span>; <span class="comment"># 端口</span></span><br><span class="line">    <span class="attribute">server_name</span> xxx.com; <span class="comment"># 域名</span></span><br><span class="line"></span><br><span class="line">    <span class="section">location</span><span class="regexp"> ^~</span> /.well-known/acme-challenge/ &#123;</span><br><span class="line">        <span class="attribute">root</span> /usr/share/nginx/html; <span class="comment">#域名验证目录</span></span><br><span class="line">        <span class="attribute">default_type</span> text/plain;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h1>4、启动容器</h1><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">docker-compose up -d</span></span><br></pre></td></tr></table></figure><h1>6、测试域名是否发放成功</h1><blockquote><p>certonly:只获取证书，不配置web服务器<br>–webroot：使用webroot验证方式<br>–dry-run：测试模式，不实际申请证书<br>-d：指定要申请证书的域名(可以多个，最多100个)<br>–non-interactive：非交互模式运行<br>–agree-tos：同意服务条款<br>–email：提供联系邮箱</p></blockquote><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">docker run <span class="attr">--rm</span> \</span><br><span class="line"> -v /data/docker/nginx/certs:/etc/letsencrypt \</span><br><span class="line"> -v /data/docker/nginx/<span class="selector-tag">html</span>:/var/www/<span class="selector-tag">html</span> \</span><br><span class="line"> certbot/certbot certonly <span class="attr">--webroot</span> -w /var/www/<span class="selector-tag">html</span> <span class="attr">--dry-run</span> -d web<span class="selector-class">.moonhalo</span><span class="selector-class">.fun</span> -d <span class="selector-tag">img</span><span class="selector-class">.moonhalo</span><span class="selector-class">.fun</span> <span class="attr">--non-interactive</span> <span class="attr">--agree-tos</span> <span class="attr">--email</span> xx@qq.com</span><br></pre></td></tr></table></figure><blockquote><p>如果输出 The dry run was successful.，说明测试成功。</p></blockquote><h1>7、正式获取证书</h1><blockquote><p>去掉 --dry-run 运行</p></blockquote><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">docker run <span class="attr">--rm</span> \</span><br><span class="line"> -v /data/docker/nginx/certs:/etc/letsencrypt \</span><br><span class="line"> -v /data/docker/nginx/<span class="selector-tag">html</span>:/var/www/<span class="selector-tag">html</span> \</span><br><span class="line"> certbot/certbot certonly <span class="attr">--webroot</span> -w /var/www/<span class="selector-tag">html</span> -d web<span class="selector-class">.moonhalo</span><span class="selector-class">.fun</span> -d <span class="selector-tag">img</span><span class="selector-class">.moonhalo</span><span class="selector-class">.fun</span> <span class="attr">--non-interactive</span> <span class="attr">--agree-tos</span> <span class="attr">--email</span> xx@qq.com</span><br></pre></td></tr></table></figure><h1>8、生成结果文件</h1><blockquote><p>Certbot 会在 ./certs/live/xxx.com/ 目录下生成证书文件，包括：<br>fullchain.pem：完整的证书链<br>privkey.pem：私钥</p></blockquote><h1>9、修改nginx配置文件</h1><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">server</span> &#123;</span><br><span class="line">    <span class="comment"># 监听 443 https 端口 , 启用 HTTP/2 协议</span></span><br><span class="line">    <span class="attribute">listen</span> <span class="number">443</span> ssl http2;</span><br><span class="line">    <span class="comment"># 域名，修改成你自己的</span></span><br><span class="line">    <span class="attribute">server_name</span> xxx.com;</span><br><span class="line">    <span class="attribute">client_max_body_size</span> <span class="number">100M</span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment"># ssl 证书</span></span><br><span class="line">    <span class="attribute">ssl_certificate</span> /etc/nginx/certs/live/web.moonhalo.fun/fullchain.pem; <span class="comment"># 完整的证书链</span></span><br><span class="line">    <span class="attribute">ssl_certificate_key</span>  /etc/nginx/certs/live/web.moonhalo.fun/privkey.pem; <span class="comment"># 私钥</span></span><br><span class="line">    <span class="attribute">ssl_session_timeout</span> <span class="number">5m</span>;</span><br><span class="line">    <span class="attribute">ssl_ciphers</span> ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;</span><br><span class="line">    <span class="attribute">ssl_protocols</span> TLSv1 TLSv1.<span class="number">1</span> TLSv1.<span class="number">2</span>;</span><br><span class="line">    <span class="attribute">ssl_prefer_server_ciphers</span> <span class="literal">on</span>;</span><br><span class="line"></span><br><span class="line">    <span class="comment"># 代理请求</span></span><br><span class="line">    <span class="section">location</span> / &#123;</span><br><span class="line">      <span class="comment"># 你的配置</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h1>10、重启nginx</h1><figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">docker restart nginx</span></span><br></pre></td></tr></table></figure><h1>11、配置定时任务</h1><blockquote><p>配置定时任务，在每月1号和15号执行一次，检查检查和更新域名证书</p></blockquote><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 进入定时任务配置</span></span><br><span class="line"><span class="built_in">sudo</span> crontab -e</span><br><span class="line"></span><br><span class="line"><span class="comment"># 添加定时任务（第一个路径是docker-compose.yml文件路径，可在dockers compose后面加 -f xxx.yml指定文件）</span></span><br><span class="line">0 0 1,15 * * <span class="built_in">cd</span> /root/docker/nginx &amp;&amp; /usr/bin/docker compose run --<span class="built_in">rm</span> certbot renew &amp;&amp; /usr/bin/docker compose restart nginx</span><br></pre></td></tr></table></figure><h1>12、更换域名</h1><blockquote><p>重新运行第七步，修改nginx配置为对应证书，重启nginx即可</p></blockquote>]]></content>
    
    
    <summary type="html">certbor 域名证书自动续期</summary>
    
    
    
    <category term="Docker" scheme="https://www.moonhalo.fun/categories/Docker/"/>
    
    
    <category term="Docker" scheme="https://www.moonhalo.fun/tags/Docker/"/>
    
    <category term="certbor" scheme="https://www.moonhalo.fun/tags/certbor/"/>
    
  </entry>
  
  <entry>
    <title>Docker部署MySql</title>
    <link href="https://www.moonhalo.fun/posts/200c8d32.html"/>
    <id>https://www.moonhalo.fun/posts/200c8d32.html</id>
    <published>2025-10-11T10:16:54.000Z</published>
    <updated>2026-07-27T13:07:07.527Z</updated>
    
    <content type="html"><![CDATA[<h3 id="1、拉取mysql8镜像">1、拉取mysql8镜像</h3><figure class="highlight apache"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">docker</span> pull mysql:<span class="number">8</span>.<span class="number">0</span>.<span class="number">28</span></span><br></pre></td></tr></table></figure><h3 id="2、拉取musql配置文件">2、拉取musql配置文件</h3><ul><li>创建mysql存储目录</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> -p /data/docker/mysql</span><br></pre></td></tr></table></figure><ul><li>创建mysql容器</li></ul><figure class="highlight apache"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">docker</span> run -d <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>--name mysql <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>-p <span class="number">3306</span>:<span class="number">3306</span> <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>-e MYSQL_ROOT_PASSWORD=<span class="number">123456</span> <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>mysql:<span class="number">8</span>.<span class="number">0</span>.<span class="number">28</span></span><br></pre></td></tr></table></figure><ul><li>拉取musql配置页面</li></ul><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 将容器中的 mysql 配置文件复制到宿主机中指定路径下</span></span><br><span class="line">docker <span class="built_in">cp</span> mysql:/etc/mysql /data/docker/mysql/config</span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除容器</span></span><br><span class="line">docker <span class="built_in">rm</span> -f mysql</span><br></pre></td></tr></table></figure><h3 id="完成mysql容器的创建与挂载">完成mysql容器的创建与挂载</h3><figure class="highlight apache"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">docker</span> run -d <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>--name mysql <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>-p <span class="number">3306</span>:<span class="number">3306</span> <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>-v /docker/mysql/config:/etc/mysql <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>-v /docker/mysql/data:/var/lib/mysql <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>-e MYSQL_ROOT_PASSWORD=qq1072171632 <span class="punctuation">\</span></span><br><span class="line"><span class="punctuation"></span>mysql:<span class="number">8</span>.<span class="number">0</span>.<span class="number">28</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">本文重点介绍Docker部署MySql的过程</summary>
    
    
    
    <category term="Docker" scheme="https://www.moonhalo.fun/categories/Docker/"/>
    
    
    <category term="Docker" scheme="https://www.moonhalo.fun/tags/Docker/"/>
    
    <category term="MySql" scheme="https://www.moonhalo.fun/tags/MySql/"/>
    
  </entry>
  
</feed>
