<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>C1everBoY</title>
  
  <subtitle>C1everBoY&#39;s Zoom</subtitle>
  <link href="http://c1everboy.github.io/atom.xml" rel="self"/>
  
  <link href="http://c1everboy.github.io/"/>
  <updated>2025-04-21T06:09:53.823Z</updated>
  <id>http://c1everboy.github.io/</id>
  
  <author>
    <name>C1everBoY</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>python3语法</title>
    <link href="http://c1everboy.github.io/2025/04/09/python/"/>
    <id>http://c1everboy.github.io/2025/04/09/python/</id>
    <published>2025-04-09T01:25:00.000Z</published>
    <updated>2025-04-21T06:09:53.823Z</updated>
    
    <content type="html"><![CDATA[<p><strong>fooooooooreword</strong>：This is my **very first **post. After having my own blog, I am not willing to delete this article, just keep it as a memorial.</p><h2 id="00-前言"><a href="#00-前言" class="headerlink" title="00.前言"></a>00.前言</h2><p>我连python都傻傻不懂，真是太弱小了，没有力量~</p><p>本篇主要是关于python3的语法。</p><h2 id="01-python的标识符规则"><a href="#01-python的标识符规则" class="headerlink" title="01.python的标识符规则"></a>01.python的标识符规则</h2><p>命名数字字母下划线，不以数字开头；</p><p>大小写敏感；</p><p>缩进严格；</p><p>变量名不能是关键字：</p><p>[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]</p><h2 id="02-python的数据类型"><a href="#02-python的数据类型" class="headerlink" title="02.python的数据类型"></a>02.python的数据类型</h2><h3 id="1-数字有四种类型：整数、布尔型、浮点数和复数。"><a href="#1-数字有四种类型：整数、布尔型、浮点数和复数。" class="headerlink" title="1.数字有四种类型：整数、布尔型、浮点数和复数。"></a>1.数字有四种类型：整数、布尔型、浮点数和复数。</h3><ul><li><strong>int</strong> (整数), 如 1, 只有一种整数类型 int，表示为长整型，没有 python2 中的 Long。</li><li><strong>bool</strong> (布尔), 如 True。</li><li><strong>float</strong> (浮点数), 如 1.23、3E-2</li><li><strong>complex</strong> (复数) - 复数由实部和虚部组成，形式为 a + bj，其中 a 是实部，b 是虚部，j 表示虚数单位。如 1 + 2j、 1.1 + 2.2j</li></ul><h4 id="Python-Number-类型转换"><a href="#Python-Number-类型转换" class="headerlink" title="Python Number 类型转换"></a>Python Number 类型转换</h4><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="built_in">int</span>(x [,base ])         将x转换为一个整数  </span><br><span class="line">long(x [,base ])        将x转换为一个长整数  </span><br><span class="line"><span class="built_in">float</span>(x )               将x转换到一个浮点数  </span><br><span class="line"><span class="built_in">complex</span>(real [,imag ])  创建一个复数  </span><br><span class="line"><span class="built_in">str</span>(x )                 将对象 x 转换为字符串  </span><br><span class="line"><span class="built_in">repr</span>(x )                将对象 x 转换为表达式字符串  </span><br><span class="line"><span class="built_in">eval</span>(<span class="built_in">str</span> )              用来计算在字符串中的有效Python表达式,并返回一个对象  </span><br><span class="line"><span class="built_in">tuple</span>(s )               将序列 s 转换为一个元组  </span><br><span class="line"><span class="built_in">list</span>(s )                将序列 s 转换为一个列表  </span><br><span class="line"><span class="built_in">chr</span>(x )                 将一个整数转换为一个字符  </span><br><span class="line">unichr(x )              将一个整数转换为Unicode字符  </span><br><span class="line"><span class="built_in">ord</span>(x )                 将一个字符转换为它的整数值  </span><br><span class="line"><span class="built_in">hex</span>(x )                 将一个整数转换为一个十六进制字符串  </span><br><span class="line"><span class="built_in">oct</span>(x )                 将一个整数转换为一个八进制字符串</span><br></pre></td></tr></table></figure><h4 id="Python数学函数"><a href="#Python数学函数" class="headerlink" title="Python数学函数"></a>Python数学函数</h4><table><thead><tr><th align="left">函数</th><th align="left">返回值 ( 描述 )</th></tr></thead><tbody><tr><td align="left">abs(x)</td><td align="left">返回数字的绝对值，如abs(-10) 返回 10</td></tr><tr><td align="left">ceil(x)</td><td align="left">返回数字的上入整数，如math.ceil(4.1) 返回 5</td></tr><tr><td align="left">cmp(x, y)</td><td align="left">如果 x &lt; y 返回 -1, 如果 x &#x3D;&#x3D; y 返回 0, 如果 x &gt; y 返回 1</td></tr><tr><td align="left">exp(x)</td><td align="left">返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045</td></tr><tr><td align="left">fabs(x)</td><td align="left">以浮点数形式返回数字的绝对值，如math.fabs(-10) 返回10.0</td></tr><tr><td align="left">floor(x)</td><td align="left">返回数字的下舍整数，如math.floor(4.9)返回 4</td></tr><tr><td align="left">log(x)</td><td align="left">如math.log(math.e)返回1.0,math.log(100,10)返回2.0</td></tr><tr><td align="left">log10(x)</td><td align="left">返回以10为基数的x的对数，如math.log10(100)返回 2.0</td></tr><tr><td align="left">max(x1, x2,…)</td><td align="left">返回给定参数的最大值，参数可以为序列。</td></tr><tr><td align="left">min(x1, x2,…)</td><td align="left">返回给定参数的最小值，参数可以为序列。</td></tr><tr><td align="left">modf(x)</td><td align="left">返回x的整数部分与小数部分，两部分的数值符号与x相同，整数部分以浮点型表示。</td></tr><tr><td align="left">pow(x, y)</td><td align="left">x**y 运算后的值。</td></tr><tr><td align="left">round(x [,n])</td><td align="left">返回浮点数x的四舍五入值，如给出n值，则代表舍入到小数点后的位数。</td></tr><tr><td align="left">sqrt(x)</td><td align="left">返回数字x的平方根</td></tr></tbody></table><h4 id="Python随机数函数"><a href="#Python随机数函数" class="headerlink" title="Python随机数函数"></a>Python随机数函数</h4><p>随机数可以用于数学，游戏，安全等领域中，还经常被嵌入到算法中，用以提高算法效率，并提高程序的安全性。</p><p>Python包含以下常用随机数函数：</p><table><thead><tr><th align="left">函数</th><th align="left">描述</th></tr></thead><tbody><tr><td align="left">choice(seq)</td><td align="left">从序列的元素中随机挑选一个元素，比如random.choice(range(10))，从0到9中随机挑选一个整数。</td></tr><tr><td align="left">randrange ([start,] stop [,step])</td><td align="left">从指定范围内，按指定基数递增的集合中获取一个随机数，基数默认值为 1</td></tr><tr><td align="left">random()</td><td align="left">随机生成下一个实数，它在[0,1)范围内。</td></tr><tr><td align="left">seed([x])</td><td align="left">改变随机数生成器的种子seed。如果你不了解其原理，你不必特别去设定seed，Python会帮你选择seed。</td></tr><tr><td align="left">shuffle(lst)</td><td align="left">将序列的所有元素随机排序</td></tr><tr><td align="left">uniform(x, y)</td><td align="left">随机生成下一个实数，它在[x,y]范围内。</td></tr></tbody></table><h3 id="2-字符串-String"><a href="#2-字符串-String" class="headerlink" title="2.字符串(String)"></a>2.字符串(String)</h3><ul><li><p>Python 中&#x3D;&#x3D;单引号 <strong>‘</strong> 和双引号 <strong>“</strong> 使用完全相同&#x3D;&#x3D;。</p></li><li><p>使用三引号(<strong>‘’’</strong> 或 <strong>“””</strong>)可以指定一个多行字符串。</p></li><li><p>&#x3D;&#x3D;反斜杠可以用来转义&#x3D;&#x3D;，使用 <strong>r</strong> 可以让反斜杠不发生转义。 如 <strong>r”this is a line with \n”</strong> 则 <strong>\n</strong> 会显示，并不是换行。</p></li><li><p>按字面意义级联字符串，如 <strong>“this “ “is “ “string”</strong> 会被自动转换为 <strong>this is string</strong>。</p></li><li><p>字符串可以用 <strong>+</strong> 运算符连接在一起，用 ***** 运算符重复。</p></li><li><p>Python 中的字符串有两种索引方式，从左往右以 <strong>0</strong> 开始，从右往左以 <strong>-1</strong> 开始。</p></li><li><p>Python 中的字符串不能改变。</p></li><li><p>Python 没有单独的字符类型，一个字符就是长度为 1 的字符串。</p></li><li><p>字符串切片 <strong>str[start:end]</strong>，其中 start（包含）是切片开始的索引，end（不包含）是切片结束的索引。（&#x3D;&#x3D;左闭右开！&#x3D;&#x3D;）</p></li><li><p>字符串的切片可以加上步长参数 step，语法格式如下：</p><p> <strong>str[start:end:step]</strong></p></li></ul><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="built_in">str</span>=<span class="string">&#x27;123456789&#x27;</span></span><br><span class="line"> </span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">str</span>)                 <span class="comment"># 输出字符串</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">str</span>[<span class="number">0</span>:-<span class="number">1</span>])           <span class="comment"># 输出第一个到倒数第二个的所有字符</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">str</span>[<span class="number">0</span>])              <span class="comment"># 输出字符串第一个字符</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">str</span>[<span class="number">2</span>:<span class="number">5</span>])            <span class="comment"># 输出从第三个开始到第六个的字符（不包含）</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">str</span>[<span class="number">2</span>:])             <span class="comment"># 输出从第三个开始后的所有字符</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">str</span>[<span class="number">1</span>:<span class="number">5</span>:<span class="number">2</span>])          <span class="comment"># 输出从第二个开始到第五个且每隔一个的字符（步长为2）</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">str</span> * <span class="number">2</span>)             <span class="comment"># 输出字符串两次</span></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">str</span> + <span class="string">&#x27;你好&#x27;</span>)         <span class="comment"># 连接字符串</span></span><br><span class="line"> </span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;------------------------------&#x27;</span>)</span><br><span class="line"> </span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;hello\nrunoob&#x27;</span>)      <span class="comment"># 使用反斜杠(\)+n转义特殊字符</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">r&#x27;hello\nrunoob&#x27;</span>)     <span class="comment"># 在字符串前面添加一个 r，表示原始字符串，不会发生转义</span></span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><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">123456789</span><br><span class="line">12345678</span><br><span class="line">1</span><br><span class="line">345</span><br><span class="line">3456789</span><br><span class="line">24</span><br><span class="line">123456789123456789</span><br><span class="line">123456789你好</span><br><span class="line">------------------------------</span><br><span class="line">hello</span><br><span class="line">runoob</span><br><span class="line">hello\nrunoob</span><br></pre></td></tr></table></figure><h2 id="03-python的切片操作"><a href="#03-python的切片操作" class="headerlink" title="03.python的切片操作"></a>03.python的切片操作</h2><p>在 Python 里，&#x3D;&#x3D;切片操作能够提取序列（像字符串、列表、元组等）中的一部分元素&#x3D;&#x3D;。切片的基本语法是 <code>[start:stop:step]</code>，其中 <code>start</code> 是起始索引，<code>stop</code> 是结束索引（不包含该索引对应的元素），<code>step</code> 是步长。&#x3D;&#x3D;这三个参数都可省略&#x3D;&#x3D;，下面详细介绍并举例说明：</p><h4 id="省略-start"><a href="#省略-start" class="headerlink" title="省略 start"></a>省略 <code>start</code></h4><p>若省略 <code>start</code>，切片会从序列的起始位置开始。</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><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">s = <span class="string">&quot;abcdef&quot;</span></span><br><span class="line"><span class="built_in">print</span>(s[:<span class="number">3</span>])  <span class="comment"># 输出: &quot;abc&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列表切片示例</span></span><br><span class="line">lst = [<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><br><span class="line"><span class="built_in">print</span>(lst[:<span class="number">2</span>])  <span class="comment"># 输出: [1, 2]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 元组切片示例</span></span><br><span class="line">tup = (<span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>, <span class="number">40</span>, <span class="number">50</span>)</span><br><span class="line"><span class="built_in">print</span>(tup[:<span class="number">4</span>])  <span class="comment"># 输出: (10, 20, 30, 40)</span></span><br></pre></td></tr></table></figure><h4 id="省略-stop"><a href="#省略-stop" class="headerlink" title="省略 stop"></a>省略 <code>stop</code></h4><p>若省略 <code>stop</code>，切片会一直取到序列的末尾。</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><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">s = <span class="string">&quot;abcdef&quot;</span></span><br><span class="line"><span class="built_in">print</span>(s[<span class="number">2</span>:])  <span class="comment"># 输出: &quot;cdef&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列表切片示例</span></span><br><span class="line">lst = [<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><br><span class="line"><span class="built_in">print</span>(lst[<span class="number">3</span>:])  <span class="comment"># 输出: [4, 5]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 元组切片示例</span></span><br><span class="line">tup = (<span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>, <span class="number">40</span>, <span class="number">50</span>)</span><br><span class="line"><span class="built_in">print</span>(tup[<span class="number">1</span>:])  <span class="comment"># 输出: (20, 30, 40, 50)</span></span><br></pre></td></tr></table></figure><h4 id="省略-step"><a href="#省略-step" class="headerlink" title="省略 step"></a>省略 <code>step</code></h4><p>若省略 <code>step</code>，默认步长为 1。</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><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">s = <span class="string">&quot;abcdef&quot;</span></span><br><span class="line"><span class="built_in">print</span>(s[<span class="number">1</span>:<span class="number">4</span>])  <span class="comment"># 输出: &quot;bcd&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列表切片示例</span></span><br><span class="line">lst = [<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><br><span class="line"><span class="built_in">print</span>(lst[<span class="number">0</span>:<span class="number">3</span>])  <span class="comment"># 输出: [1, 2, 3]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 元组切片示例</span></span><br><span class="line">tup = (<span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>, <span class="number">40</span>, <span class="number">50</span>)</span><br><span class="line"><span class="built_in">print</span>(tup[<span class="number">2</span>:<span class="number">5</span>])  <span class="comment"># 输出: (30, 40, 50)</span></span><br></pre></td></tr></table></figure><h4 id="同时省略多个参数"><a href="#同时省略多个参数" class="headerlink" title="同时省略多个参数"></a>同时省略多个参数</h4><ul><li><strong>省略 <code>start</code> 和 <code>stop</code></strong>：会获取整个序列，此时可指定步长。</li></ul><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">s = <span class="string">&quot;abcdef&quot;</span></span><br><span class="line"><span class="built_in">print</span>(s[::<span class="number">2</span>])  <span class="comment"># 输出: &quot;ace&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列表切片示例</span></span><br><span class="line">lst = [<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><br><span class="line"><span class="built_in">print</span>(lst[::<span class="number">3</span>])  <span class="comment"># 输出: [1, 4]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 元组切片示例</span></span><br><span class="line">tup = (<span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>, <span class="number">40</span>, <span class="number">50</span>)</span><br><span class="line"><span class="built_in">print</span>(tup[::<span class="number">2</span>])  <span class="comment"># 输出: (10, 30, 50)</span></span><br></pre></td></tr></table></figure><ul><li><strong>省略 <code>start</code>、<code>stop</code> 和 <code>step</code></strong>：会获取整个序列，步长默认为 1，相当于复制序列。</li></ul><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">s = <span class="string">&quot;abcdef&quot;</span></span><br><span class="line"><span class="built_in">print</span>(s[:])  <span class="comment"># 输出: &quot;abcdef&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列表切片示例</span></span><br><span class="line">lst = [<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><br><span class="line"><span class="built_in">print</span>(lst[:])  <span class="comment"># 输出: [1, 2, 3, 4, 5]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 元组切片示例</span></span><br><span class="line">tup = (<span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>, <span class="number">40</span>, <span class="number">50</span>)</span><br><span class="line"><span class="built_in">print</span>(tup[:])  <span class="comment"># 输出: (10, 20, 30, 40, 50)</span></span><br></pre></td></tr></table></figure><h4 id="使用负数作为参数"><a href="#使用负数作为参数" class="headerlink" title="使用负数作为参数"></a>使用负数作为参数</h4><p>切片操作中，还能使用负数作为 <code>start</code>、<code>stop</code> 和 <code>step</code> 参数。负数索引从序列末尾开始计数，<code>-1</code> 表示最后一个元素，<code>-2</code> 表示倒数第二个元素，依此类推。</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><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">s = <span class="string">&quot;abcdef&quot;</span></span><br><span class="line"><span class="built_in">print</span>(s[-<span class="number">3</span>:])  <span class="comment"># 输出: &quot;def&quot;</span></span><br><span class="line"><span class="built_in">print</span>(s[:-<span class="number">2</span>])  <span class="comment"># 输出: &quot;abcd&quot;</span></span><br><span class="line"><span class="built_in">print</span>(s[::-<span class="number">1</span>])  <span class="comment"># 输出: &quot;fedcba&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列表切片示例</span></span><br><span class="line">lst = [<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><br><span class="line"><span class="built_in">print</span>(lst[-<span class="number">2</span>:])  <span class="comment"># 输出: [4, 5]</span></span><br><span class="line"><span class="built_in">print</span>(lst[:-<span class="number">3</span>])  <span class="comment"># 输出: [1, 2]</span></span><br><span class="line"><span class="built_in">print</span>(lst[::-<span class="number">2</span>])  <span class="comment"># 输出: [5, 3, 1]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 元组切片示例</span></span><br><span class="line">tup = (<span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>, <span class="number">40</span>, <span class="number">50</span>)</span><br><span class="line"><span class="built_in">print</span>(tup[-<span class="number">3</span>:])  <span class="comment"># 输出: (30, 40, 50)</span></span><br><span class="line"><span class="built_in">print</span>(tup[:-<span class="number">1</span>])  <span class="comment"># 输出: (10, 20, 30, 40)</span></span><br><span class="line"><span class="built_in">print</span>(tup[::-<span class="number">1</span>])  <span class="comment"># 输出: (50, 40, 30, 20, 10)</span></span><br></pre></td></tr></table></figure><p><strong>切片操作中的 <code>start</code>、<code>stop</code> 和 <code>step</code> 参数都可省略</strong></p><h2 id="04-python的运算符"><a href="#04-python的运算符" class="headerlink" title="04.python的运算符"></a>04.python的运算符</h2><p>以下假设变量： <strong>a&#x3D;10，b&#x3D;20</strong>：</p><table><thead><tr><th align="left">运算符</th><th align="left"><strong>描述</strong></th><th align="left"><strong>实例</strong></th></tr></thead><tbody><tr><td align="left">&#x2F;</td><td align="left">除 - x除以y</td><td align="left">b &#x2F; a 输出结果 2</td></tr><tr><td align="left">%</td><td align="left">取模 - 返回除法的余数</td><td align="left">b % a 输出结果 0</td></tr><tr><td align="left">**</td><td align="left">幂 - 返回x的y次幂</td><td align="left">a**b 为10的20次方， 输出结果 100000000000000000000</td></tr><tr><td align="left">&#x2F;&#x2F;</td><td align="left">取整除 - 返回商的整数部分（<strong>向下取整</strong>）</td><td align="left"><code>&gt;&gt;&gt; 9//2 4 &gt;&gt;&gt; -9//2 -5</code></td></tr></tbody></table><p>比较运算符与c相同。</p><h2 id="05-python的判断，循环"><a href="#05-python的判断，循环" class="headerlink" title="05.python的判断，循环"></a>05.python的判断，循环</h2><h3 id="1-判断："><a href="#1-判断：" class="headerlink" title="1.判断："></a>1.判断：</h3><p>与c基本相同，注意没有大括号，取而代之是冒号。</p><h3 id="2-for循环："><a href="#2-for循环：" class="headerlink" title="2.for循环："></a>2.for循环：</h3><h5 id="（1）遍历可迭代对象"><a href="#（1）遍历可迭代对象" class="headerlink" title="（1）遍历可迭代对象"></a>（1）遍历可迭代对象</h5><p>基本格式：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> 变量 <span class="keyword">in</span> 可迭代对象:</span><br><span class="line">    代码语句</span><br></pre></td></tr></table></figure><p>如：</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></pre></td><td class="code"><pre><span class="line">fruits = [<span class="string">&quot;apple&quot;</span>, <span class="string">&quot;banana&quot;</span>, <span class="string">&quot;cherry&quot;</span>]</span><br><span class="line"><span class="keyword">for</span> fruit <span class="keyword">in</span> fruits:</span><br><span class="line">    <span class="built_in">print</span>(fruit)</span><br></pre></td></tr></table></figure><p><code>fruits</code>是一个列表，属于可迭代对象。<code>fruit</code>是循环变量，在每次循环时，<code>fruit</code>会依次被赋值为列表里的元素，然后执行循环体中的代码，也就是打印出当前元素。</p><h5 id="（2）使用range-函数"><a href="#（2）使用range-函数" class="headerlink" title="（2）使用range()函数"></a>（2）使用<code>range()</code>函数</h5><p>基本格式：</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> 变量 <span class="keyword">in</span> <span class="built_in">range</span>(起始值, 结束值, 步长):</span><br><span class="line">    <span class="comment"># 循环体，执行的代码块</span></span><br><span class="line">    代码语句</span><br></pre></td></tr></table></figure><p><code>起始值</code>是可选的，默认值为 0；&#x3D;&#x3D;<code>结束值</code>是必需的&#x3D;&#x3D;，循环会在达到该值之前停止；<code>步长</code>也是可选的，默认值为 1。<strong>也是左闭右开</strong></p><p>如：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">for i in range(0, 5, 1):</span><br><span class="line">    print(i)</span><br></pre></td></tr></table></figure><p>在这个示例中，<code>range(0, 5, 1)</code>会生成一个从 0 到 4 的整数序列，<code>i</code>是循环变量，每次循环时<code>i</code>会依次被赋值为序列中的元素，接着执行循环体中的代码，即打印出当前元素。</p><h3 id="3-while循环："><a href="#3-while循环：" class="headerlink" title="3.while循环："></a>3.while循环：</h3><h5 id="（1）遍历可迭代对象-1"><a href="#（1）遍历可迭代对象-1" class="headerlink" title="（1）遍历可迭代对象"></a>（1）遍历可迭代对象</h5><p>基本格式：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">while</span> 条件:</span><br><span class="line">    代码语句</span><br></pre></td></tr></table></figure><p>如：</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="keyword">while</span> i &lt;= <span class="number">5</span>:</span><br><span class="line">    sum_num += i</span><br><span class="line">    i += <span class="number">1</span></span><br><span class="line"><span class="built_in">print</span>(sum_num)</span><br></pre></td></tr></table></figure><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line">    <span class="built_in">print</span>(<span class="string">&quot;这是一个无限循环！&quot;</span>)</span><br></pre></td></tr></table></figure><h3 id="4-循环时并列使用-else-语句："><a href="#4-循环时并列使用-else-语句：" class="headerlink" title="4.循环时并列使用 else 语句："></a>4.循环时并列使用 else 语句：</h3><p><code>for</code> 和 <code>while</code> 循环都可以和 <code>else</code> 语句并列使用，这和正常写语句是有区别的。</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><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">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><br><span class="line"><span class="keyword">for</span> num <span class="keyword">in</span> numbers:</span><br><span class="line">    <span class="built_in">print</span>(num)</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;循环结束后执行此语句&quot;</span>)</span><br></pre></td></tr></table></figure><p>在这个例子中，不管 <code>for</code> 循环是正常遍历完列表结束，还是在遍历过程中使用 <code>break</code> 提前终止，<code>print(&quot;循环结束后执行此语句&quot;)</code> 都会执行。</p><h5 id="for-循环与-else-语句示例"><a href="#for-循环与-else-语句示例" class="headerlink" title="for 循环与 else 语句示例"></a><code>for</code> 循环与 <code>else</code> 语句示例</h5><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></pre></td><td class="code"><pre><span class="line">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><br><span class="line"><span class="keyword">for</span> num <span class="keyword">in</span> numbers:</span><br><span class="line">    <span class="keyword">if</span> num == <span class="number">3</span>:</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line">    <span class="built_in">print</span>(num)</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></pre></td></tr></table></figure><p>在这个例子中，当 <code>num</code> 等于 3 时，会执行 <code>break</code> 语句，提前终止循环。此时，<code>else</code> 语句块中的 <code>print(&quot;循环正常结束&quot;)</code> 不会执行。</p><p>如果将 <code>break</code> 语句去掉，循环会正常结束，<code>else</code> 语句块中的代码就会执行：</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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">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><br><span class="line"><span class="keyword">for</span> num <span class="keyword">in</span> numbers:</span><br><span class="line">    <span class="built_in">print</span>(num)</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></pre></td></tr></table></figure><p>即：<strong><code>else</code> 语句块中的代码在有break提前终止时不执行。</strong></p><h3 id="5-循环控制："><a href="#5-循环控制：" class="headerlink" title="5.循环控制："></a>5.循环控制：</h3><p>break：跳出整个循环。</p><p>continue：提前结束，进入下一个循环。</p><p>pass：就是回车占位。</p><p>跟c一样。</p><h2 id="06-python自定义函数"><a href="#06-python自定义函数" class="headerlink" title="06.python自定义函数"></a>06.python自定义函数</h2><h3 id="1-定义一般函数"><a href="#1-定义一般函数" class="headerlink" title="1.定义一般函数"></a>1.定义一般函数</h3><p>以下是简单的规则：（其实跟c一样，就是<strong>define</strong>改<strong>def</strong>，大括号改成 <code>:</code>）</p><ul><li><p>函数代码块以 <strong>def</strong> 关键词开头，后接函数标识符名称和圆括号**()**。</p></li><li><p>任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。</p></li><li><p>函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。</p></li><li><p>函数内容以冒号起始，并且缩进。</p></li><li><p><strong>return [表达式]</strong> 结束函数，选择性地返回一个值给调用方（通常会是一个字节串，如payload）。不带表达式的return相当于返回 None。</p><p>在<strong>ret2csu</strong>的时候蛮常用的。</p><p>newstar的MY_GBC!!!片段：</p></li></ul><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="keyword">def</span> <span class="title function_">csu1</span>(<span class="params">rbx, rbp, r12, r13, r14, r15</span>):</span><br><span class="line">    payload = p64(<span class="number">0x4013AA</span>)</span><br><span class="line">    payload += p64(rbx)</span><br><span class="line">    payload += p64(rbp)</span><br><span class="line">    payload += p64(r12)</span><br><span class="line">    payload += p64(r13)  <span class="comment"># rsi</span></span><br><span class="line">    payload += p64(r14)  <span class="comment"># rdx</span></span><br><span class="line">    payload += p64(r15)</span><br><span class="line">    <span class="keyword">return</span> payload</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">csu</span>(<span class="params">rbx, rbp, r12, r13, r14, r15</span>):</span><br><span class="line">    payload = csu1(rbx, rbp, r12, r13, r14, r15)</span><br><span class="line">    payload += p64(<span class="number">0x401390</span>)</span><br><span class="line">    <span class="keyword">return</span> payload</span><br></pre></td></tr></table></figure><h3 id="2-定义匿名函数"><a href="#2-定义匿名函数" class="headerlink" title="2.定义匿名函数"></a>2.定义匿名函数</h3><p>python 使用 <strong>lambda</strong>  来创建匿名函数。格式：自定义函数名&#x3D;lambda 参数 : 表达式。</p><ul><li>lambda只是一个<strong>表达式</strong>，而不是一个代码块，函数体比def简单很多。仅仅能在lambda表达式中封装有限的逻辑进去。</li><li>lambda函数拥有自己的命名空间，且&#x3D;&#x3D;不能访问自有参数列表之外或全局命名空间里的参数&#x3D;&#x3D;。</li><li>lambda函数只能写一行，为了调用小函数时不占用栈内存从而增加运行效率。</li></ul><p>在写<strong>exp</strong>前可以提前定义如recv等常用函数。</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><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">sla = <span class="keyword">lambda</span> delim, data: p.sendlineafter(delim, data)</span><br><span class="line"></span><br><span class="line">sa = <span class="keyword">lambda</span> delim, data: p.sendafter(delim, data)</span><br><span class="line"></span><br><span class="line">s = <span class="keyword">lambda</span> data: p.send(data)</span><br><span class="line"></span><br><span class="line">sl = <span class="keyword">lambda</span> data: p.sendline(data)</span><br><span class="line"></span><br><span class="line">ru = <span class="keyword">lambda</span> delim, **kwargs: p.recvuntil(delim, **kwargs)</span><br><span class="line"></span><br><span class="line">io = <span class="keyword">lambda</span>: p.interactive()</span><br><span class="line"></span><br><span class="line">log = <span class="keyword">lambda</span> name, data: success(<span class="string">f&#x27;<span class="subst">&#123;name&#125;</span>: <span class="subst">&#123;data:#x&#125;</span>&#x27;</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="99-python杂项"><a href="#99-python杂项" class="headerlink" title="99.python杂项"></a>99.python杂项</h2><h3 id="print-输出"><a href="#print-输出" class="headerlink" title="print 输出"></a>print 输出</h3><p><strong>print</strong> 默认输出是换行的，如果要实现不换行需要在变量末尾加上 <strong>end&#x3D;” ”</strong>：</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><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">#!/usr/bin/python3   &lt;==============这玩意是用来指定执行该脚本的解释器路径的</span></span><br><span class="line"> </span><br><span class="line">x=<span class="string">&quot;a&quot;</span></span><br><span class="line">y=<span class="string">&quot;b&quot;</span></span><br><span class="line"><span class="comment"># 换行输出</span></span><br><span class="line"><span class="built_in">print</span>( x )</span><br><span class="line"><span class="built_in">print</span>( y )</span><br><span class="line"> </span><br><span class="line"><span class="built_in">print</span>(<span class="string">&#x27;---------&#x27;</span>)</span><br><span class="line"><span class="comment"># 不换行输出</span></span><br><span class="line"><span class="built_in">print</span>( x, end=<span class="string">&quot; &quot;</span> )</span><br><span class="line"><span class="built_in">print</span>( y, end=<span class="string">&quot; &quot;</span> )</span><br><span class="line"><span class="built_in">print</span>()</span><br></pre></td></tr></table></figure><p>以上实例执行结果为：</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">a</span><br><span class="line">b</span><br><span class="line">---------</span><br><span class="line">a b</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;strong&gt;fooooooooreword&lt;/strong&gt;：This is my **very first **post. After having my own blog, I am not willing to delete this article, just </summary>
      
    
    
    
    <category term="知识点" scheme="http://c1everboy.github.io/categories/%E7%9F%A5%E8%AF%86%E7%82%B9/"/>
    
    
    <category term="python" scheme="http://c1everboy.github.io/tags/python/"/>
    
  </entry>
  
</feed>
