<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="http://di404.uk.eu.org/feed.xml" rel="self" type="application/atom+xml" /><link href="http://di404.uk.eu.org/" rel="alternate" type="text/html" /><updated>2025-06-30T21:37:51+08:00</updated><id>http://di404.uk.eu.org/feed.xml</id><title type="html">风之岛</title><subtitle>Reconi&apos;s Personal Blog</subtitle><entry><title type="html">Baba</title><link href="http://di404.uk.eu.org/2025/06/30/baba/" rel="alternate" type="text/html" title="Baba" /><published>2025-06-30T00:00:00+08:00</published><updated>2025-06-30T00:00:00+08:00</updated><id>http://di404.uk.eu.org/2025/06/30/baba</id><content type="html" xml:base="http://di404.uk.eu.org/2025/06/30/baba/"><![CDATA[<p>123</p>]]></content><author><name></name></author><summary type="html"><![CDATA[123]]></summary></entry><entry><title type="html">Python语法入门</title><link href="http://di404.uk.eu.org/2025/06/23/Python%E8%AF%AD%E6%B3%95%E5%85%A5%E9%97%A8/" rel="alternate" type="text/html" title="Python语法入门" /><published>2025-06-23T00:00:00+08:00</published><updated>2025-06-23T00:00:00+08:00</updated><id>http://di404.uk.eu.org/2025/06/23/Python%E8%AF%AD%E6%B3%95%E5%85%A5%E9%97%A8</id><content type="html" xml:base="http://di404.uk.eu.org/2025/06/23/Python%E8%AF%AD%E6%B3%95%E5%85%A5%E9%97%A8/"><![CDATA[<h1 id="python语法入门">Python语法入门</h1>

<h2 id="00-why-python">00 Why Python?</h2>

<p>Python是一门解释型语言，具有完全面向对象特性</p>

<h2 id="01-what-we-need">01 What we need?</h2>

<p>解释器：Python本身(MS Store安装/自行安装) （Conda也算一种Python发行版）</p>

<p>IDE:Pycharm</p>

<h2 id="02-变量">02 变量</h2>

<p>Python的变量类型不同于C系的short long unsigned blbl 显得简单粗暴</p>

<p>但又有些不同于C的变量类型(又不简单粗暴了)</p>

<p><strong>数字型</strong></p>

<p>整型 浮点型 布尔型（True 1 / False 0)  复数型</p>

<p><strong>非数字型</strong></p>

<p>字符串 <em>列表 元组 集合 字典</em></p>

<h3 id="变量定义">变量定义</h3>

<p>变量的定义不需要声明，但是需要赋值才算创建</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
</pre></td><td class="rouge-code"><pre><span class="c1"># 定义整型变量a
</span><span class="n">a</span> <span class="o">=</span> <span class="mi">10</span>
<span class="c1"># 定义字符串变量 hello
</span><span class="n">hello</span> <span class="o">=</span> <span class="s">"hello, world!"</span>

<span class="s">'''
这是
一个
多行
注释
'''</span>

<span class="s">'''
      3x -5 (x &gt; 1)
f(x)= x + 2 (-1&lt;=x&lt;=1)
      5x +3 (x &lt; -1)
'''</span>

<span class="n">x</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s">'x = '</span><span class="p">))</span>
<span class="k">if</span> <span class="n">x</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
    <span class="n">y</span> <span class="o">=</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">x</span> <span class="o">-</span> <span class="mi">5</span>
<span class="k">else</span><span class="p">:</span>
    <span class="k">if</span> <span class="n">x</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">:</span>
        <span class="n">y</span> <span class="o">=</span> <span class="n">x</span> <span class="o">+</span> <span class="mi">2</span>
    <span class="k">else</span><span class="p">:</span>
        <span class="n">y</span> <span class="o">=</span> <span class="mi">5</span> <span class="o">*</span> <span class="n">x</span> <span class="o">+</span> <span class="mi">3</span>
<span class="k">print</span><span class="p">(</span><span class="s">'f(%.2f) = %.2f'</span> <span class="o">%</span> <span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">))</span>


<span class="c1">#转换输入类型为float 创建一个float型变量x
</span></pre></td></tr></tbody></table></code></pre></div></div>

<p>以上是一个分段函数求解程序 输入x 得到 y</p>

<p>print部分有类似printf的格式化输出的处理。 使用<code class="language-plaintext highlighter-rouge">%</code>将元组种的数值放到输出文段里</p>

<p><em>扩展：</em> 我们其实有更现代的写法，</p>

<p>①将格式化段<code class="language-plaintext highlighter-rouge">%.2f</code>替换成<code class="language-plaintext highlighter-rouge">{:.2f}</code> ，将运算符<code class="language-plaintext highlighter-rouge">%</code>替换为<code class="language-plaintext highlighter-rouge">.format</code></p>

<p>②<strong>仅适用于Python 3.6+</strong></p>

<p>​	将输出段用双引号引起来，左端引号外加上<code class="language-plaintext highlighter-rouge">f</code>使其变为f-string，格式化段直接指向元组或变量</p>

<p>即<code class="language-plaintext highlighter-rouge">{x:.2f}</code> 或<code class="language-plaintext highlighter-rouge">{y:.2f}</code></p>

<p>所以代码的最后一句可以写成下述格式：</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
</pre></td><td class="rouge-code"><pre><span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'f(</span><span class="si">{</span><span class="n">x</span><span class="si">:</span><span class="p">.</span><span class="mi">2</span><span class="n">f</span><span class="si">}</span><span class="s">) = </span><span class="si">{</span><span class="n">y</span><span class="si">:</span><span class="p">.</span><span class="mi">2</span><span class="n">f</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p>简洁很多</p>

<p>至于格式化输出段 晚点再补充~</p>

<h3 id="标识符">标识符</h3>

<p>标识符其实就是<strong>变量名</strong> <strong>函数名</strong></p>

<p>名字应当见名知意</p>

<p>可由<strong>字母</strong> <strong>下划线</strong> <strong>数字</strong> 组成
<strong>不能数字开头 不能与保留字重复</strong></p>

<p><img src="C:\Users\15994\AppData\Roaming\Typora\typora-user-images\image-20250623151522914.png" alt="image-20250623151522914" /></p>

<p>输出保留字的方法如下：</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
</pre></td><td class="rouge-code"><pre><span class="kn">import</span> <span class="nn">keyword</span>
<span class="k">print</span><span class="p">(</span><span class="n">keyword</span><span class="p">.</span><span class="n">kwlist</span><span class="p">)</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="列表list">列表(list)</h3>

<p><code class="language-plaintext highlighter-rouge">list</code>是一种结构化的<strong>非标量</strong>类型，是值的<strong>有序序列</strong></p>

<p><strong>定义&amp;遍历</strong></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td class="rouge-code"><pre><span class="n">list1</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">100</span><span class="p">]</span>

<span class="c1"># 乘号表示列表元素的重复
</span><span class="n">list2</span> <span class="o">=</span> <span class="p">[</span><span class="s">'hello'</span><span class="p">]</span> <span class="o">*</span> <span class="mi">3</span>
<span class="k">print</span><span class="p">(</span><span class="n">list2</span><span class="p">)</span>  <span class="c1"># ['hello', 'hello', 'hello']
</span>
<span class="c1"># 计算列表长度（元素个数）
</span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">list1</span><span class="p">))</span>  <span class="c1"># 5
</span>
<span class="c1"># 下标（索引）运算
</span><span class="k">print</span><span class="p">(</span><span class="n">list1</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>    <span class="c1"># 1
</span><span class="k">print</span><span class="p">(</span><span class="n">list1</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>    <span class="c1"># 100
</span><span class="k">print</span><span class="p">(</span><span class="n">list1</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>   <span class="c1"># 100
</span><span class="k">print</span><span class="p">(</span><span class="n">list1</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">])</span>   <span class="c1"># 5
</span>
<span class="c1"># 通过循环用下标遍历列表元素
</span><span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">list1</span><span class="p">)):</span>
    <span class="k">print</span><span class="p">(</span><span class="n">list1</span><span class="p">[</span><span class="n">index</span><span class="p">])</span>

<span class="c1"># 通过 for 循环遍历列表元素
</span><span class="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">list1</span><span class="p">:</span>
    <span class="k">print</span><span class="p">(</span><span class="n">elem</span><span class="p">)</span>

<span class="c1"># 通过 enumerate 函数处理列表之后再遍历可以同时获得元素索引和值
</span><span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">list1</span><span class="p">):</span>
    <span class="k">print</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">elem</span><span class="p">)</span>

</pre></td></tr></tbody></table></code></pre></div></div>

<p>说人话的话这个东西就是数组pro max，它可以存字符串之类的变量</p>

<p>如果说列表相对数组pro在更灵活的变量类型的话，那它就max在相当简易的延长和删除上</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</pre></td><td class="rouge-code"><pre><span class="n">list1</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">100</span><span class="p">]</span>

<span class="c1"># 修改元素
</span><span class="n">list1</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="mi">300</span>

<span class="c1"># 添加元素
</span><span class="n">list1</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">200</span><span class="p">)</span>         <span class="c1"># 在末尾添加元素
</span><span class="n">list1</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">400</span><span class="p">)</span>      <span class="c1"># 在索引 1 的位置插入元素 400,即插入后位于list1[1]
</span>
<span class="c1"># 合并两个列表
</span><span class="n">list1</span> <span class="o">+=</span> <span class="p">[</span><span class="mi">1000</span><span class="p">,</span> <span class="mi">2000</span><span class="p">]</span>

<span class="k">print</span><span class="p">(</span><span class="n">list1</span><span class="p">)</span>              <span class="c1"># [1, 400, 3, 300, 7, 100, 200, 1000, 2000]
</span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">list1</span><span class="p">))</span>         <span class="c1"># 9
</span>
<span class="c1"># 先通过成员运算判断元素是否在列表中，使用 remove 删除元素(甚至可以自动遍历整个列表找到符合要求的数值)
</span><span class="k">if</span> <span class="mi">3</span> <span class="ow">in</span> <span class="n">list1</span><span class="p">:</span>
    <span class="n">list1</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>

<span class="c1"># 删除指定位置的元素，可以返回被删除的元素
</span><span class="n">m</span> <span class="o">=</span> <span class="n">list1</span><span class="p">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"被删除的第一个元素是：</span><span class="si">{</span><span class="n">m</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>

<span class="c1"># 清空列表元素
</span><span class="n">list1</span><span class="p">.</span><span class="n">clear</span><span class="p">()</span>
<span class="k">print</span><span class="p">(</span><span class="n">list1</span><span class="p">)</span>              <span class="c1"># []
</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="元组tuple">元组(tuple)</h3>

<p><code class="language-plaintext highlighter-rouge">tuple</code>类似于<strong>列表</strong> 重点在于<strong>不能修改</strong></p>

<p>元组使用小括号<code class="language-plaintext highlighter-rouge">()</code></p>

<p><strong>定义与转换</strong></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="rouge-code"><pre><span class="n">t</span> <span class="o">=</span> <span class="p">(</span><span class="s">'CCNU'</span><span class="p">,</span> <span class="mi">1122</span><span class="p">,</span> <span class="s">'love'</span><span class="p">,</span> <span class="mi">77</span><span class="p">)</span> <span class="c1">#小括号在外 逗号分隔
</span><span class="k">print</span><span class="p">(</span><span class="n">t</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="c1">#查看元素
</span><span class="k">for</span> <span class="n">member</span> <span class="ow">in</span> <span class="n">t</span><span class="p">:</span>
    <span class="k">print</span><span class="p">(</span><span class="n">member</span><span class="p">)</span> <span class="c1">#遍历元素
</span>    
<span class="c1"># 将元组转换成列表
</span><span class="n">list_t</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="c1"># 是不是超级像c的强制类型转换呀
</span>
<span class="c1"># 将列表转换成元组
</span><span class="n">l</span> <span class="o">=</span> <span class="p">[</span><span class="s">'CCNU'</span><span class="p">,</span> <span class="mi">77</span><span class="p">,</span> <span class="s">'love'</span><span class="p">,</span> <span class="mi">1122</span><span class="p">]</span>
<span class="n">tuple_l</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">l</span><span class="p">)</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="集合set">集合(set)</h3>

<p>类似数学中的集合，<strong>元素不能重复</strong></p>

<p>使用大括号<code class="language-plaintext highlighter-rouge">{}</code>括起来的叫集合</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="rouge-code"><pre><span class="c1">#定义集合
</span><span class="nb">set</span> <span class="o">=</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">}</span> <span class="c1">#可以写重复的 但是python会主动忽略
</span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">))</span> <span class="c1"># 3
</span> <span class="c1"># 创建集合的构造器语法
</span><span class="n">set2</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">))</span> <span class="c1"># 理解为for(i=1;i&lt;10;i++)
</span><span class="n">set3</span> <span class="o">=</span> <span class="nb">set</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>

<span class="k">print</span><span class="p">(</span><span class="n">set2</span><span class="p">,</span> <span class="n">set3</span><span class="p">)</span> <span class="c1"># {1, 2, 3, 4, 5, 6, 7, 8, 9} {1, 2, 3}
</span>
<span class="c1"># 创建集合的推导式语法(推导式也可以⽤于推导集合)
</span>
<span class="n">set4</span> <span class="o">=</span> <span class="p">{</span><span class="n">num</span> <span class="k">for</span> <span class="n">num</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span> <span class="k">if</span> <span class="n">num</span> <span class="o">%</span> <span class="mi">3</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">num</span> <span class="o">%</span> <span class="mi">5</span> <span class="o">==</span> <span class="mi">0</span><span class="p">}</span>
<span class="c1"># 仅存储3的倍数和5的倍数
</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p>同样的，元组、列表、集合可以相互转换，但是转换为集合会失去所有重复元素</p>

<p><strong>TIP:</strong>集合为了保证效率，其顺序是<strong>不可控的</strong>，意味着每次对其进行修改之后都会得到不同的顺序（甚至不修改也有可能变动?这点存疑）</p>

<p><strong>对集合的修改</strong></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
</pre></td><td class="rouge-code"><pre><span class="n">set1</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span> <span class="c1"># 一次添加一个数值 已存在则忽略
</span><span class="n">set2</span><span class="p">.</span><span class="n">update</span><span class="p">([</span><span class="mi">11</span><span class="p">,</span><span class="mi">12</span><span class="p">])</span> <span class="c1"># 一次添加多个 已存在则忽略
</span><span class="n">set2</span><span class="p">.</span><span class="n">discard</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="c1"># 删除已有元素 如果不存在则忽略 不报错（remove会报错）
</span>
<span class="k">if</span> <span class="mi">4</span> <span class="nb">int</span> <span class="n">set2</span><span class="p">:</span>
    <span class="n">set2</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
    
<span class="k">print</span><span class="p">(</span><span class="n">set3</span><span class="p">.</span><span class="n">pop</span><span class="p">())</span><span class="c1"># 随机删一个
</span><span class="k">print</span><span class="p">(</span><span class="n">set3</span><span class="p">)</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<p><strong>集合运算</strong></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="rouge-code"><pre><span class="c1"># 集合交并差 对称差
</span><span class="k">print</span><span class="p">(</span><span class="n">set1</span> <span class="o">&amp;</span> <span class="n">set2</span><span class="p">)</span><span class="c1"># print(set1.intersection(set2)) 交集 同时存在的元素
</span><span class="k">print</span><span class="p">(</span><span class="n">set1</span> <span class="o">|</span> <span class="n">set2</span><span class="p">)</span><span class="c1"># print(set1.union(set2)) 并集 
</span><span class="k">print</span><span class="p">(</span><span class="n">set1</span> <span class="o">-</span> <span class="n">set2</span><span class="p">)</span><span class="c1"># print(set1.difference(set2)) 差集 属于set1但不属于set2的元素
</span><span class="k">print</span><span class="p">(</span><span class="n">set1</span> <span class="o">^</span> <span class="n">set2</span><span class="p">)</span><span class="c1"># print(set1.symmetric_difference(set2)) 属于set1或set2，但不同时属于set1或set2的元素（排除交集的并集)
</span>
<span class="c1"># 判断子集或者超集
# 如果是，则运算返回一个True/1的bool 否则返回一个False/0
</span>
<span class="k">print</span><span class="p">(</span><span class="n">set2</span> <span class="o">&lt;=</span> <span class="n">set1</span><span class="p">)</span> <span class="c1"># print(set2.issubset(set1)) set2是否为set1的子集
</span><span class="k">print</span><span class="p">(</span><span class="n">set2</span> <span class="o">&gt;=</span> <span class="n">set1</span><span class="p">)</span> <span class="c1"># print(set2.issuperset(set2)) set2是否为set1的超集
</span><span class="k">print</span><span class="p">(</span><span class="n">set2</span> <span class="o">&lt;</span> <span class="n">set1</span><span class="p">)</span> <span class="c1"># set2是否为set1的真子集
</span><span class="k">print</span><span class="p">(</span><span class="n">set2</span> <span class="o">&gt;</span> <span class="n">set1</span><span class="p">)</span> <span class="c1"># set2是否为set1的真超集
</span></pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="字典dict">字典（dict）</h3>

<p><code class="language-plaintext highlighter-rouge">dict</code>的每个元素都是由一个键和一个值组成的<strong>键值对</strong>，键与值通过冒号分开</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="rouge-code"><pre> <span class="c1"># 创建字典字面量
</span> <span class="n">scores</span> <span class="o">=</span> <span class="p">{</span><span class="s">'张三'</span><span class="p">:</span> <span class="mi">95</span><span class="p">,</span> <span class="s">'李四'</span><span class="p">:</span> <span class="mi">85</span><span class="p">,</span> <span class="s">'王五'</span><span class="p">:</span> <span class="mi">35</span><span class="p">}</span>
 
 <span class="c1">#创建字典的构造器语法
</span> <span class="n">items1</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">one</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">two</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">three</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">four</span><span class="o">=</span><span class="mi">4</span><span class="p">)</span> <span class="c1">#{'one': 1, 'two': 2, 'three': 3, 'four': 4}
</span> 
 <span class="c1"># zip函数将两个序列压成字典
</span> <span class="n">item1</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="nb">zip</span><span class="p">([</span><span class="s">'a'</span><span class="p">,</span> <span class="s">'b'</span><span class="p">,</span> <span class="s">'c'</span><span class="p">],</span> <span class="s">'123'</span><span class="p">))</span> <span class="c1">#{'a': '1', 'b': '2', 'c': '3'} 
</span> 
 <span class="c1">#推导式语法
</span> <span class="n">items3</span> <span class="o">=</span> <span class="p">{</span><span class="n">num</span><span class="p">:</span> <span class="n">num</span> <span class="o">**</span> <span class="mi">2</span> <span class="k">for</span> <span class="n">num</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">)}</span> <span class="c1">#对应平方
</span> 
  <span class="k">print</span><span class="p">(</span><span class="n">scores</span><span class="p">[</span><span class="s">'张三'</span><span class="p">])</span> <span class="c1"># 95
</span>  <span class="k">print</span><span class="p">(</span><span class="n">scores</span><span class="p">[</span><span class="s">'李四'</span><span class="p">])</span> <span class="c1"># 85
</span> <span class="c1"># 遍历键值
</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">scores</span><span class="p">:</span>
     <span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'</span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s">:</span><span class="si">{</span><span class="n">scores</span><span class="p">[</span><span class="n">key</span><span class="p">]</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
     
 <span class="s">'''
 张三:95
 李四:85
 王五:35
 '''</span>
 
 <span class="c1">#更新元素
</span> <span class="n">scores</span><span class="p">[</span><span class="s">'张三'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">88</span> <span class="c1">#修改已有项
</span> <span class="n">scores</span><span class="p">[</span><span class="s">'ykn'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">66</span> <span class="c1">#添加新的键值对
</span> <span class="n">scores</span><span class="p">.</span><span class="n">update</span><span class="p">(</span><span class="n">nina</span> <span class="o">=</span> <span class="mi">27</span><span class="p">,</span> <span class="n">mmk</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="c1">#添加多个键值对
</span> <span class="k">print</span><span class="p">(</span><span class="n">scores</span><span class="p">)</span> <span class="c1"># {'张三': 88, '李四': 85, '王五': 35, 'ykn': 66, 'nina': 27, 'mmk': 0}
</span> 
 <span class="c1"># get方法 获取值 但可以设置默认值（即不存在对应键值对则返回设定的默认值）
</span> <span class="k">print</span><span class="p">(</span><span class="n">scores</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="s">'drum'</span><span class="p">.</span> <span class="mi">486</span><span class="p">))</span>
 <span class="k">print</span><span class="p">(</span><span class="n">scores</span><span class="p">.</span><span class="n">pop</span><span class="p">(</span><span class="s">'anon'</span><span class="p">,</span><span class="mi">250</span><span class="p">)</span> <span class="c1">#删除对应键值对并返回对应值，若不存在则返回设定的默认值。若未提供默认值抛出KeyError
</span> 
 <span class="k">print</span><span class="p">(</span><span class="n">scores</span><span class="p">.</span><span class="n">popitem</span><span class="p">())</span> <span class="c1"># 随机删除并返回一个键值对 Python 3.7+中此函数默认删除最后插入的键值对
</span> 
</pre></td></tr></tbody></table></code></pre></div></div>

<h3 id="函数">函数</h3>

<p>通过函数名<strong>封装</strong>并<strong>调用</strong>一段实现功能的完整代码</p>

<p><strong>内置函数</strong> <code class="language-plaintext highlighter-rouge">print()</code> <code class="language-plaintext highlighter-rouge">input()</code>之类 包含于库中</p>

<p><strong>自定义函数</strong></p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
</pre></td><td class="rouge-code"><pre><span class="k">def</span> <span class="nf">func_name</span> <span class="p">(</span><span class="n">parameter1</span><span class="p">,</span> <span class="n">parameter2</span><span class="p">):</span> <span class="c1">#定义函数名和参数
</span>    <span class="p">...</span> <span class="c1">#此处为具体代码段
</span>    <span class="k">return</span> <span class="n">s</span> <span class="c1"># 返回值(可选)
</span></pre></td></tr></tbody></table></code></pre></div></div>

<p>调用时使用<code class="language-plaintext highlighter-rouge">func_name(para1, para2)</code>，需要匹配传入参数</p>

<h2 id="类class">类（Class)</h2>

<p>类是面向对象特性的重要元素。我们学的C语言很显然没有类的概念，现在在python中我们会通过Class来理解面向对象特性</p>]]></content><author><name></name></author><category term="编程学习" /><summary type="html"><![CDATA[Python语法入门 00 Why Python? Python是一门解释型语言，具有完全面向对象特性 01 What we need? 解释器：Python本身(MS Store安装/自行安装) （Conda也算一种Python发行版） IDE:Pycharm 02 变量 Python的变量类型不同于C系的short long unsigned blbl 显得简单粗暴 但又有些不同于C的变量类型(又不简单粗暴了) 数字型 整型 浮点型 布尔型（True 1 / False 0) 复数型 非数字型 字符串 列表 元组 集合 字典 变量定义 变量的定义不需要声明，但是需要赋值才算创建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 # 定义整型变量a a = 10 # 定义字符串变量 hello hello = "hello, world!" ''' 这是 一个 多行 注释 ''' ''' 3x -5 (x &gt; 1) f(x)= x + 2 (-1&lt;=x&lt;=1) 5x +3 (x &lt; -1) ''' x = float(input('x = ')) if x &gt; 1: y = 3 * x - 5 else: if x &gt;= 1: y = x + 2 else: y = 5 * x + 3 print('f(%.2f) = %.2f' % (x,y)) #转换输入类型为float 创建一个float型变量x 以上是一个分段函数求解程序 输入x 得到 y print部分有类似printf的格式化输出的处理。 使用%将元组种的数值放到输出文段里 扩展： 我们其实有更现代的写法， ①将格式化段%.2f替换成{:.2f} ，将运算符%替换为.format ②仅适用于Python 3.6+ ​ 将输出段用双引号引起来，左端引号外加上f使其变为f-string，格式化段直接指向元组或变量 即{x:.2f} 或{y:.2f} 所以代码的最后一句可以写成下述格式： 1 print(f'f({x:.2f}) = {y:.2f}') 简洁很多 至于格式化输出段 晚点再补充~ 标识符 标识符其实就是变量名 函数名 名字应当见名知意 可由字母 下划线 数字 组成 不能数字开头 不能与保留字重复 输出保留字的方法如下： 1 2 import keyword print(keyword.kwlist) 列表(list) list是一种结构化的非标量类型，是值的有序序列 定义&amp;遍历 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 list1 = [1, 3, 5, 7, 100] # 乘号表示列表元素的重复 list2 = ['hello'] * 3 print(list2) # ['hello', 'hello', 'hello'] # 计算列表长度（元素个数） print(len(list1)) # 5 # 下标（索引）运算 print(list1[0]) # 1 print(list1[4]) # 100 print(list1[-1]) # 100 print(list1[-3]) # 5 # 通过循环用下标遍历列表元素 for index in range(len(list1)): print(list1[index]) # 通过 for 循环遍历列表元素 for elem in list1: print(elem) # 通过 enumerate 函数处理列表之后再遍历可以同时获得元素索引和值 for index, elem in enumerate(list1): print(index, elem) 说人话的话这个东西就是数组pro max，它可以存字符串之类的变量 如果说列表相对数组pro在更灵活的变量类型的话，那它就max在相当简易的延长和删除上 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 list1 = [1, 3, 5, 7, 100] # 修改元素 list1[2] = 300 # 添加元素 list1.append(200) # 在末尾添加元素 list1.insert(1, 400) # 在索引 1 的位置插入元素 400,即插入后位于list1[1] # 合并两个列表 list1 += [1000, 2000] print(list1) # [1, 400, 3, 300, 7, 100, 200, 1000, 2000] print(len(list1)) # 9 # 先通过成员运算判断元素是否在列表中，使用 remove 删除元素(甚至可以自动遍历整个列表找到符合要求的数值) if 3 in list1: list1.remove(3) # 删除指定位置的元素，可以返回被删除的元素 m = list1.pop(0) print(f"被删除的第一个元素是：{m}") # 清空列表元素 list1.clear() print(list1) # [] 元组(tuple) tuple类似于列表 重点在于不能修改 元组使用小括号() 定义与转换 1 2 3 4 5 6 7 8 9 10 11 t = ('CCNU', 1122, 'love', 77) #小括号在外 逗号分隔 print(t[2]) #查看元素 for member in t: print(member) #遍历元素 # 将元组转换成列表 list_t = list(t) # 是不是超级像c的强制类型转换呀 # 将列表转换成元组 l = ['CCNU', 77, 'love', 1122] tuple_l = tuple(l) 集合(set) 类似数学中的集合，元素不能重复 使用大括号{}括起来的叫集合 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #定义集合 set = {1, 2, 3, 3, 3, 2} #可以写重复的 但是python会主动忽略 print(len(set)) # 3 # 创建集合的构造器语法 set2 = set(range(1, 10)) # 理解为for(i=1;i&lt;10;i++) set3 = set((1, 2, 3, 3, 2, 1)) print(set2, set3) # {1, 2, 3, 4, 5, 6, 7, 8, 9} {1, 2, 3} # 创建集合的推导式语法(推导式也可以⽤于推导集合) set4 = {num for num in range(1, 100) if num % 3 == 0 or num % 5 == 0} # 仅存储3的倍数和5的倍数 同样的，元组、列表、集合可以相互转换，但是转换为集合会失去所有重复元素 TIP:集合为了保证效率，其顺序是不可控的，意味着每次对其进行修改之后都会得到不同的顺序（甚至不修改也有可能变动?这点存疑） 对集合的修改 1 2 3 4 5 6 7 8 9 set1.add(4) # 一次添加一个数值 已存在则忽略 set2.update([11,12]) # 一次添加多个 已存在则忽略 set2.discard(5) # 删除已有元素 如果不存在则忽略 不报错（remove会报错） if 4 int set2: set2.remove(4) print(set3.pop())# 随机删一个 print(set3) 集合运算 1 2 3 4 5 6 7 8 9 10 11 12 13 # 集合交并差 对称差 print(set1 &amp; set2)# print(set1.intersection(set2)) 交集 同时存在的元素 print(set1 | set2)# print(set1.union(set2)) 并集 print(set1 - set2)# print(set1.difference(set2)) 差集 属于set1但不属于set2的元素 print(set1 ^ set2)# print(set1.symmetric_difference(set2)) 属于set1或set2，但不同时属于set1或set2的元素（排除交集的并集) # 判断子集或者超集 # 如果是，则运算返回一个True/1的bool 否则返回一个False/0 print(set2 &lt;= set1) # print(set2.issubset(set1)) set2是否为set1的子集 print(set2 &gt;= set1) # print(set2.issuperset(set2)) set2是否为set1的超集 print(set2 &lt; set1) # set2是否为set1的真子集 print(set2 &gt; set1) # set2是否为set1的真超集 字典（dict） dict的每个元素都是由一个键和一个值组成的键值对，键与值通过冒号分开 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 # 创建字典字面量 scores = {'张三': 95, '李四': 85, '王五': 35} #创建字典的构造器语法 items1 = dict(one=1, two=2, three=3, four=4) #{'one': 1, 'two': 2, 'three': 3, 'four': 4} # zip函数将两个序列压成字典 item1 = dict(zip(['a', 'b', 'c'], '123')) #{'a': '1', 'b': '2', 'c': '3'} #推导式语法 items3 = {num: num ** 2 for num in range(1, 10)} #对应平方 print(scores['张三']) # 95 print(scores['李四']) # 85 # 遍历键值 for key in scores: print(f'{key}:{scores[key]}') ''' 张三:95 李四:85 王五:35 ''' #更新元素 scores['张三'] = 88 #修改已有项 scores['ykn'] = 66 #添加新的键值对 scores.update(nina = 27, mmk = 0) #添加多个键值对 print(scores) # {'张三': 88, '李四': 85, '王五': 35, 'ykn': 66, 'nina': 27, 'mmk': 0} # get方法 获取值 但可以设置默认值（即不存在对应键值对则返回设定的默认值） print(scores.get('drum'. 486)) print(scores.pop('anon',250) #删除对应键值对并返回对应值，若不存在则返回设定的默认值。若未提供默认值抛出KeyError print(scores.popitem()) # 随机删除并返回一个键值对 Python 3.7+中此函数默认删除最后插入的键值对 函数 通过函数名封装并调用一段实现功能的完整代码 内置函数 print() input()之类 包含于库中 自定义函数 1 2 3 def func_name (parameter1, parameter2): #定义函数名和参数 ... #此处为具体代码段 return s # 返回值(可选) 调用时使用func_name(para1, para2)，需要匹配传入参数 类（Class) 类是面向对象特性的重要元素。我们学的C语言很显然没有类的概念，现在在python中我们会通过Class来理解面向对象特性]]></summary></entry><entry><title type="html">404</title><link href="http://di404.uk.eu.org/404" rel="alternate" type="text/html" title="404" /><published>2017-09-01T00:00:00+08:00</published><updated>2017-09-01T00:00:00+08:00</updated><id>http://di404.uk.eu.org/404</id><content type="html" xml:base="http://di404.uk.eu.org/404"><![CDATA[]]></content><author><name></name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">归档</title><link href="http://di404.uk.eu.org/archive/" rel="alternate" type="text/html" title="归档" /><published>2017-09-01T00:00:00+08:00</published><updated>2017-09-01T00:00:00+08:00</updated><id>http://di404.uk.eu.org/archive</id><content type="html" xml:base="http://di404.uk.eu.org/archive/"><![CDATA[<p>已写下文字 6 篇，长路漫漫！</p>

<pre><code class="language-vega-lite">{
  "data": { "url": "/assets/simple-jekyll-search/search.json" },
  "encoding": {
    "y": {"field": "date", "timeUnit": "month", "type": "ordinal"},
    "x": {"field": "date", "timeUnit": "year"},
    "color": {"field": "date", "aggregate": "count"}
  },
  "mark": "rect"
}
</code></pre>

<h2 id="jun-2025">Jun 2025</h2>

<ul>
  <li><a href="/2025/06/30/baba/">Baba</a></li>
  <li><a href="/2025/06/23/Python%E8%AF%AD%E6%B3%95%E5%85%A5%E9%97%A8/">Python语法入门</a></li>
</ul>

<h2 id="sep-2017">Sep 2017</h2>

<ul>
  <li><a href="/tags/">标签</a></li>
  <li><a href="/comments/">留言</a></li>
  <li><a href="/archive/">归档</a></li>
  <li><a href="/404">404</a></li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[已写下文字 6 篇，长路漫漫！]]></summary></entry><entry><title type="html">留言</title><link href="http://di404.uk.eu.org/comments/" rel="alternate" type="text/html" title="留言" /><published>2017-09-01T00:00:00+08:00</published><updated>2017-09-01T00:00:00+08:00</updated><id>http://di404.uk.eu.org/comments</id><content type="html" xml:base="http://di404.uk.eu.org/comments/"><![CDATA[<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="//music.163.com/outchain/player?type=2&amp;id=441116602&amp;auto=1&amp;height=66"></iframe>

<p>交换友链可以在评论区留言~</p>]]></content><author><name></name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">标签</title><link href="http://di404.uk.eu.org/tags/" rel="alternate" type="text/html" title="标签" /><published>2017-09-01T00:00:00+08:00</published><updated>2017-09-01T00:00:00+08:00</updated><id>http://di404.uk.eu.org/tags</id><content type="html" xml:base="http://di404.uk.eu.org/tags/"><![CDATA[<p>文章标签较多，可在侧边栏的目录中快速定位~</p>

<pre><code class="language-vega-lite">

{
  "data": { "values": [

  {"tags": "编程学习", "count": 1 }

] },
  "encoding": {
    "theta": {"field": "count", "type": "quantitative", "stack": true},
    "radius": {"field": "count", "scale": {"type": "sqrt", "zero": true, "rangeMin": 20}},
    "color": {"field": "tags", "type": "nominal"},
    "text": {"field": "count", "type": "quantitative"}
  },
  "layer": [{
    "mark": {"type": "arc", "innerRadius": 20, "stroke": "White"}
  },{
    "mark": {"type": "text", "radiusOffset": 10}
  }]
}
</code></pre>

<h2 id="编程学习">编程学习</h2>

<ul>
  <li><a href="/2025/06/23/Python%E8%AF%AD%E6%B3%95%E5%85%A5%E9%97%A8/">Python语法入门</a></li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[文章标签较多，可在侧边栏的目录中快速定位~]]></summary></entry></feed>