atom.xml 599.9 KB
Newer Older
T
TRHX 已提交
1 2
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
T
TRHX 已提交
3
  <title>TRHX&#39;S BLOG</title>
T
TRHX 已提交
4
  
T
TRHX 已提交
5
  <subtitle>求知若饥 虚心若愚</subtitle>
T
TRHX 已提交
6 7
  <link href="/atom.xml" rel="self"/>
  
T
TRHX 已提交
8
  <link href="https://itrhx.com/"/>
T
TRHX 已提交
9
  <updated>2019-04-14T17:18:43.345Z</updated>
T
TRHX 已提交
10
  <id>https://itrhx.com/</id>
T
TRHX 已提交
11 12
  
  <author>
T
TRHX 已提交
13
    <name>TRHX&#39;BLOG</name>
T
TRHX 已提交
14 15 16 17 18
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
T
TRHX 已提交
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
  <entry>
    <title>Python PEP8 代码规范常见问题及解决方法</title>
    <link href="https://itrhx.com/2019/04/15/A21-PEP8/"/>
    <id>https://itrhx.com/2019/04/15/A21-PEP8/</id>
    <published>2019-04-14T17:15:48.171Z</published>
    <updated>2019-04-14T17:18:43.345Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><hr><p>之前一直用 Python  IDLE 写代码,最近换成 PyCharm 写代码总是会出现波浪号,这才了解到 Python 的 PEP8 代码规范,所以将常见的 PEP8 代码规范问题和解决方法记录一下,学习一下,遇到了再持续更新,<font color="#FF0000">养成良好的习惯,编写规范的代码!</font></p><a id="more"></a><hr><ul><li><p><font color="#FF0000">PEP 8: no newline at end of file</font><br>解决方法:代码末尾需要另起一行,光标移到最后回车即可</p></li><li><p><font color="#FF0000">PEP 8: indentation is not a multiple of four</font><br>解决方法:缩进不是4的倍数,检查缩进</p></li><li><p><font color="#FF0000">PEP 8: over-indented</font><br>解决方法:过度缩进,检查缩进</p></li><li><p><font color="#FF0000">PEP 8: missing whitespace after’,’</font><br>解决方法:逗号后面少了空格,添加空格即可,类似还有分号或者冒号后面少了空格</p></li><li><p><font color="#FF0000">PEP 8: multiple imports on one line</font><br>解决方法:不要在一句 import 中引用多个库,举例:<code>import socket, urllib.error</code>最好写成:<code>import socket</code>   <code>import urllib.error</code></p></li><li><p><font color="#FF0000">PEP 8: blank line at end of line</font><br>解决方法:代码末尾行多了空格,删除空格即可</p></li><li><p><font color="#FF0000">PEP 8: at least two spaces before inline comment</font><br>解决方法:代码与注释之间至少要有两个空格</p></li><li><p><font color="#FF0000">PEP 8: block comment should start with ‘#’</font><br>解决方法:注释要以#加一个空格开始</p></li><li><p><font color="#FF0000">PEP 8: inline comment should start with ‘#’</font><br>解决方法:注释要以#加一个空格开始</p></li><li><p><font color="#FF0000">PEP 8: module level import not at top of file</font><br>解决方法:import不在文件的最上面,可能之前还有其它代码</p></li><li><p><font color="#FF0000">PEP 8: expected 2 blank lines,found 0</font><br>解决方法:需要两条空白行,添加两个空白行即可</p></li><li><p><font color="#FF0000">PEP 8: function name should be lowercase</font><br>解决方法:函数名改成小写即可</p></li><li><p><font color="#FF0000">PEP 8: missing whitespace around operator</font><br>解决方法:操作符(’=’、’&gt;’、’&lt;’等)前后缺少空格,加上即可</p></li><li><p><font color="#FF0000">PEP 8: unexpected spaces around keyword / parameter equals</font><br>解决方法:关键字/参数等号周围出现意外空格,去掉空格即可</p></li><li><p><font color="#FF0000">PEP 8: multiple statements on one line (colon)</font><br>解决方法:多行语句写到一行了,比如:<code>if x == 2: print(&#39;OK&#39;)</code>要分成两行写</p></li><li><p><font color="#FF0000">PEP 8: line too long (82 &gt; 79 characters)</font><br>解决方法:超过了每行的最大长度限制79</p></li></ul><hr><p>如果想要选择性忽略PEP8代码风格的警告信息可以使用以下方法:(养成良好的习惯,编写规范的代码!不推荐忽略!)</p><p>①将鼠标移到出现警告信息的地方,按 <font color="#FF0000">alt+Enter</font>,选择忽略(Ignore)这个错误即可:<br><img src="https://i.loli.net/2019/04/15/5cb36b4fe3237.png" alt="01"><br>②依次选择 <font color="#FF0000">File - Settings - Editor - Inspections</font>,在 Python下找到 <font color="#FF0000">PEP8 coding style violation</font> 选项,在右下角的 <font color="#FF0000">Ignore errors </font>里点击加号可以添加需要忽略的警告信息ID(ID信息见后面附录),例如想要忽略<code>indentation contains mixed spaces and tabs</code>这个警告,只需要添加其ID:<font color="#FF0000">E101</font> 即可<br><img src="https://i.loli.net/2019/04/15/5cb36b53cc09a.png" alt="02"><br>附录:全部警告信息以及对应的ID,官方地址:<a href="https://pep8.readthedocs.io/en/latest/intro.html#error-codes" target="_blank" rel="noopener">https://pep8.readthedocs.io/en/latest/intro.html#error-codes</a></p><table><thead><tr><th style="text-align:center">code</th><th style="text-align:center">sample message</th></tr></thead><tbody><tr><td style="text-align:center"><font color="#FF0000">E1</font></td><td style="text-align:center"><font color="#FF0000">Indentation</font></td></tr><tr><td style="text-align:center">E101</td><td style="text-align:center">indentation contains mixed spaces and tabs</td></tr><tr><td style="text-align:center">E111</td><td style="text-align:center">indentation is not a multiple of four</td></tr><tr><td style="text-align:center">E112</td><td style="text-align:center">expected an indented block</td></tr><tr><td style="text-align:center">E113</td><td style="text-align:center">unexpected indentation</td></tr><tr><td style="text-align:center">E114</td><td style="text-align:center">indentation is not a multiple of four (comment)</td></tr><tr><td style="text-align:center">E115</td><td style="text-align:center">expected an indented block (comment)</td></tr><tr><td style="text-align:center">E116</td><td style="text-align:center">unexpected indentation (comment)</td></tr><tr><td style="text-align:center">E117</td><td style="text-align:center">over-indented</td></tr><tr><td style="text-align:center">E121 (*^)</td><td style="text-align:center">continuation line under-indented for hanging indent</td></tr><tr><td style="text-align:center">E122 (^)</td><td style="text-align:center">continuation line missing indentation or outdented</td></tr><tr><td style="text-align:center">E123 (*)</td><td style="text-align:center">closing bracket does not match indentation of opening bracket’s line</td></tr><tr><td style="text-align:center">E124 (^)</td><td style="text-align:center">closing bracket does not match visual indentation</td></tr><tr><td style="text-align:center">E125 (^)</td><td style="text-align:center">continuation line with same indent as next logical line</td></tr><tr><td style="text-align:center">E126 (*^)</td><td style="text-align:center">continuation line over-indented for hanging indent</td></tr><tr><td style="text-align:center">E127 (^)</td><td style="text-align:center">continuation line over-indented for visual indent</td></tr><tr><td style="text-align:center">E128 (^)</td><td style="text-align:center">continuation line under-indented for visual indent</td></tr><tr><td style="text-align:center">E129 (^)</td><td style="text-align:center">visually indented line with same indent as next logical line</td></tr><tr><td style="text-align:center">E131 (^)</td><td style="text-align:center">continuation line unaligned for hanging indent</td></tr><tr><td style="text-align:center">E133 (*)</td><td style="text-align:center">closing bracket is missing indentation</td></tr><tr><td style="text-align:center"><font color="#FF0000">E2</font></td><td style="text-align:center"><font color="#FF0000">Whitespace</font></td></tr><tr><td style="text-align:center">E201</td><td style="text-align:center">whitespace after ‘(‘</td></tr><tr><td style="text-align:center">E202</td><td style="text-align:center">whitespace before ‘)’</td></tr><tr><td style="text-align:center">E203</td><td style="text-align:center">whitespace before ‘:’</td></tr><tr><td style="text-align:center">E211</td><td style="text-align:center">whitespace before ‘(‘</td></tr><tr><td style="text-align:center">E221</td><td style="text-align:center">multiple spaces before operator</td></tr><tr><td style="text-align:center">E222</td><td style="text-align:center">multiple spaces after operator</td></tr><tr><td style="text-align:center">E223</td><td style="text-align:center">tab before operator</td></tr><tr><td style="text-align:center">E224</td><td style="text-align:center">tab after operator</td></tr><tr><td style="text-align:center">E225</td><td style="text-align:center">missing whitespace around operator</td></tr><tr><td style="text-align:center">E226 (*)</td><td style="text-align:center">missing whitespace around arithmetic operator</td></tr><tr><td style="text-align:center">E227</td><td style="text-align:center">missing whitespace around bitwise or shift operator</td></tr><tr><td style="text-align:center">E228</td><td style="text-align:center">missing whitespace around modulo operator</td></tr><tr><td style="text-align:center">E231</td><td style="text-align:center">missing whitespace after ‘,’, ‘;’, or ‘:’</td></tr><tr><td style="text-align:center">E241 (*)</td><td style="text-align:center">multiple spaces after ‘,’</td></tr><tr><td style="text-align:center">E242 (*)</td><td style="text-align:center">tab after ‘,’</td></tr><tr><td style="text-align:center">E251</td><td style="text-align:center">unexpected spaces around keyword / parameter equals</td></tr><tr><td style="text-align:center">E261</td><td style="text-align:center">at least two spaces before inline comment</td></tr><tr><td style="text-align:center">E262</td><td style="text-align:center">inline comment should start with ‘# ‘</td></tr><tr><td style="text-align:center">E265</td><td style="text-align:center">block comment should start with ‘# ‘</td></tr><tr><td style="text-align:center">E266</td><td style="text-align:center">too many leading ‘#’ for block comment</td></tr><tr><td style="text-align:center">E271</td><td style="text-align:center">multiple spaces after keyword</td></tr><tr><td style="text-align:center">E272</td><td style="text-align:center">multiple spaces before keyword</td></tr><tr><td style="text-align:center">E273</td><td style="text-align:center">tab after keyword</td></tr><tr><td style="text-align:center">E274</td><td style="text-align:center">tab before keyword</td></tr><tr><td style="text-align:center">E275</td><td style="text-align:center">missing whitespace after keyword</td></tr><tr><td style="text-align:center"><font color="#FF0000">E3</font></td><td style="text-align:center"><font color="#FF0000">Blank line</font></td></tr><tr><td style="text-align:center">E301</td><td style="text-align:center">expected 1 blank line, found 0</td></tr><tr><td style="text-align:center">E302</td><td style="text-align:center">expected 2 blank lines, found 0</td></tr><tr><td style="text-align:center">E303</td><td style="text-align:center">too many blank lines (3)</td></tr><tr><td style="text-align:center">E304</td><td style="text-align:center">blank lines found after function decorator</td></tr><tr><td style="text-align:center">E305</td><td style="text-align:center">expected 2 blank lines after end of function or class</td></tr><tr><td style="text-align:center">E306</td><td style="text-align:center">expected 1 blank line before a nested definition</td></tr><tr><td style="text-align:center"><font color="#FF0000">E4</font></td><td style="text-align:center"><font color="#FF0000">Import</font></td></tr><tr><td style="text-align:center">E401</td><td style="text-align:center">multiple imports on one line</td></tr><tr><td style="text-align:center">E402</td><td style="text-align:center">module level import not at top of file</td></tr><tr><td style="text-align:center"><font color="#FF0000">E5</font></td><td style="text-align:center"><font color="#FF0000">Line length</font></td></tr><tr><td style="text-align:center">E501 (^)</td><td style="text-align:center">line too long (82 &gt; 79 characters)</td></tr><tr><td style="text-align:center">E502</td><td style="text-align:center">the backslash is redundant between brackets</td></tr><tr><td style="text-align:center"><font color="#FF0000">E7</font></td><td style="text-align:center"><font color="#FF0000">Statement</font></td></tr><tr><td style="text-align:center">E701</td><td style="text-align:center">multiple statements on one line (colon)</td></tr><tr><td style="text-align:center">E702</td><td style="text-align:center">multiple statements on one line (semicolon)</td></tr><tr><td style="text-align:center">E703</td><td style="text-align:center">statement ends with a semicolon</td></tr><tr><td style="text-align:center">E704 (*)</td><td style="text-align:center">multiple statements on one line (def)</td></tr><tr><td style="text-align:center">E711 (^)</td><td style="text-align:center">comparison to None should be ‘if cond is None:’</td></tr><tr><td style="text-align:center">E712 (^)</td><td style="text-align:center">comparison to True should be ‘if cond is True:’ or ‘if cond:’</td></tr><tr><td style="text-align:center">E713</td><td style="text-align:center">test for membership should be ‘not in’</td></tr><tr><td style="text-align:center">E714</td><td style="text-align:center">test for object identity should be ‘is not’</td></tr><tr><td style="text-align:center">E721 (^)</td><td style="text-align:center">do not compare types, use ‘isinstance()’</td></tr><tr><td style="text-align:center">E722</td><td style="text-align:center">do not use bare except, specify exception instead</td></tr><tr><td style="text-align:center">E731</td><td style="text-align:center">do not assign a lambda expression, use a def</td></tr><tr><td style="text-align:center">E741</td><td style="text-align:center">do not use variables named ‘l’, ‘O’, or ‘I’</td></tr><tr><td style="text-align:center">E742</td><td style="text-align:center">do not define classes named ‘l’, ‘O’, or ‘I’</td></tr><tr><td style="text-align:center">E743</td><td style="text-align:center">do not define functions named ‘l’, ‘O’, or ‘I’</td></tr><tr><td style="text-align:center"><font color="#FF0000">E9</font></td><td style="text-align:center"><font color="#FF0000">Runtime</font></td></tr><tr><td style="text-align:center">E901</td><td style="text-align:center">SyntaxError or IndentationError</td></tr><tr><td style="text-align:center">E902</td><td style="text-align:center">IOError</td></tr><tr><td style="text-align:center"><font color="#FF0000">W1</font></td><td style="text-align:center"><font color="#FF0000">Indentation warning</font></td></tr><tr><td style="text-align:center">W191</td><td style="text-align:center">indentation contains tabs</td></tr><tr><td style="text-align:center"><font color="#FF0000">W2</font></td><td style="text-align:center"><font color="#FF0000">Whitespace warning</font></td></tr><tr><td style="text-align:center">W291</td><td style="text-align:center">trailing whitespace</td></tr><tr><td style="text-align:center">W292</td><td style="text-align:center">no newline at end of file</td></tr><tr><td style="text-align:center">W293</td><td style="text-align:center">blank line contains whitespace</td></tr><tr><td style="text-align:center"><font color="#FF0000">W3</font></td><td style="text-align:center"><font color="#FF0000">Blank line warning</font></td></tr><tr><td style="text-align:center">W391</td><td style="text-align:center">blank line at end of file</td></tr><tr><td style="text-align:center"><font color="#FF0000">W5</font></td><td style="text-align:center"><font color="#FF0000">Line break warning</font></td></tr><tr><td style="text-align:center">W503 (*)</td><td style="text-align:center">line break before binary operator</td></tr><tr><td style="text-align:center">W504 (*)</td><td style="text-align:center">line break after binary operator</td></tr><tr><td style="text-align:center">W505 (*^)</td><td style="text-align:center">doc line too long (82 &gt; 79 characters)</td></tr><tr><td style="text-align:center"><font color="#FF0000">W6</font></td><td style="text-align:center"><font color="#FF0000">Deprecation warning</font></td></tr><tr><td style="text-align:center">W601</td><td style="text-align:center">.has_key() is deprecated, use ‘in’</td></tr><tr><td style="text-align:center">W602</td><td style="text-align:center">deprecated form of raising exception</td></tr><tr><td style="text-align:center">W603</td><td style="text-align:center">‘&lt;&gt;’ is deprecated, use ‘!=’</td></tr><tr><td style="text-align:center">W604</td><td style="text-align:center">backticks are deprecated, use ‘repr()’</td></tr><tr><td style="text-align:center">W605</td><td style="text-align:center">invalid escape sequence ‘x’</td></tr><tr><td style="text-align:center">W606</td><td style="text-align:center">‘async’ and ‘await’ are reserved keywords starting with Python 3.7</td></tr></tbody></table>]]></content>
    
    <summary type="html">
    
      &lt;hr&gt;
&lt;p&gt;之前一直用 Python  IDLE 写代码,最近换成 PyCharm 写代码总是会出现波浪号,这才了解到 Python 的 PEP8 代码规范,所以将常见的 PEP8 代码规范问题和解决方法记录一下,学习一下,遇到了再持续更新,&lt;font color=&quot;#FF0000&quot;&gt;养成良好的习惯,编写规范的代码!&lt;/font&gt;&lt;/p&gt;
    
    </summary>
    
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
    
    
      <category term="Python" scheme="https://itrhx.com/tags/Python/"/>
    
      <category term="PEP8" scheme="https://itrhx.com/tags/PEP8/"/>
    
  </entry>
  
T
TRHX 已提交
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
  <entry>
    <title>VMware Pro 15 安装 Deepin15.9 国产操作系统</title>
    <link href="https://itrhx.com/2019/04/14/A20-VMwarePro15-Installation-of-Deepin15.9-tutorial/"/>
    <id>https://itrhx.com/2019/04/14/A20-VMwarePro15-Installation-of-Deepin15.9-tutorial/</id>
    <published>2019-04-14T11:05:28.487Z</published>
    <updated>2019-04-14T11:17:36.410Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><p><a href="https://www.deepin.org/" target="_blank" rel="noopener">Deepin</a>是由武汉深之度科技有限公司开发的Linux发行版,个人认为其界面设计非常美观,而且作为国产操作系统,值得我们去体验和支持!</p><hr><h1 id="1-下载安装-VMware-Workstation-Pro-15"><a href="#1-下载安装-VMware-Workstation-Pro-15" class="headerlink" title="1.下载安装 VMware Workstation Pro 15"></a><font color="#FF0000">1.下载安装 VMware Workstation Pro 15</font></h1><p> 进入 <a href="https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html" target="_blank" rel="noopener">VMware 官网</a>或者在软件商店下载最新版VMware虚拟机并安装<br><img src="https://i.loli.net/2019/04/14/5cb314bfe515d.png" alt="001"></p><h1 id="2-下载-Deepin15-9-系统"><a href="#2-下载-Deepin15-9-系统" class="headerlink" title="2.下载 Deepin15.9 系统"></a><font color="#FF0000">2.下载 Deepin15.9 系统</font></h1><p>  进入 <a href="https://www.deepin.org/" target="_blank" rel="noopener">deepin 官网</a>,下载最新版 deepin 系统镜像<br><img src="https://i.loli.net/2019/04/14/5cb31521444c2.png" alt="002"></p><h1 id="3-在-VMware-中创建虚拟机"><a href="#3-在-VMware-中创建虚拟机" class="headerlink" title="3.在 VMware 中创建虚拟机"></a><font color="#FF0000">3.在 VMware 中创建虚拟机</font></h1><p>打开安装好的 VMware Workstation Pro 15,选择创建新的虚拟机<br><img src="https://i.loli.net/2019/04/14/5cb3154ae3127.png" alt="003"><br>在新建虚拟机向导中选择自定义(高级):<br><img src="https://i.loli.net/2019/04/14/5cb315615058d.png" alt="004"><br>默认直接下一步,直到出现下图,再选择稍后安装操作系统:<br><img src="https://i.loli.net/2019/04/14/5cb3157cd92ae.png" alt="005"><br>选择客户机操作系统为 Linux ,如果你电脑是32位就选择 Ubuntu 版本,64位就选择 Ubuntu 64 位版本:<br><img src="https://i.loli.net/2019/04/14/5cb3159e47ea6.png" alt="006"><br>更改虚拟机名称及存放位置:<br><img src="https://i.loli.net/2019/04/14/5cb315b5c8603.png" alt="007"><br>接下来为虚拟机指定处理器数量、分配内存(太大了可能会导致卡顿,太小了也不好,推荐内存大小即可)一直选择默认即可,选择磁盘时,选择创建新虚拟磁盘:<br><img src="https://i.loli.net/2019/04/14/5cb315d1633d3.png" alt="008"><br>选择将虚拟磁盘储存为单个文件:<br><img src="https://i.loli.net/2019/04/14/5cb315fc619f0.png" alt="009"><br>默认下一步:<br><img src="https://i.loli.net/2019/04/14/5cb3160f425ee.png" alt="010"><br>点击完成:<br><img src="https://i.loli.net/2019/04/14/5cb3161f8a951.png" alt="011"><br>此时我们就可以在虚拟机左侧“我的计算机”下面看到刚刚创建的虚拟机 Deepin,单击  Deepin,选择“编辑虚拟机设置”, 再选择“CD/DVD(SATA)”,选择“使用ISO映像文件”,点击“浏览”,找到先前我们下载好的 Deepin 15.9 镜像文件,点击“确定”<br><img src="https://i.loli.net/2019/04/14/5cb316373826a.png" alt="012"><br><img src="https://i.loli.net/2019/04/14/5cb3164bb07d8.png" alt="013"></p><h1 id="4-在虚拟机上安装-Deepin-系统"><a href="#4-在虚拟机上安装-Deepin-系统" class="headerlink" title="4.在虚拟机上安装 Deepin 系统"></a><font color="#FF0000">4.在虚拟机上安装 Deepin 系统</font></h1><p>单击 Deepin,选择“开启此虚拟机”<br><img src="https://i.loli.net/2019/04/14/5cb3166619cf7.png" alt="014"><br>接下来就是选择语言、创建用户、选择时区、指定磁盘等过程:<br><img src="https://i.loli.net/2019/04/14/5cb3167c3f12e.png" alt="015"><br><img src="https://i.loli.net/2019/04/14/5cb3169423b50.png" alt="016"><br><img src="https://i.loli.net/2019/04/14/5cb3169fc84d2.png" alt="017"><br><img src="https://i.loli.net/2019/04/14/5cb316b8a0216.png" alt="018"><br>安装完成后:<br><img src="https://i.loli.net/2019/04/14/5cb316ca3d5d9.png" alt="019"><br>可以看见界面还是相当美观的,系统也自带了深度的一些软件,比如深度录屏,深度录音,深度影院,深度计算器等等的一些小工具,作为国产操作系统,个人觉得已经非常优秀了,值得去体验!</p>]]></content>
    
    <summary type="html">
    
      VMware Pro 15 安装 Deepin 15.9 国产操作系统的详细教程
    
    </summary>
    
      <category term="实用教程" scheme="https://itrhx.com/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
      <category term="VMware" scheme="https://itrhx.com/tags/VMware/"/>
    
      <category term="Deepin" scheme="https://itrhx.com/tags/Deepin/"/>
    
  </entry>
  
T
TRHX 已提交
68 69 70 71 72 73 74
  <entry>
    <title>Windows 系统中 Pygame 的安装</title>
    <link href="https://itrhx.com/2019/04/01/A19-Windows-Installation-Pygame/"/>
    <id>https://itrhx.com/2019/04/01/A19-Windows-Installation-Pygame/</id>
    <published>2019-04-01T15:40:36.090Z</published>
    <updated>2019-04-01T15:55:32.523Z</updated>
    
T
TRHX 已提交
75
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><blockquote><p>Pygame是跨平台Python模块,专为电子游戏设计,可用于管理图形、动画乃至声音,建立在SDL基础上,允许实时电子游戏研发而无需被低级语言(如机器语言和汇编语言)束缚,通过使用Pygame来处理在屏幕上绘制图像等任务,你不用考虑众多繁琐而艰难的编码工作,而是将重点放在程序的高级逻辑上。</p></blockquote><p>你可以从以下三个地址查找与你运行的Python版本相匹配的Windows安装程序:</p><ul><li><p><a href="https://bitbucket.org/pygame/pygame/downloads/" target="_blank" rel="noopener">https://bitbucket.org/pygame/pygame/downloads/</a>  (Pygame项目托管在代码分享网站Bitbucket中)</p></li><li><p><a href="http://www.pygame.org/download.shtml" target="_blank" rel="noopener">http://www.pygame.org/download.shtml</a> (Pygame官网)</p></li><li><p><a href="https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame" target="_blank" rel="noopener">https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame</a> (如果以上两个地址找不到合适的安装程序,推荐去这个)</p></li></ul><p><img src="https://i.loli.net/2019/04/01/5ca2322eef34e.png" alt="pygame"></p><p>如果下载的是.exe文件,直接运行它,如果下载的是.whl文件,就需要打开命令窗口,切换到该文件所在的目录,使用pip来运行它:</p><p>首先检查电脑是否安装了pip,打开终端窗口,执行如下命令:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&gt;python -m pip --version</span><br></pre></td></tr></table></figure></p><p>如果输出版本信息则已安装:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&gt;pip 18.1 from E:\Python\lib\site-packages\pip (python 3.6)</span><br></pre></td></tr></table></figure></p><p>否则请安装pip,访问 <a href="https://bootstrap.pypa.io/get-pip.py" target="_blank" rel="noopener">https://bootstrap.pypa.io/get-pip.py</a> ,如果出现对话框请直接保存文件,如果出现的是get-pip.py的源代码,则需要新建一个get-pip.py文件,将该代码复制粘贴到其中,使用下面的命令运行get-pip.py:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&gt;python get-pip.py</span><br></pre></td></tr></table></figure></p><p>安装完成后可再次使用<code>python -m pip --version</code>命令检查是否成功安装了pip,成功安装pip后,使用以下命令来安装Pygame:<font color="#FF0000">(注意要先cd到你下载的文件的目录)</font><br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&gt;python -m pip install --user 下载的.whl文件名</span><br></pre></td></tr></table></figure></p><p>出现以下信息则表示安装成功:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&gt;Successfully installed 你安装的Pygame版本</span><br></pre></td></tr></table></figure></p><p>比如我的Python版本是3.6.5,64位的,则需要下载pygame‑1.9.4‑cp36‑cp36m‑win_amd64.whl,该文件保存到了桌面,使用下面的命令安装Pygame:<br><figure class="highlight plain"><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">C:\Users\Lenovo&gt;cd desktop</span><br><span class="line"></span><br><span class="line">C:\Users\Lenovo\Desktop&gt;python -m pip install --user pygame‑1.9.4‑cp36‑cp36m‑win_amd64.whl</span><br><span class="line">Processing c:\users\lenovo\desktop\pygame‑1.9.4‑cp36‑cp36m‑win_amd64.whl</span><br><span class="line">Installing collected packages: pygame</span><br><span class="line">Successfully installed pygame‑1.9.4</span><br><span class="line"></span><br><span class="line">C:\Users\Lenovo&gt;Desktop&gt;</span><br></pre></td></tr></table></figure></p><p>检查是否成功安装Pygame:在Python的IDLE里输入<code>import pygame</code>,如果不报错,则安装成功,再输入<code>pygame.ver</code>就能看到版本号:</p><p><img src="https://i.loli.net/2019/04/01/5ca2324501cd3.png" alt="pygame"></p><p>可能出现的问题:<br>报错:<code>xxxxxxxxxxxxxxxxxxxxxx.whl is not a supported wheel on this platform.</code><br>原因:Python版本与Pygame版本不对应<br>解决方法:Pygame文件名中的cp**表示Python对应的版本,另外并不是你电脑64位则下载64位,要看你安装的Python是否为64位,注意下载对应的版本!</p><p>报错:<code>You are using pip version x.x.x, however version x.x.x is available.You should consider upgrading via the &#39;python -m pip install --upgrade pip&#39; command.</code><br>原因:版本需要更新<br>解决方法:输入<code>python -m pip install --upgrade pip</code>命令进行更新即可</p><p>Pygame安装完成后我们就可以使用Python来开发游戏啦!</p>]]></content>
T
TRHX 已提交
76 77 78 79 80 81 82 83 84 85
    
    <summary type="html">
    
      Windows 系统中 Pygame 的安装笔记
    
    </summary>
    
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
    
    
T
TRHX 已提交
86 87
      <category term="Pygame" scheme="https://itrhx.com/tags/Pygame/"/>
    
T
TRHX 已提交
88 89
      <category term="Python" scheme="https://itrhx.com/tags/Python/"/>
    
T
TRHX 已提交
90 91
  </entry>
  
T
TRHX 已提交
92 93
  <entry>
    <title>免费CDN:jsDeliver+Github</title>
T
TRHX 已提交
94 95
    <link href="https://itrhx.com/2019/02/10/A18-Free-CDN-jsDeliver+Github/"/>
    <id>https://itrhx.com/2019/02/10/A18-Free-CDN-jsDeliver+Github/</id>
T
TRHX 已提交
96
    <published>2019-02-10T14:31:31.283Z</published>
T
TRHX 已提交
97
    <updated>2019-03-12T13:03:31.300Z</updated>
T
TRHX 已提交
98
    
T
TRHX 已提交
99
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><hr><h4 id="本文有参考《jsDeliver-github使用教程,免费好用的cdn》——-By-hojun"><a href="#本文有参考《jsDeliver-github使用教程,免费好用的cdn》——-By-hojun" class="headerlink" title="本文有参考《jsDeliver+github使用教程,免费好用的cdn》—— By hojun"></a><center><font color="#FF0000">本文有参考</font><a href="https://www.hojun.cn/2019/01/18/jsDeliver-github%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%EF%BC%8C%E5%85%8D%E8%B4%B9%E5%A5%BD%E7%94%A8%E7%9A%84cdn/" target="_blank" rel="noopener">《jsDeliver+github使用教程,免费好用的cdn》</a>—— By hojun</center></h4><hr><p>CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。——百度百科</p><p>放在Github的资源在国内加载速度比较慢,因此需要使用CDN加速来优化网站打开速度,jsDeliver + Github便是免费且好用的CDN,非常适合博客网站使用。</p><hr><h1 id="1、新建Github仓库"><a href="#1、新建Github仓库" class="headerlink" title="1、新建Github仓库 "></a><font color="#FF0000">1、新建Github仓库 </font></h1><p><img src="https://i.loli.net/2019/02/10/5c602f4762efe.png" alt=""></p><h1 id="2、克隆Github仓库到本地"><a href="#2、克隆Github仓库到本地" class="headerlink" title="2、克隆Github仓库到本地 "></a><font color="#FF0000">2、克隆Github仓库到本地 </font></h1><p>  点击 Clone or download,一键复制仓库地址<br> <img src="https://i.loli.net/2019/02/10/5c6030a1a92b1.png" alt=""><br> 在本地目录右键 Git Bash Here,执行以下命令:<br> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git clone 一键复制的仓库地址</span><br></pre></td></tr></table></figure></p><h1 id="3、上传资源"><a href="#3、上传资源" class="headerlink" title="3、上传资源 "></a><font color="#FF0000">3、上传资源 </font></h1><p>  复制需要上传的资源到本地git仓库(注:jsDeliver不支持加载超过20M的资源),在本地git仓库目录下右键 Git Bash Here,执行以下命令:<br><figure class="highlight plain"><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">git status                    //查看状态</span><br><span class="line">git add .                     //添加所有文件到暂存区</span><br><span class="line">git commit -m &apos;第一次提交&apos;      //把文件提交到仓库</span><br><span class="line">git push                      //推送至远程仓库</span><br></pre></td></tr></table></figure></p><h1 id="4、发布仓库"><a href="#4、发布仓库" class="headerlink" title="4、发布仓库 "></a><font color="#FF0000">4、发布仓库 </font></h1><p>  点击release发布<br><img src="https://i.loli.net/2019/02/10/5c60343d6d927.png" alt=""><br>  自定义发布版本号<br>  <img src="https://i.loli.net/2019/02/10/5c6034955bae4.png" alt=""></p><h1 id="5、通过jsDeliver引用资源"><a href="#5、通过jsDeliver引用资源" class="headerlink" title="5、通过jsDeliver引用资源 "></a><font color="#FF0000">5、通过jsDeliver引用资源 </font></h1><p>使用方法:<a href="https://cdn.jsdelivr.net/gh/你的用户名/你的仓库名@发布的版本号/文件路径" target="_blank" rel="noopener">https://cdn.jsdelivr.net/gh/你的用户名/你的仓库名@发布的版本号/文件路径</a><br>例如:<a href="https://cdn.jsdelivr.net/gh/TRHX/CDN-for-itrhx.com@1.0/images/trhx.png" target="_blank" rel="noopener">https://cdn.jsdelivr.net/gh/TRHX/CDN-for-itrhx.com@1.0/images/trhx.png</a></p>]]></content>
T
TRHX 已提交
100 101 102 103 104 105 106
    
    <summary type="html">
    
      放在Github的资源在国内加载速度比较慢,因此需要使用CDN加速来优化网站打开速度,jsDeliver + Github便是免费且好用的CDN,非常适合博客网站使用。
    
    </summary>
    
T
TRHX 已提交
107
      <category term="CDN" scheme="https://itrhx.com/categories/CDN/"/>
T
TRHX 已提交
108 109
    
    
T
TRHX 已提交
110
      <category term="jsDeliver" scheme="https://itrhx.com/tags/jsDeliver/"/>
T
TRHX 已提交
111
    
T
TRHX 已提交
112
      <category term="CDN" scheme="https://itrhx.com/tags/CDN/"/>
T
TRHX 已提交
113 114 115
    
  </entry>
  
T
TRHX 已提交
116 117
  <entry>
    <title>新年快乐!</title>
T
TRHX 已提交
118 119
    <link href="https://itrhx.com/2019/02/05/A17-Happy-new-year/"/>
    <id>https://itrhx.com/2019/02/05/A17-Happy-new-year/</id>
T
TRHX 已提交
120
    <published>2019-02-04T17:18:06.030Z</published>
T
TRHX 已提交
121
    <updated>2019-04-01T16:34:14.610Z</updated>
T
TRHX 已提交
122
    
T
TRHX 已提交
123
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><table><thead><tr><th style="text-align:center">C</th><th style="text-align:center"><code>printf(&quot;2019,祝大家&quot;);</code></th></tr></thead><tbody><tr><td style="text-align:center">C++</td><td style="text-align:center"><code>cout&lt;&lt;&quot;一帆风顺&quot;;</code></td></tr><tr><td style="text-align:center">C#</td><td style="text-align:center"><code>System.Console.WriteLine(&quot;二龙腾飞&quot;)</code></td></tr><tr><td style="text-align:center">VB</td><td style="text-align:center"><code>Msg(&quot;三羊开泰&quot;)</code></td></tr><tr><td style="text-align:center">VC</td><td style="text-align:center"><code>MessageBox(&quot;四季平安&quot;);</code></td></tr><tr><td style="text-align:center">Java</td><td style="text-align:center"><code>System.out.println(&quot;五福临门&quot;);</code></td></tr><tr><td style="text-align:center">JavaScript</td><td style="text-align:center"><code>alert(&quot;六六大顺&quot;)</code></td></tr><tr><td style="text-align:center">PHP</td><td style="text-align:center"><code>echo &quot;七星高照&quot;;</code></td></tr><tr><td style="text-align:center">Python</td><td style="text-align:center"><code>print(&quot;八方来财&quot;)</code></td></tr><tr><td style="text-align:center">Html</td><td style="text-align:center"><code>&lt;br/&gt;九运当头&lt;br/&gt;</code></td></tr><tr><td style="text-align:center">Objectivec</td><td style="text-align:center"><code>NSLog(@&quot;十全十美&quot;);</code></td></tr><tr><td style="text-align:center">QBasic</td><td style="text-align:center"><code>Print &quot;阖家幸福&quot;</code></td></tr><tr><td style="text-align:center">Asp</td><td style="text-align:center"><code>Response.Write &quot;心想事成&quot;</code></td></tr><tr><td style="text-align:center">Ruby</td><td style="text-align:center"><code>puts &quot;财源广进&quot;</code></td></tr><tr><td style="text-align:center">VBScript</td><td style="text-align:center"><code>MsgBox &quot;幸福安康&quot;</code></td></tr><tr><td style="text-align:center">XML</td><td style="text-align:center"><code>&lt;TextView android:text=&quot;大展宏图&quot; /&gt;</code></td></tr><tr><td style="text-align:center">LUA</td><td style="text-align:center"><code>print(&quot;学业有成&quot;)</code></td></tr><tr><td style="text-align:center">Delphi</td><td style="text-align:center"><code>ShowMessage(&#39;万事如意&#39;);</code></td></tr><tr><td style="text-align:center">shell</td><td style="text-align:center"><code>echo 步步高升</code></td></tr><tr><td style="text-align:center">perl</td><td style="text-align:center"><code>print &#39;鸿案齐眉&#39;</code></td></tr><tr><td style="text-align:center">LISP</td><td style="text-align:center"><code>(format t &quot;身体健康~%&quot;)</code></td></tr><tr><td style="text-align:center">powerBuilder</td><td style="text-align:center"><code>messagebox(&quot;龙马精神&quot;)</code></td></tr><tr><td style="text-align:center">COBOL</td><td style="text-align:center"><code>DISPLAY &#39;笑口常开&#39;</code></td></tr><tr><td style="text-align:center">aswing</td><td style="text-align:center"><code>JOptionPane.showMessageDialog(&quot;happy&quot;,&quot;好运连连&quot;)</code></td></tr><tr><td style="text-align:center">Android</td><td style="text-align:center"><code>Toast.makeText(getApplicationContext(),&quot;年年有余&quot;,Toast.LENGTH_SHORT).show()</code></td></tr><tr><td style="text-align:center">flex</td><td style="text-align:center"><code>Alert.show(&quot;大吉大利&quot;);</code></td></tr><tr><td style="text-align:center">Foxpro</td><td style="text-align:center"><code>?[家庭幸福!]</code></td></tr><tr><td style="text-align:center">iapp</td><td style="text-align:center"><code>tw(&quot;瑞气盈门&quot;)</code></td></tr><tr><td style="text-align:center">DOS批处理</td><td style="text-align:center"><code>echo 鹏程万里</code></td></tr><tr><td style="text-align:center">易语言</td><td style="text-align:center"><code>调试输出(“万事亨通”)</code></td></tr><tr><td style="text-align:center">Clojure</td><td style="text-align:center"><code>(println &quot;年年有今昔&quot;)</code></td></tr><tr><td style="text-align:center">verilog/systemverilog/e</td><td style="text-align:center"><code>$display(&quot;岁岁有今朝&quot;)</code></td></tr><tr><td style="text-align:center">as</td><td style="text-align:center"><code>trace(&quot;祝大家新年快乐!&quot;);</code></td></tr></tbody></table>]]></content>
T
TRHX 已提交
124 125 126
    
    <summary type="html">
    
T
TRHX 已提交
127
      祝福的34种语言写法
T
TRHX 已提交
128 129 130
    
    </summary>
    
T
TRHX 已提交
131
      <category term="BLOG" scheme="https://itrhx.com/categories/BLOG/"/>
T
TRHX 已提交
132 133
    
    
T
TRHX 已提交
134
      <category term="BLOG" scheme="https://itrhx.com/tags/BLOG/"/>
T
TRHX 已提交
135 136 137
    
  </entry>
  
T
TRHX 已提交
138
  <entry>
T
TRHX 已提交
139
    <title>一台电脑使用两个/多个GitHub账号部署两个/多个Hexo博客</title>
T
TRHX 已提交
140 141
    <link href="https://itrhx.com/2019/01/18/A16-One-computer-deploys-two-or-more-hexo-blogs/"/>
    <id>https://itrhx.com/2019/01/18/A16-One-computer-deploys-two-or-more-hexo-blogs/</id>
T
TRHX 已提交
142
    <published>2019-01-18T11:42:54.900Z</published>
T
TRHX 已提交
143
    <updated>2019-04-20T15:45:19.035Z</updated>
T
TRHX 已提交
144
    
T
TRHX 已提交
145
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><p><img src="https://i.loli.net/2019/04/01/5ca2273ae73e5.png" alt=""><br>由于个人原因需要在一台电脑上部署两个Hexo博客,本来以为挺简单,没想到问题重重,首先是一个GitHub账号只能搭建一个Hexo博客,因此就需要使用其他GitHub账号;其次是一台电脑绑定两个GitHub账号,则需要两对公钥,在处理第二个问题时遇到的问题比较多,因为对这方面一窍不通,还是小白,所以折腾了一下午才解决,网上好多教程我都看不懂,觉得不(自)够(己)详(太)细(笨),因此详细记录一下</p><a id="more"></a><p>原理分析:</p><blockquote><ul><li>SSH的公钥是GitHub作为本地仓库和远程仓库连接的唯一标识,一个公钥只能对应一个GitHub账户,如果将一个相同的公钥上传到不同的GitHub账户,GitHub则无法做出辨识,进而导致错误</li><li>一台电脑,可以生成多对公私钥,可以通过配置,将不同的公钥上传到不同的GitHub账号,那么就不存在单个公钥绑定多个GitHub账号的情况存在了</li></ul></blockquote><p>相关问题报错:</p><blockquote><ul><li>同一台电脑部署第二个Hexo博客执行<code>hexo g -d</code>时报错:<code>ERROR: Permission to xxxxxx/xxxxxx.github.io.git denied to xxxxxx.</code></li><li>添加新的 SSH 密钥 到 SSH agent 执行<code>ssh-add xxx</code>时报错:<code>Could not open a connection to your authentication agent.</code></li><li>单独设置用户名/邮箱时报错:<code>fatal: not in a git directory</code></li></ul></blockquote><hr><p>以下是详细过程:<br>前提:假设你的第二个博客相关配置操作已经顺利完成,但使用<code>hexo g -d</code>命令部署到 GitHub 上时报错:<code>ERROR: Permission to xxxxxx/xxxxxx.github.io.git denied to xxxxxx.</code></p><h1 id="查看当前密钥"><a href="#查看当前密钥" class="headerlink" title="- 查看当前密钥"></a>- 查看当前密钥</h1><p>首先我们打开终端输入<code>ls ~/.ssh/</code>可以查看当前已有的密钥,显示<code>id_rsa</code> 与 <code>id_rsa_pub</code>说明已经有一对密钥</p><h1 id="创建新的密钥"><a href="#创建新的密钥" class="headerlink" title="- 创建新的密钥"></a>- 创建新的密钥</h1><p>首先使用以下命令进入 SSH根目录下:<br><figure class="highlight jboss-cli"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">cd</span> ~<span class="string">/.ssh/</span></span><br></pre></td></tr></table></figure></p><h2 id="方法一"><a href="#方法一" class="headerlink" title="方法一"></a>方法一</h2><p>直接使用以下命令创建新密钥,然后两次回车即可:<br><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">ssh-keygen -t rsa -f  ~/.ssh/这里是新密钥名称 -C <span class="string">"这里是你的邮箱"</span></span><br></pre></td></tr></table></figure></p><p>注意区别新密钥名称和旧密钥名称,不要相同!!!</p><h2 id="方法二"><a href="#方法二" class="headerlink" title="方法二"></a>方法二</h2><p>使用下面命令行创建新密钥:<br><figure class="highlight mathematica"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t rsa -<span class="keyword">C</span> <span class="string">"这里是你的邮箱"</span></span><br></pre></td></tr></table></figure></p><p>回车后会出现:<br><figure class="highlight vbnet"><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">Generating <span class="keyword">public</span>/<span class="keyword">private</span> rsa <span class="keyword">key</span> pair.  </span><br><span class="line">Enter file <span class="keyword">in</span> which <span class="keyword">to</span> save the <span class="keyword">key</span> (/c/Users/you/.ssh/id_rsa):</span><br></pre></td></tr></table></figure></p><p>注意此时需要你输入新密钥的名称,同样要注意区别新密钥名称和旧密钥名称,不要相同!!!之后再两次回车,新密钥创建完毕!</p><h1 id="配置config"><a href="#配置config" class="headerlink" title="- 配置config"></a>- 配置config</h1><p>查看你的.ssh/根路径下, 有没有config文件,( 比如我的路径为C:\Users\Lenovo.ssh)没有则使用以下命令创建一个config文件:<br><figure class="highlight lsl"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">touch</span> config</span><br></pre></td></tr></table></figure></p><p>用记事本或者其他工具打开config文件(注意config文件是没有任何后缀名的),写入以下配置:</p><figure class="highlight crmsh"><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">Host github.com</span><br><span class="line">HostName github.com</span><br><span class="line"><span class="keyword">User</span> <span class="title">git</span></span><br><span class="line">IdentityFile ~/.ssh/id_rsa</span><br><span class="line"></span><br><span class="line"><span class="comment">#第二个新账号,#"xxxxxx"为前缀名,可以任意设置,要记住,后面需要用到</span></span><br><span class="line">Host xxxxxx.github.com</span><br><span class="line">HostName github.com</span><br><span class="line"><span class="keyword">User</span> <span class="title">git</span></span><br><span class="line">IdentityFile ~/.ssh/这里是你创建的新密钥的名称</span><br></pre></td></tr></table></figure><h1 id="设置新GitHub账户SSH-key"><a href="#设置新GitHub账户SSH-key" class="headerlink" title="- 设置新GitHub账户SSH key"></a>- 设置新GitHub账户SSH key</h1><p>输入以下命令复制你创建的公钥:<br><figure class="highlight jboss-cli"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">clip &lt; ~<span class="string">/.ssh/</span>这里是你创建的新密钥的名称<span class="string">.pub</span></span><br></pre></td></tr></table></figure></p><p>也可以直接在.ssh目录下找到你创建的新的公钥,文件名为<code>新密钥的名称.pub</code>,(比如我的是<code>trhx_rsa.pub</code>),用记事本打开,复制里面的内容,然后打开你的新GitHub账号主页,依次进入Settings —&gt; SSH and GPG keys —&gt; New SSH key,将刚复制的内容粘贴到Key那里,Title可以随便填,点击Add Key保存。</p><h1 id="清空本地的-SSH-缓存,添加新的-SSH-密钥-到-SSH-agent中"><a href="#清空本地的-SSH-缓存,添加新的-SSH-密钥-到-SSH-agent中" class="headerlink" title="- 清空本地的 SSH 缓存,添加新的 SSH 密钥 到 SSH agent中"></a>- 清空本地的 SSH 缓存,添加新的 SSH 密钥 到 SSH agent中</h1><p>使用命令<code>cd ~/.ssh</code>cd到.ssh根目录下,依次执行以下命令:</p><figure class="highlight dockerfile"><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">ssh-<span class="keyword">add</span><span class="bash"> -D</span></span><br><span class="line"><span class="bash">ssh-add xxxxxx <span class="comment">#旧密钥名称,一般是id_rsa</span></span></span><br><span class="line"><span class="bash">ssh-add xxxxxx <span class="comment">#新创建的密钥名称</span></span></span><br></pre></td></tr></table></figure><p>如果执行以上命令出现错误:<code>Could not open a connection to your authentication agent.</code>,那么就需要先执行<code>ssh-agent bash</code>,再执行以上命令</p><h1 id="验证配置是否成功"><a href="#验证配置是否成功" class="headerlink" title="- 验证配置是否成功"></a>- 验证配置是否成功</h1><p>依次执行以下命令,第一个为默认ssh_key验证;第二个为新的ssh_key验证,其中“xxxxxx”为你先前在config文件中的命名<br><figure class="highlight stylus"><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">ssh -T git@github.com</span><br><span class="line">ssh -T git@xxxxxxx<span class="selector-class">.github</span><span class="selector-class">.com</span></span><br></pre></td></tr></table></figure></p><p>依次显示以下信息, 则说明配置成功:<br><figure class="highlight ada"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Hi 你的用户名! You<span class="symbol">'ve</span> successfully authenticated, but GitHub does <span class="keyword">not</span> provide shell <span class="keyword">access</span>.</span><br></pre></td></tr></table></figure></p><h1 id="取消全局用户名-邮箱配置,单独设置用户名-邮箱"><a href="#取消全局用户名-邮箱配置,单独设置用户名-邮箱" class="headerlink" title="- 取消全局用户名/邮箱配置,单独设置用户名/邮箱"></a>- 取消全局用户名/邮箱配置,单独设置用户名/邮箱</h1><p>执行如下命令,取消全局用户名和邮箱配置(如果已经设置了全局的话):</p><figure class="highlight dsconfig"><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="string">git </span><span class="string">config </span><span class="built_in">--global</span> <span class="built_in">--unset</span> <span class="string">user.</span><span class="string">name</span></span><br><span class="line"><span class="string">git </span><span class="string">config </span><span class="built_in">--global</span> <span class="built_in">--unset</span> <span class="string">user.</span><span class="string">email</span></span><br></pre></td></tr></table></figure><p>分别进入你的两个Hexo博客.git目录下执行以下命令单独设置用户名/邮箱:<br><figure class="highlight stylus"><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">git config user<span class="selector-class">.name</span> <span class="string">"这里是用户名"</span></span><br><span class="line">git config user<span class="selector-class">.email</span> <span class="string">"这里是你的邮箱"</span></span><br></pre></td></tr></table></figure></p><p>如果此时报错:<code>fatal: not in a git directory</code>,说明你没有进入.git目录下,具体路径:\Hexo\.deploy_git\.git,.git目录是隐藏的,需要你设置隐藏目录可见</p><p>执行以下命令可以查看设置是否成功<br><figure class="highlight lua"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">config</span> <span class="comment">--list</span></span><br></pre></td></tr></table></figure></p><h1 id="hexo-配置文件修改git地址"><a href="#hexo-配置文件修改git地址" class="headerlink" title="- hexo 配置文件修改git地址"></a>- hexo 配置文件修改git地址</h1><p>打开你的第二个博客Hexo目录下的_config.yml文件,找到deploy关键字,写入以下配置并保存:<br><figure class="highlight less"><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="attribute">deploy</span>:</span><br><span class="line">  <span class="attribute">type</span>: git</span><br><span class="line">  <span class="attribute">repository</span>: git<span class="variable">@xxxxxx</span>.github.<span class="attribute">com</span>:你的用户名/你的用户名.github.io.git</span><br><span class="line">  <span class="attribute">branch</span>: master</span><br></pre></td></tr></table></figure></p><p>比如我的配置:<br><figure class="highlight less"><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="attribute">deploy</span>:</span><br><span class="line">  <span class="attribute">type</span>: git</span><br><span class="line">  <span class="attribute">repository</span>: git<span class="variable">@love109</span>.github.<span class="attribute">com</span>:love109/love109.github.io.git</span><br><span class="line">  <span class="attribute">branch</span>: master</span><br></pre></td></tr></table></figure></p><p>大功告成,再次执行hexo g -d就能成功将新的博客部署到 Github 上了</p>]]></content>
T
TRHX 已提交
146 147 148
    
    <summary type="html">
    
T
TRHX 已提交
149
      &lt;p&gt;&lt;img src=&quot;https://i.loli.net/2019/04/01/5ca2273ae73e5.png&quot; alt=&quot;&quot;&gt;&lt;br&gt;由于个人原因需要在一台电脑上部署两个Hexo博客,本来以为挺简单,没想到问题重重,首先是一个GitHub账号只能搭建一个Hexo博客,因此就需要使用其他GitHub账号;其次是一台电脑绑定两个GitHub账号,则需要两对公钥,在处理第二个问题时遇到的问题比较多,因为对这方面一窍不通,还是小白,所以折腾了一下午才解决,网上好多教程我都看不懂,觉得不(自)够(己)详(太)细(笨),因此详细记录一下&lt;/p&gt;
T
TRHX 已提交
150 151 152
    
    </summary>
    
T
TRHX 已提交
153
      <category term="实用教程" scheme="https://itrhx.com/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
T
TRHX 已提交
154 155
    
    
T
TRHX 已提交
156
      <category term="Hexo" scheme="https://itrhx.com/tags/Hexo/"/>
T
TRHX 已提交
157
    
T
TRHX 已提交
158
      <category term="Github" scheme="https://itrhx.com/tags/Github/"/>
T
TRHX 已提交
159 160 161
    
  </entry>
  
T
TRHX 已提交
162 163
  <entry>
    <title>Python3 自学笔记 C09</title>
T
TRHX 已提交
164 165
    <link href="https://itrhx.com/2018/11/16/A15-Python3-self-study-notes-C09/"/>
    <id>https://itrhx.com/2018/11/16/A15-Python3-self-study-notes-C09/</id>
T
TRHX 已提交
166 167 168 169 170 171 172 173 174 175 176
    <published>2018-11-15T16:37:26.503Z</published>
    <updated>2018-11-15T16:48:05.385Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><center><font color="#4094C7" size="4">Python3 自学笔记第九章【文件和异常】</font></center><hr><h1 id="9-1-从文件中读取数据"><a href="#9-1-从文件中读取数据" class="headerlink" title=" - 9.1 从文件中读取数据  "></a><font color="#FF0000"> - 9.1 从文件中读取数据  </font></h1><h1 id="9-1-1-读取整个文件"><a href="#9-1-1-读取整个文件" class="headerlink" title=" - 9.1.1 读取整个文件  "></a><font color="#FF0000"> - 9.1.1 读取整个文件  </font></h1><p>有一个文件,包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行:<br><figure class="highlight plain"><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">Circumference rate.txt</span><br><span class="line">----------</span><br><span class="line">3.1415926535</span><br><span class="line">  8979323846</span><br><span class="line">  2643383279</span><br></pre></td></tr></table></figure></p><p>以下两个程序将打开并读取这个文件,再将其内容显示到屏幕上:<br><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">#file_reader.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> open(<span class="string">'Circumference rate.txt'</span>) <span class="keyword">as</span> file_object:</span><br><span class="line">    contents = file_object.read()</span><br><span class="line">    print(contents)</span><br></pre></td></tr></table></figure></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"><span class="comment">#file_reader2.py</span></span><br><span class="line"></span><br><span class="line">contents = open (<span class="string">'Circumference rate.txt'</span>)</span><br><span class="line">print(contents.read())</span><br><span class="line">contents.close()</span><br></pre></td></tr></table></figure><p>函数<font color="#FF0000">open()</font>接受一个参数:要打开的文件的名称,Python在当前执行的文件所在的目录中查找指定的文件;关键字<font color="#FF0000">with</font>在不再需要访问文件后将其关闭;也可以调用<font color="#FF0000">open()</font>和<font color="#FF0000">close()</font>来打开和关闭文件,如果使用这种方法,当程序存在bug时,<font color="#FF0000">close()</font>语句未执行,文件将不会被关闭;方法<font color="#FF0000">read()</font>将读取这个文件的全部内容,并将其作为一个长长的字符串储存在变量<font color="#FF0000">contents</font>中,通过打印<font color="#FF0000">contents</font>的值,就可以将这个文本文件的全部内容打印出来:<br><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="number">3.1415926535</span></span><br><span class="line">  <span class="number">8979323846</span></span><br><span class="line">  <span class="number">2643383279</span></span><br></pre></td></tr></table></figure></p><p>输出结果末尾有一空行,这是因为read()到达末尾时返回一个空字符串,而将这个空字符串显示出来就是一个空行,如果要删除末尾的空行,可在print语句中使用rstrip():<br><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">#file_reader.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">with</span> open(<span class="string">'Circumference rate.txt'</span>) <span class="keyword">as</span> file_object:</span><br><span class="line">    contents = file_object.read()</span><br><span class="line">    print(contents.rstrip())</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">3.1415926535</span></span><br><span class="line">  <span class="number">8979323846</span></span><br><span class="line">  <span class="number">2643383279</span></span><br></pre></td></tr></table></figure></p><h1 id="9-1-2-文件路径"><a href="#9-1-2-文件路径" class="headerlink" title=" - 9.1.2 文件路径  "></a><font color="#FF0000"> - 9.1.2 文件路径  </font></h1><blockquote><p><font color="#FF0000">相对文件路径:</font>假定程序文件位于python_work文件夹中,程序文件操作的文本文件位于python_work文件夹的子文件夹text_files中,此时可以使用相对文件路径来打开该文本文件,相对文件路径让Python到指定的位置去查找,而该位置是相对于当前运行的程序所在目录的</p></blockquote><p>在Linux和OS X中,相对路径类似于如下:<br><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="keyword">with</span> open(<span class="string">'text_files/filename.txt'</span>) <span class="keyword">as</span> file_object:</span><br></pre></td></tr></table></figure></p><p>在Windows系统中,文件路径中使用反斜杠(\)而不是斜杠(/):<br><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="keyword">with</span> open(<span class="string">'text_files\filename.txt'</span>) <span class="keyword">as</span> file_object:</span><br></pre></td></tr></table></figure></p><blockquote><p><font color="#FF0000">绝对文件路径:</font>不用关心当前运行的程序储存在什么地方,直接将文件在计算机中的准确位置告诉Python,这称为绝对文件路径,绝对路径通常比相对路径更长,因此将其储存在一个变量中,再将变量传递给open()会有所帮助</p></blockquote><p>在Linux和OS X中,绝对路径类似于如下:<br><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">file_path = <span class="string">'/home/ehmatthes/other_files/text_files/filename.txt'</span></span><br><span class="line"><span class="keyword">with</span> open(file_path) <span class="keyword">as</span> file_object:</span><br></pre></td></tr></table></figure></p><p>在Windows系统中,绝对路径类似于如下:<br><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">file_path = <span class="string">'C:\Users\ehmatthes\other_files\text_files\filename.txt'</span></span><br><span class="line"><span class="keyword">with</span> open(file_path) <span class="keyword">as</span> file_object:</span><br></pre></td></tr></table></figure></p><h1 id="9-1-3-逐行读取"><a href="#9-1-3-逐行读取" class="headerlink" title=" - 9.1.3 逐行读取  "></a><font color="#FF0000"> - 9.1.3 逐行读取  </font></h1><p>要以每次一行的方式检查文件,可对文件对象使用for循环:<br><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"><span class="comment">#file_reader.py</span></span><br><span class="line"></span><br><span class="line">filename = <span class="string">'Circumference rate.txt'</span></span><br><span class="line"><span class="keyword">with</span> open(filename) <span class="keyword">as</span> file_object:</span><br><span class="line">    <span class="keyword">for</span> line <span class="keyword">in</span> file_object:</span><br><span class="line">        print(line)</span><br></pre></td></tr></table></figure></p><p>在文件中每行的末尾都有一个看不见的换行符,而print语句也会加上一个换行符,因此每行末尾都有两个换行符:一个来自文件,一个来自print语句,输出结果如下:<br><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="number">3.1415926535</span></span><br><span class="line"></span><br><span class="line">  <span class="number">8979323846</span></span><br><span class="line"></span><br><span class="line">  <span class="number">2643383279</span></span><br></pre></td></tr></table></figure></p><p>要消除这些多余的空白行,可以使用rstrip():<br><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"><span class="comment">#file_reader.py</span></span><br><span class="line"></span><br><span class="line">filename = <span class="string">'Circumference rate.txt'</span></span><br><span class="line"><span class="keyword">with</span> open(filename) <span class="keyword">as</span> file_object:</span><br><span class="line">    <span class="keyword">for</span> line <span class="keyword">in</span> file_object:</span><br><span class="line">        print(line.rstrip())</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">3.1415926535</span></span><br><span class="line">  <span class="number">8979323846</span></span><br><span class="line">  <span class="number">2643383279</span></span><br></pre></td></tr></table></figure></p><h1 id="9-1-4-创建一个包含文件各行内容的列表"><a href="#9-1-4-创建一个包含文件各行内容的列表" class="headerlink" title=" - 9.1.4 创建一个包含文件各行内容的列表  "></a><font color="#FF0000"> - 9.1.4 创建一个包含文件各行内容的列表  </font></h1><p>使用关键字with时,open()返回的文件对象只在with代码块内可用,如果要在with代码块外访问文件的内容,可在with代码块内将文件的各行储存在一个列表当中,并在with代码块外使用该列表:<br><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">#file_reader.py</span></span><br><span class="line"></span><br><span class="line">filename = <span class="string">'Circumference rate.txt'</span></span><br><span class="line"><span class="keyword">with</span> open(filename) <span class="keyword">as</span> file_object:</span><br><span class="line">    lines = file_object.readlines()</span><br><span class="line">    </span><br><span class="line"><span class="keyword">for</span> line <span class="keyword">in</span> lines:</span><br><span class="line">    print(line.rstrip())</span><br></pre></td></tr></table></figure></p><p>输出结果与文件内容完全一致</p><h1 id="9-1-5-使用文件的内容"><a href="#9-1-5-使用文件的内容" class="headerlink" title=" - 9.1.5 使用文件的内容  "></a><font color="#FF0000"> - 9.1.5 使用文件的内容  </font></h1><p>创建一个字符串,它包含文件中储存的所有数字,且没有任何空格:<br><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">#pi_string.py</span></span><br><span class="line"></span><br><span class="line">filename = <span class="string">'Circumference rate.txt'</span></span><br><span class="line"><span class="keyword">with</span> open(filename) <span class="keyword">as</span> file_object:</span><br><span class="line">    lines = file_object.readlines()</span><br><span class="line"></span><br><span class="line">pi_string = <span class="string">''</span></span><br><span class="line"><span class="keyword">for</span> line <span class="keyword">in</span> lines:</span><br><span class="line">    pi_string += line.rstrip()</span><br><span class="line">    </span><br><span class="line">print(pi_string)</span><br><span class="line">print(len(pi_string))</span><br></pre></td></tr></table></figure></p><p>打印该字符串以及其长度:<br><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="number">3.1415926535</span>  <span class="number">8979323846</span>  <span class="number">2643383279</span></span><br><span class="line"><span class="number">36</span></span><br></pre></td></tr></table></figure></p><p>由于原文件每行左边都有空格,我们可以使用strip()而不是rstrip()来删除它:<br><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">#pi_string.py</span></span><br><span class="line"></span><br><span class="line">filename = <span class="string">'Circumference rate.txt'</span></span><br><span class="line"><span class="keyword">with</span> open(filename) <span class="keyword">as</span> file_object:</span><br><span class="line">    lines = file_object.readlines()</span><br><span class="line"></span><br><span class="line">pi_string = <span class="string">''</span></span><br><span class="line"><span class="keyword">for</span> line <span class="keyword">in</span> lines:</span><br><span class="line">    pi_string += line.strip()</span><br><span class="line">    </span><br><span class="line">print(pi_string)</span><br><span class="line">print(len(pi_string))</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">3.141592653589793238462643383279</span></span><br><span class="line"><span class="number">32</span></span><br></pre></td></tr></table></figure></p><blockquote><p>Python中有三个去除头尾字符、空白符的函数,它们依次为: </p><p><font color="#FF0000">strip:</font>用来去除头尾字符、空白符(包括\n、\r、\t、’ ‘,即:换行、回车、制表符、空格) </p><p><font color="#FF0000">lstrip:</font>用来去除开头字符、空白符(包括\n、\r、\t、’ ‘,即:换行、回车、制表符、空格)</p><p><font color="#FF0000">rstrip:</font>用来去除结尾字符、空白符(包括\n、\r、\t、’ ‘,即:换行、回车、制表符、空格)<br>注意:这些函数都只会删除头和尾的字符,中间的不会删除。<br>用法分别为:<br>string.strip([chars])<br>string.lstrip([chars])<br>string.rstrip([chars])<br>参数chars是可选的,当chars为空,默认删除string头尾的空白符(包括\n、\r、\t、’ ‘)<br>当chars不为空时,函数会被chars解成一个个的字符,然后将这些字符去掉<br>它返回的是去除头尾字符(或空白符)的string副本,string本身不会发生改变</p></blockquote><h1 id="9-2-写入文件"><a href="#9-2-写入文件" class="headerlink" title=" - 9.2 写入文件 "></a><font color="#FF0000"> - 9.2 写入文件 </font></h1><p>将一条简单的消息储存到文件中:<br><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">#write_message.py</span></span><br><span class="line"></span><br><span class="line">filename = <span class="string">'programming.txt'</span></span><br><span class="line"><span class="keyword">with</span> open(filename,<span class="string">'w'</span>) <span class="keyword">as</span> file_object:</span><br><span class="line">    file_object.write(<span class="string">"I love programming!"</span>)</span><br></pre></td></tr></table></figure></p><p>调用open()时提供了两个实参,第一个实参也是要打开文件的名称,第二个实参(’w’)告诉Python,我们要以写入模式打开这个文件,打开文件时,可指定<font color="#FF0000">读取模式(’r’)、写入模式(’w’)、附加模式(’a’)</font>或者让我们能够<font color="#FF0000">读取和写入文件的模式(’r+’)</font>,如果省略模式实参,则默认以只读模式打开文件</p><center>附表:Python读写文件各种模式区别</center><table><thead><tr><th style="text-align:center">模式</th><th style="text-align:center">可做操作</th><th style="text-align:center">若文件不存在</th><th style="text-align:center">是否覆盖</th></tr></thead><tbody><tr><td style="text-align:center">r</td><td style="text-align:center">打开一个文件用于只读</td><td style="text-align:center">报错</td><td style="text-align:center">-</td></tr><tr><td style="text-align:center">rb</td><td style="text-align:center">以二进制格式打开一个文件用于只读</td><td style="text-align:center">报错</td><td style="text-align:center">-</td></tr><tr><td style="text-align:center">r+</td><td style="text-align:center">打开一个文件用于读和写</td><td style="text-align:center">报错</td><td style="text-align:center">是</td></tr><tr><td style="text-align:center">rb+</td><td style="text-align:center">以二进制格式打开一个文件用于读和写</td><td style="text-align:center">报错</td><td style="text-align:center">是</td></tr><tr><td style="text-align:center">w</td><td style="text-align:center">打开一个文件用于只写</td><td style="text-align:center">创建</td><td style="text-align:center">是</td></tr><tr><td style="text-align:center">wb</td><td style="text-align:center">以二进制格式打开一个文件只用于只写</td><td style="text-align:center">创建</td><td style="text-align:center">是</td></tr><tr><td style="text-align:center">w+</td><td style="text-align:center">打开一个文件用于读和写</td><td style="text-align:center">创建</td><td style="text-align:center">是</td></tr><tr><td style="text-align:center">wb+</td><td style="text-align:center">以二进制格式打开一个文件用于读和写</td><td style="text-align:center">创建</td><td style="text-align:center">是</td></tr><tr><td style="text-align:center">a</td><td style="text-align:center">打开一个文件用于追加</td><td style="text-align:center">创建</td><td style="text-align:center">否,追加写</td></tr><tr><td style="text-align:center">ab</td><td style="text-align:center">以二进制格式打开一个文件用于追加</td><td style="text-align:center">创建</td><td style="text-align:center">否,追加写</td></tr><tr><td style="text-align:center">a+</td><td style="text-align:center">打开一个文件用于读和写</td><td style="text-align:center">创建</td><td style="text-align:center">否,追加写</td></tr><tr><td style="text-align:center">ab+</td><td style="text-align:center">以二进制格式打开一个文件用于追加</td><td style="text-align:center">创建</td><td style="text-align:center">否,追加写</td></tr></tbody></table><h1 id="9-3-使用-try-except-代码块处理异常"><a href="#9-3-使用-try-except-代码块处理异常" class="headerlink" title=" - 9.3 使用 try-except 代码块处理异常 "></a><font color="#FF0000"> - 9.3 使用 try-except 代码块处理异常 </font></h1><p>当我们尝试将一个数字除以0时,会发生ZeroDivisionError异常:<br><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="meta">&gt;&gt;&gt; </span>print(<span class="number">5</span>/<span class="number">0</span>)</span><br><span class="line">Traceback (most recent call last):</span><br><span class="line">  File <span class="string">"&lt;pyshell#0&gt;"</span>, line <span class="number">1</span>, <span class="keyword">in</span> &lt;module&gt;</span><br><span class="line">    print(<span class="number">5</span>/<span class="number">0</span>)</span><br><span class="line">ZeroDivisionError: division by zero</span><br></pre></td></tr></table></figure></p><p>此时我们可以编写一个<font color="#FF0000">try-except代码块</font>来处理该异常:<br><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">try</span>:</span><br><span class="line">    print(<span class="number">5</span>/<span class="number">0</span>)</span><br><span class="line"><span class="keyword">except</span> ZeroDivisionError:</span><br><span class="line">    print(<span class="string">"You can't divide by zero!"</span>)</span><br></pre></td></tr></table></figure></p><p>当我们运行该程序时,会出现提示:<br><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">You can<span class="string">'t divide by zero!</span></span><br></pre></td></tr></table></figure></p><p>在<font color="#FF0000">try-except代码块</font>中加入else,编写一个只执行除法运算的简单计算器:<br><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">print(<span class="string">"Give me two numbers,and I'll divide them."</span>)</span><br><span class="line">print(<span class="string">"Enter 'q' to quit."</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">while</span> <span class="keyword">True</span>:</span><br><span class="line">    first_number = input(<span class="string">"\nFirst number:"</span>)</span><br><span class="line">    <span class="keyword">if</span> first_number == <span class="string">'q'</span>:</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line">    second_number = input(<span class="string">"\nSecond number:"</span>)</span><br><span class="line">    <span class="keyword">if</span> second_number == <span class="string">'q'</span>:</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        answer = int(first_number)/int(second_number)</span><br><span class="line">    <span class="keyword">except</span> ZeroDivisionError:</span><br><span class="line">        print(<span class="string">"You can't divide by 0!"</span>)</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        print(answer)</span><br></pre></td></tr></table></figure></p><p>运行程序:<br><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">Give me two numbers,<span class="keyword">and</span> I<span class="string">'ll divide them.</span></span><br><span class="line"><span class="string">Enter '</span>q<span class="string">' to quit.</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">First number:45</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Second number:0</span></span><br><span class="line"><span class="string">You can'</span>t divide by <span class="number">0</span>!</span><br><span class="line"></span><br><span class="line">First number:<span class="number">36</span></span><br><span class="line"></span><br><span class="line">Second number:<span class="number">8</span></span><br><span class="line"><span class="number">4.5</span></span><br><span class="line"></span><br><span class="line">First number:q</span><br></pre></td></tr></table></figure></p><p>若不加入<font color="#FF0000">try-except代码块</font>,我们在输入0时,程序就会出现异常而崩溃,而<font color="#FF0000">try-except代码块</font>很好的解决了这种问题,而且还起到了提示的作用,同样的,<font color="#FF0000">try-except代码块</font>也可以处理其他异常,如<font color="#FF0000">FileNotFoundError</font>等</p><h1 id="9-4-储存数据"><a href="#9-4-储存数据" class="headerlink" title=" - 9.4 储存数据 "></a><font color="#FF0000"> - 9.4 储存数据 </font></h1><h1 id="9-4-1-使用-json-dump-和-json-load"><a href="#9-4-1-使用-json-dump-和-json-load" class="headerlink" title=" - 9.4.1 使用 json.dump() 和 json.load() "></a><font color="#FF0000"> - 9.4.1 使用 json.dump() 和 json.load() </font></h1><p><font color="#FF0000"> 模块json</font>能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据;编写一个储存一组数字的简短程序,再编写一个将这些数字读取到内存中的程序,第一个程序将使用<font color="#FF0000"> json.dump()</font>来储存这组数据,而第二个程序将使用<font color="#FF0000"> json.load()</font>。函数<font color="#FF0000"> json.dump()</font>接受两个实参:要储存的数据以及可用于储存数据的文件对象:<br><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#number_writer.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> json</span><br><span class="line"></span><br><span class="line">numbers = [<span class="number">2</span>,<span class="number">3</span>,<span class="number">5</span>,<span class="number">7</span>,<span class="number">11</span>,<span class="number">13</span>]</span><br><span class="line"></span><br><span class="line">filename = <span class="string">'numbers.json'</span></span><br><span class="line"><span class="keyword">with</span> open(filename,<span class="string">'w'</span>) <span class="keyword">as</span> f_obj:</span><br><span class="line">    json.dump(numbers,f_obj)</span><br></pre></td></tr></table></figure></p><p>先导入模块json,再创建一个数字列表,<font color="#FF0000"> 通常用文件扩展名.json来指出文件储存的数据为JSON格式</font>,然后以写入模式打开该文件,使用函数<font color="#FF0000">json.dump()</font>将数字列表储存到文件numbers.json中,打开该文件,数据的储存格式与Python一样:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[2, 3, 5, 7, 11, 13]</span><br></pre></td></tr></table></figure></p><p>再编写一个程序,使用<font color="#FF0000">json.load()</font>将这个列表读取到内存中:<br><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">#number_reader.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> json</span><br><span class="line"></span><br><span class="line">filename = <span class="string">'numbers.json'</span></span><br><span class="line"><span class="keyword">with</span> open(filename) <span class="keyword">as</span> f_obj:</span><br><span class="line">    numbers = json.load(f_obj)</span><br><span class="line">print(numbers)</span><br></pre></td></tr></table></figure></p><p>输出结果与number_writer.py中创建的数字列表相同:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[2, 3, 5, 7, 11, 13]</span><br></pre></td></tr></table></figure></p><p>进阶:在同一个程序中使用 <font color="#FF0000">json.dump()</font> 和 <font color="#FF0000">json.load()</font>:创建文件username.json储存用户名,从该文件中获取用户名,如果这个文件不存在,就在except代码块中提示用户输入用户名,并将其储存在username.json中:<br><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">#remember_me.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> json</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">filename = <span class="string">'numbers.json'</span></span><br><span class="line"><span class="keyword">try</span>:</span><br><span class="line">    <span class="keyword">with</span> open(filename) <span class="keyword">as</span> f_obj:</span><br><span class="line">        username = json.load(f_obj)</span><br><span class="line"><span class="keyword">except</span> FileNotFoundError:</span><br><span class="line">    username = input(<span class="string">"What's your name?"</span>)</span><br><span class="line">    <span class="keyword">with</span> open(filename,<span class="string">'w'</span>) <span class="keyword">as</span> f_obj:</span><br><span class="line">        json.dump(username,f_obj)</span><br><span class="line">        print(<span class="string">"We'll remember you when you come back, "</span> + username + <span class="string">"!"</span>)</span><br><span class="line"><span class="keyword">else</span>:        </span><br><span class="line">    print(<span class="string">"Welcome back, "</span> + username + <span class="string">"!"</span>)</span><br></pre></td></tr></table></figure></p><p>以前没有储存用户名,第一次运行程序:<br><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">What<span class="string">'s your name?TRHX</span></span><br><span class="line"><span class="string">We'</span>ll remember you when you come back, TRHX!</span><br></pre></td></tr></table></figure></p><p>再次运行程序:<br><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">Welcome back, TRHX!</span><br></pre></td></tr></table></figure></p><h1 id="9-4-2-重构"><a href="#9-4-2-重构" class="headerlink" title=" - 9.4.2 重构 "></a><font color="#FF0000"> - 9.4.2 重构 </font></h1><p>代码能够正确运行,但可以做进一步的改进——将代码划分为一系列完成具体工作的函数,这样的过程称为<font color="#FF0000">重构</font>,重构让代码更清晰、更易于理解、更容易扩展<br>重构remember_me.py,将大部分逻辑放到一个或者多个函数中:<br><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">#remember_me.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> json</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">greet_user</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#问候用户,并指出其名字</span></span><br><span class="line">    filename = <span class="string">'numbers.json'</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">with</span> open(filename) <span class="keyword">as</span> f_obj:</span><br><span class="line">            username = json.load(f_obj)</span><br><span class="line">    <span class="keyword">except</span> FileNotFoundError:</span><br><span class="line">        username = input(<span class="string">"What's your name?"</span>)</span><br><span class="line">        <span class="keyword">with</span> open(filename,<span class="string">'w'</span>) <span class="keyword">as</span> f_obj:</span><br><span class="line">            json.dump(username,f_obj)</span><br><span class="line">            print(<span class="string">"We'll remember you when you come back, "</span> + username + <span class="string">"!"</span>)</span><br><span class="line">    <span class="keyword">else</span>:        </span><br><span class="line">        print(<span class="string">"Welcome back, "</span> + username + <span class="string">"!"</span>)</span><br><span class="line"></span><br><span class="line">greet_user()</span><br></pre></td></tr></table></figure></p><p>重构greet_user(),让它不执行这么多任务——将获取储存的用户名的代码移到另一个函数中:<br><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#remember_me.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> json</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get_stored_username</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#如果储存了用户名,就获取它</span></span><br><span class="line">    filename = <span class="string">'numbers.json'</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">with</span> open(filename) <span class="keyword">as</span> f_obj:</span><br><span class="line">            username = json.load(f_obj)</span><br><span class="line">    <span class="keyword">except</span> FileNotFoundError:</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">None</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="keyword">return</span> username</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">greet_user</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#问候用户,并指出其名字</span></span><br><span class="line">    username = get_stored_username()</span><br><span class="line">    <span class="keyword">if</span> username:</span><br><span class="line">        print(<span class="string">"Welcome back, "</span> + username + <span class="string">"!"</span>)</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        username = input(<span class="string">"What's your name?"</span>)</span><br><span class="line">        filename = <span class="string">'username.json'</span></span><br><span class="line">        <span class="keyword">with</span> open(filename,<span class="string">'w'</span>) <span class="keyword">as</span> f_obj:</span><br><span class="line">            json.dump(username,f_obj)</span><br><span class="line">            print(<span class="string">"We'll remember you when you come back, "</span> + username + <span class="string">"!"</span>)     </span><br><span class="line"></span><br><span class="line">greet_user()</span><br></pre></td></tr></table></figure></p><p>将greet_user()中的另一个代码块提取出来:将没有储存用户名时提示用户输入的代码放在一个独立的函数中:<br><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#remember_me.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> json</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get_stored_username</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#如果储存了用户名,就获取它</span></span><br><span class="line">    filename = <span class="string">'numbers.json'</span></span><br><span class="line">    <span class="keyword">try</span>:</span><br><span class="line">        <span class="keyword">with</span> open(filename) <span class="keyword">as</span> f_obj:</span><br><span class="line">            username = json.load(f_obj)</span><br><span class="line">    <span class="keyword">except</span> FileNotFoundError:</span><br><span class="line">        <span class="keyword">return</span> <span class="keyword">None</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        <span class="keyword">return</span> username</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get_new_username</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#提示输入用户名</span></span><br><span class="line">    username = input(<span class="string">"What's your name?"</span>)</span><br><span class="line">    filename = <span class="string">'username.json'</span></span><br><span class="line">    <span class="keyword">with</span> open(filename,<span class="string">'w'</span>) <span class="keyword">as</span> f_obj:</span><br><span class="line">        json.dump(username,f_obj)</span><br><span class="line">    <span class="keyword">return</span> username</span><br><span class="line">    </span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">greet_user</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#问候用户,并指出其名字</span></span><br><span class="line">    username = get_stored_username()</span><br><span class="line">    <span class="keyword">if</span> username:</span><br><span class="line">        print(<span class="string">"Welcome back, "</span> + username + <span class="string">"!"</span>)</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        username = get_new_username()</span><br><span class="line">        print(<span class="string">"We'll remember you when you come back, "</span> + username + <span class="string">"!"</span>)     </span><br><span class="line"></span><br><span class="line">greet_user()</span><br></pre></td></tr></table></figure></p><p>最终版本实现了每个函数只负责单一而清晰的任务,我们在编写程序时也要像这样,要写出清晰而易于维护和扩展的代码</p>]]></content>
    
    <summary type="html">
    
      Python3 【文件和异常】
    
    </summary>
    
T
TRHX 已提交
177
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
T
TRHX 已提交
178 179
    
    
T
TRHX 已提交
180
      <category term="文件" scheme="https://itrhx.com/tags/%E6%96%87%E4%BB%B6/"/>
T
TRHX 已提交
181
    
T
TRHX 已提交
182
      <category term="异常" scheme="https://itrhx.com/tags/%E5%BC%82%E5%B8%B8/"/>
T
TRHX 已提交
183 184 185 186 187
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C08</title>
T
TRHX 已提交
188 189
    <link href="https://itrhx.com/2018/11/10/A14-Python3-self-study-notes-C08/"/>
    <id>https://itrhx.com/2018/11/10/A14-Python3-self-study-notes-C08/</id>
T
TRHX 已提交
190 191 192 193 194 195 196 197 198 199 200
    <published>2018-11-10T11:51:55.481Z</published>
    <updated>2018-11-14T08:36:49.184Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><center><font color="#4094C7" size="4">Python3 自学笔记第八章【类】</font></center><hr><h1 id="8-1-创建类和使用类"><a href="#8-1-创建类和使用类" class="headerlink" title=" - 8.1 创建类和使用类  "></a><font color="#FF0000"> - 8.1 创建类和使用类  </font></h1><p>创建一个表示小狗的简单类Dog,根据Dog类创建的每个实例都将储存名字和年龄,赋予每条小狗蹲下(sit())和打滚(roll_over())的能力:</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"><span class="class"><span class="keyword">class</span> <span class="title">Dog</span><span class="params">()</span>:</span></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,name,age)</span>:</span></span><br><span class="line">        <span class="comment">#初始化属性name和age</span></span><br><span class="line">        self.name = name</span><br><span class="line">        self.age = age</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">sit</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#模拟小狗被命令时蹲下</span></span><br><span class="line">        print(self.name.title() + <span class="string">" is now sitting."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">roll_over</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#模拟小狗被命令时打滚</span></span><br><span class="line">        print(self.name.title() + <span class="string">" rolled over!"</span>)</span><br></pre></td></tr></table></figure><p>方法<strong>init</strong>():类中的函数称为<font color="#FF0000">方法</font>,本例中<font color="#FF0000">方法<strong>init</strong>()</font>是一个特殊的方法,每当我们根据Dog类创建新实例时,Python都会自动运行它,在方法的名称中,开头和结尾各有两个下划线,这是一种约定,避免Python默认方法与普通方法发生名称冲突,例子中将<font color="#FF0000">方法<strong>init</strong>()</font>定义成了包含三个形参:self、name和age,在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面,Python调用<font color="#FF0000">方法<strong>init</strong>()</font>来创建Dog实例时,将自动传入实参self,每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法,我们创建Dog实例时,Python将调用Dog类的<font color="#FF0000">方法<strong>init</strong>()</font>,我们将通过实参向Dog()传递名字和年龄;self会自动传递,因此我们不需要传递它,每当我们根据Dog类创建实例时,都只需要给最后两个形参(name和age)提供值;定义的两个变量都有前缀self,以self为前缀的变量都可以供类中的所有方法使用,还可以通过类的任何实例来访问这些变量。self.name = name 获取储存在形参name中的值,并将其储存到变量name中,然后该变量被关联到当前创建的实例。self.age = age 的作用与此类似,像这样可通过实例访问的变量称为<font color="#FF0000">属性</font>;Dog还定义了另外两种方法:sit() 和 roll_over() ,由于这些方法不需要额外的信息,如名字和年龄,因此它们只有一个形参self</p><p>在Python 2.7中创建类时,需要在括号内包含单词object:<br><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="class"><span class="keyword">class</span> <span class="title">ClassName</span><span class="params">(object)</span>:</span></span><br><span class="line">   ---snip---</span><br></pre></td></tr></table></figure></p><h1 id="8-2-根据类创建实例"><a href="#8-2-根据类创建实例" class="headerlink" title="- 8.2 根据类创建实例"></a><font color="#FF0000">- 8.2 根据类创建实例</font></h1><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><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="class"><span class="keyword">class</span> <span class="title">Dog</span><span class="params">()</span>:</span></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,name,age)</span>:</span></span><br><span class="line">        <span class="comment">#初始化属性name和age</span></span><br><span class="line">        self.name = name</span><br><span class="line">        self.age = age</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">sit</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#模拟小狗被命令时蹲下</span></span><br><span class="line">        print(self.name.title() + <span class="string">" is now sitting."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">roll_over</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#模拟小狗被命令时打滚</span></span><br><span class="line">        print(self.name.title() + <span class="string">" rolled over!"</span>)</span><br><span class="line"></span><br><span class="line">my_dog = Dog(<span class="string">'willie'</span>,<span class="number">6</span>)</span><br><span class="line">print(<span class="string">"My dog's name is "</span> + my_dog.name.title() + <span class="string">"."</span>)</span><br><span class="line">print(<span class="string">"My dog is "</span> + str(my_dog.age) + <span class="string">" years old."</span>)</span><br></pre></td></tr></table></figure><p>让Python创建一条名字为’willie’,年龄为6的小狗,Python使用实参’willie’和6调用Dog类中的方法<strong>init</strong>()。方法<strong>init</strong>()创建一个表示特定小狗的示例,并使用我们提供的值来设置属性name和age;在访问实例的属性时,可使用句点表示法,比如该例子中的 my_dog.name;最终程序输出结果如下:</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">My dog<span class="string">'s name is Willie.</span></span><br><span class="line"><span class="string">My dog is 6 years old.</span></span><br></pre></td></tr></table></figure><p>调用方法:根据Dog类创建实例后,就可以使用句点表示法来调用Dog类中定义的任何方法:<br><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="class"><span class="keyword">class</span> <span class="title">Dog</span><span class="params">()</span>:</span></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,name,age)</span>:</span></span><br><span class="line">        <span class="comment">#初始化属性name和age</span></span><br><span class="line">        self.name = name</span><br><span class="line">        self.age = age</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">sit</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#模拟小狗被命令时蹲下</span></span><br><span class="line">        print(self.name.title() + <span class="string">" is now sitting."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">roll_over</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#模拟小狗被命令时打滚</span></span><br><span class="line">        print(self.name.title() + <span class="string">" rolled over!"</span>)</span><br><span class="line"></span><br><span class="line">my_dog = Dog(<span class="string">'willie'</span>,<span class="number">6</span>)</span><br><span class="line">my_dog.sit()</span><br><span class="line">my_dog.roll_over()</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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">Willie <span class="keyword">is</span> now sitting.</span><br><span class="line">Willie rolled over!</span><br></pre></td></tr></table></figure></p><p>创建多个实例:可按需求根据类创建任意数量的实例:<br><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></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Dog</span><span class="params">()</span>:</span></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,name,age)</span>:</span></span><br><span class="line">        <span class="comment">#初始化属性name和age</span></span><br><span class="line">        self.name = name</span><br><span class="line">        self.age = age</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">sit</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#模拟小狗被命令时蹲下</span></span><br><span class="line">        print(self.name.title() + <span class="string">" is now sitting."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">roll_over</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#模拟小狗被命令时打滚</span></span><br><span class="line">        print(self.name.title() + <span class="string">" rolled over!"</span>)</span><br><span class="line"></span><br><span class="line">my_dog = Dog(<span class="string">'willie'</span>,<span class="number">6</span>)</span><br><span class="line">your_dog = Dog(<span class="string">'lucy'</span>,<span class="number">8</span>)</span><br><span class="line"></span><br><span class="line">print(<span class="string">"My dog's name is "</span> + my_dog.name.title() + <span class="string">"."</span>)</span><br><span class="line">print(<span class="string">"My dog is "</span> + str(my_dog.age) + <span class="string">" years old."</span>)</span><br><span class="line">my_dog.sit()</span><br><span class="line"></span><br><span class="line">print(<span class="string">"\nYour dog's name is "</span> + your_dog.name.title() + <span class="string">"."</span>)</span><br><span class="line">print(<span class="string">"Your dog is "</span> + str(your_dog.age) + <span class="string">" years old."</span>)</span><br><span class="line">your_dog.roll_over()</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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">My dog<span class="string">'s name is Willie.</span></span><br><span class="line"><span class="string">My dog is 6 years old.</span></span><br><span class="line"><span class="string">Willie is now sitting.</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Your dog'</span>s name <span class="keyword">is</span> Lucy.</span><br><span class="line">Your dog <span class="keyword">is</span> <span class="number">8</span> years old.</span><br><span class="line">Lucy rolled over!</span><br></pre></td></tr></table></figure></p><h1 id="8-3-使用类和实例"><a href="#8-3-使用类和实例" class="headerlink" title=" - 8.3 使用类和实例 "></a><font color="#FF0000"> - 8.3 使用类和实例 </font></h1><p>创建一个表示汽车的类,其中储存了有关汽车的信息,还有一个汇总这些信息的方法:<br><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="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line"></span><br><span class="line">my_new_car = Car(<span class="string">'audi'</span>,<span class="string">'a9'</span>,<span class="string">'2018'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">2018</span> Audi A9</span><br></pre></td></tr></table></figure></p><h1 id="8-3-1-给属性指定默认值"><a href="#8-3-1-给属性指定默认值" class="headerlink" title=" - 8.3.1 给属性指定默认值  "></a><font color="#FF0000"> - 8.3.1 给属性指定默认值  </font></h1><p>类中的每个属性都必须有初始值,如果我们设置了默认值,就无需包含为它提供初始值的形参,下面为8.3的例子添加一个 odometer_reading 的属性,其初值是0,添加一个 odometer_reading() 方法,用于读取汽车的里程表:<br> <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="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line"> </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">read_odomter</span><span class="params">(self)</span>:</span></span><br><span class="line">        print(<span class="string">"This car has "</span> + str(self.odometer_reading) + <span class="string">" miles on it."</span>)</span><br><span class="line"></span><br><span class="line">my_new_car = Car(<span class="string">'audi'</span>,<span class="string">'a9'</span>,<span class="string">'2018'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br><span class="line">my_new_car.read_odomter()</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">2018</span> Audi A9</span><br><span class="line">This car has <span class="number">0</span> miles on it.</span><br></pre></td></tr></table></figure></p><h1 id="8-3-2-修改属性的值"><a href="#8-3-2-修改属性的值" class="headerlink" title=" - 8.3.2 修改属性的值  "></a><font color="#FF0000"> - 8.3.2 修改属性的值  </font></h1><p> 可以以三种不同的方式修改属性的值:直接通过实例进行修改;通过方法进行设置;通过方法进行递增(增加特定的值)</p><p>直接修改属性的值:<br>要修改属性的值,最简单的方法就是通过实例直接访问它,将8.3.1中的例子第7行代码 <code>self.odometer_reading = 0</code> 改为 <code>self.odometer_reading = 66</code>,输出结果如下:<br><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="number">2018</span> Audi A9</span><br><span class="line">This car has <span class="number">66</span> miles on it.</span><br></pre></td></tr></table></figure></p><p>通过方法修改属性的值:<br><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="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">read_odomter</span><span class="params">(self)</span>:</span></span><br><span class="line">        print(<span class="string">"This car has "</span> + str(self.odometer_reading) + <span class="string">" miles on it."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">update_odometer</span><span class="params">(self,mileage)</span>:</span></span><br><span class="line">        self.odometer_reading = mileage</span><br><span class="line">        </span><br><span class="line">my_new_car = Car(<span class="string">'audi'</span>,<span class="string">'a9'</span>,<span class="string">'2018'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br><span class="line"></span><br><span class="line">my_new_car.update_odometer(<span class="number">66</span>)</span><br><span class="line">my_new_car.read_odomter()</span><br></pre></td></tr></table></figure></p><p>对Car类所做的唯一修改就是在第17、18行添加了方法 update_odometer(),这个方法接受一个里程值,并将其储存到 self.odometer_reading 中,在倒数第二行,调用了 update_odometer(),并向它提供了一个实参(该实参对应于方法定义中的形参mileage),它将里程数设置为66,而方法 read_odomter() 打印该读数:<br><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="number">2018</span> Audi A9</span><br><span class="line">This car has <span class="number">66</span> miles on it.</span><br></pre></td></tr></table></figure></p><p>可对方法 update_odometer() 进行扩展,使其能够在修改里程表读数时做一些额外的工作,添加一些逻辑,禁止任何人将里程表读数往回调:<br><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"><span class="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">50</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">read_odomter</span><span class="params">(self)</span>:</span></span><br><span class="line">        print(<span class="string">"This car has "</span> + str(self.odometer_reading) + <span class="string">" miles on it."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">update_odometer</span><span class="params">(self,mileage)</span>:</span></span><br><span class="line">        <span class="keyword">if</span> mileage &gt;= self.odometer_reading:</span><br><span class="line">            self.odometer_reading = mileage</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            print(<span class="string">"You can't roll back an odometer!"</span>)</span><br><span class="line">        </span><br><span class="line">my_new_car = Car(<span class="string">'audi'</span>,<span class="string">'a9'</span>,<span class="string">'2018'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br><span class="line"></span><br><span class="line">my_new_car.update_odometer(<span class="number">33</span>)</span><br><span class="line">my_new_car.read_odomter()</span><br></pre></td></tr></table></figure></p><p>修改 self.odometer_reading 的默认值为50,当我们再次尝试修改其值为33时,由于小于原来的里程,因此无法修改:</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="number">2018</span> Audi A9</span><br><span class="line">You can<span class="string">'t roll back an odometer!</span></span><br><span class="line"><span class="string">This car has 50 miles on it.</span></span><br></pre></td></tr></table></figure><p>通过方法对属性的值进行递增:<br>有时候需要将属性值递增到特定的量,而不是将其设置为全新的值,假设我们购买了一辆二手车,从购买到登记期间增加了100英里的里程,下面的方法让我们能够传递这个增量,并相应地增加里程表读数:<br><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="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">read_odomter</span><span class="params">(self)</span>:</span></span><br><span class="line">        print(<span class="string">"This car has "</span> + str(self.odometer_reading) + <span class="string">" miles on it."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">update_odometer</span><span class="params">(self,mileage)</span>:</span></span><br><span class="line">        <span class="keyword">if</span> mileage &gt;= self.odometer_reading:</span><br><span class="line">            self.odometer_reading = mileage</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            print(<span class="string">"You can't roll back an odometer!"</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">increment_odometer</span><span class="params">(self,miles)</span>:</span></span><br><span class="line">        <span class="comment">#将里程表读数增加指定的量</span></span><br><span class="line">        self.odometer_reading += miles</span><br><span class="line">        </span><br><span class="line">my_new_car = Car(<span class="string">'audi'</span>,<span class="string">'a9'</span>,<span class="string">'2018'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br><span class="line"></span><br><span class="line">my_new_car.update_odometer(<span class="number">6600</span>)</span><br><span class="line">my_new_car.read_odomter()</span><br><span class="line"></span><br><span class="line">my_new_car.increment_odometer(<span class="number">100</span>)</span><br><span class="line">my_new_car.read_odomter()</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">2018</span> Audi A9</span><br><span class="line">This car has <span class="number">6600</span> miles on it.</span><br><span class="line">This car has <span class="number">6700</span> miles on it.</span><br></pre></td></tr></table></figure></p><h1 id="8-4-继承"><a href="#8-4-继承" class="headerlink" title=" - 8.4 继承 "></a><font color="#FF0000"> - 8.4 继承 </font></h1><p>编写类时,并非总是要从空白开始,如果要编写的类是另一个现成类的特殊版本,可使用<font color="#FF0000">继承</font>,一个类<font color="#FF0000">继承</font>另一个类时,它自动获得另一个类的所有属性和方法;原有的类称为<font color="#FF0000">父类</font>,而新类称为<font color="#FF0000">子类</font>,子类<font color="#FF0000">继承</font>了其父类的所有属性和方法,同时还可以定义自己的属性和方法;继承的通用语法大致如下:</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></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ClassName1</span><span class="params">(object)</span>:</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,name1,name2,name3)</span>:</span></span><br><span class="line">        --snip--</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ClassName2</span><span class="params">(ClassName1)</span>:</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,name1,name2,name3)</span>:</span></span><br><span class="line">        super().__init__(name1,name2,name3)</span><br><span class="line">        --snip--</span><br></pre></td></tr></table></figure><h1 id="8-4-1-子类的方法init"><a href="#8-4-1-子类的方法init" class="headerlink" title=" - 8.4.1 子类的方法init()  "></a><font color="#FF0000"> - 8.4.1 子类的方法<strong>init</strong>()  </font></h1> <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="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ElectricCar</span><span class="params">(Car)</span>:</span></span><br><span class="line">    <span class="comment">#电动车的独特之处</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        <span class="comment">#初始化父类的属性</span></span><br><span class="line">        super().__init__(make,model,year)</span><br><span class="line"></span><br><span class="line">my_new_car = ElectricCar(<span class="string">'tesla'</span>,<span class="string">'model s'</span>,<span class="string">'2016'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br></pre></td></tr></table></figure><p>创建子类时,父类必须包含在当前文件中,且位于子类前面,定义了子类 ElectricCar,定义子类时,必须在括号内指定父类名称,方法 <code>__init__()</code>接受创建Car实例所需信息,super() 是一个特殊的函数,帮助Python将父类和子类关联起来,让Python调用 ElectricCar 的父类的方法  <code>__init__()</code>,让 ElectricCar 实例包含父类的所有属性,父类也称为超类(superclass),程序输出结果如下:<br><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="number">2016</span> Tesla Model S</span><br></pre></td></tr></table></figure></p><h1 id="8-4-2-Python-2-7-中的继承"><a href="#8-4-2-Python-2-7-中的继承" class="headerlink" title=" - 8.4.2 Python 2.7 中的继承  "></a><font color="#FF0000"> - 8.4.2 Python 2.7 中的继承  </font></h1><p>在Python 2.7中,ElectricCar类的定义类似于下面这样:<br><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="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">(object)</span>:</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        --snip--</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ElectricCar</span><span class="params">(Car)</span>:</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        super(ElectricCar,self).__init__(make,model,year)</span><br><span class="line">        --snip--</span><br></pre></td></tr></table></figure></p><h1 id="8-4-3-给子类定义属性和方法"><a href="#8-4-3-给子类定义属性和方法" class="headerlink" title=" - 8.4.3 给子类定义属性和方法  "></a><font color="#FF0000"> - 8.4.3 给子类定义属性和方法  </font></h1><p>  让一个类继承另一个类后,可添加区分子类和父类所需的新属性和方法,下面添加一个电动车特有的属性(battery),以及一个描述该属性的方法:</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><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="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ElectricCar</span><span class="params">(Car)</span>:</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        super().__init__(make,model,year)</span><br><span class="line">        self.battery_size = <span class="number">80</span></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">describe_battery</span><span class="params">(self)</span>:</span></span><br><span class="line">        print(<span class="string">"This car has a "</span> + str(self.battery_size) + <span class="string">"-KWh battery."</span>)</span><br><span class="line"></span><br><span class="line">my_new_car = ElectricCar(<span class="string">'tesla'</span>,<span class="string">'model s'</span>,<span class="string">'2016'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br><span class="line">my_new_car.describe_battery()</span><br></pre></td></tr></table></figure><p>输出结果如下:<br><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="number">2016</span> Tesla Model S</span><br><span class="line">This car has a <span class="number">80</span>-KWh battery.</span><br></pre></td></tr></table></figure></p><h1 id="8-4-4-重写父类的方法"><a href="#8-4-4-重写父类的方法" class="headerlink" title=" - 8.4.4 重写父类的方法  "></a><font color="#FF0000"> - 8.4.4 重写父类的方法  </font></h1><p>  要重写父类的方法,只需要在子类中定义一个与要重写的父类方法同名的方法即可,这样,Python将不会考虑这个父类的方法,而只关心在子类中定义的相应方法,假设Car类有一个名为 fill_gas_tank() 的方法,对于电动车来说毫无意义,因此可以重写它:<br><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="class"><span class="keyword">class</span> <span class="title">ElectricCar</span><span class="params">(Car)</span>:</span></span><br><span class="line">    --snip--</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">fill_gas_tank</span><span class="params">(self)</span>:</span></span><br><span class="line">        print(<span class="string">"This car doesn't need a gas tank!"</span>)</span><br></pre></td></tr></table></figure></p><h1 id="8-4-5-将实例用作属性"><a href="#8-4-5-将实例用作属性" class="headerlink" title=" - 8.4.5 将实例用作属性  "></a><font color="#FF0000"> - 8.4.5 将实例用作属性  </font></h1><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="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Battery</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#一次模拟电动车电瓶的简单尝试</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,battery_size=<span class="number">70</span>)</span>:</span></span><br><span class="line">        <span class="comment">#初始化电瓶的属性</span></span><br><span class="line">        self.battery_size = battery_size</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">describe_battery</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条描述电瓶容量的消息</span></span><br><span class="line">        print(<span class="string">"This car has a "</span> + str(self.battery_size) + <span class="string">"-KWh battery."</span>)</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ElectricCar</span><span class="params">(Car)</span>:</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        super().__init__(make,model,year)</span><br><span class="line">        self.battery = Battery()</span><br><span class="line"></span><br><span class="line">my_new_car = ElectricCar(<span class="string">'tesla'</span>,<span class="string">'model s'</span>,<span class="string">'2016'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br><span class="line">my_new_car.battery.describe_battery()</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></pre></td><td class="code"><pre><span class="line"><span class="number">2016</span> Tesla Model S</span><br><span class="line">This car has a <span class="number">70</span>-KWh battery.</span><br></pre></td></tr></table></figure><p>看起来似乎做了多余的工作,但现在我们可以对电瓶添加更多的描述,而且不会导致 ElectricCar 类混乱不堪,下面再给Battery添加一个方法,使其能够根据电瓶容量报告汽车的续航里程:<br><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="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Battery</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#一次模拟电动车电瓶的简单尝试</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,battery_size=<span class="number">70</span>)</span>:</span></span><br><span class="line">        <span class="comment">#初始化电瓶的属性</span></span><br><span class="line">        self.battery_size = battery_size</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">describe_battery</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条描述电瓶容量的消息</span></span><br><span class="line">        print(<span class="string">"This car has a "</span> + str(self.battery_size) + <span class="string">"-KWh battery."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_range</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条消息,指出电瓶的续航里程</span></span><br><span class="line">        <span class="keyword">if</span> self.battery_size == <span class="number">70</span>:</span><br><span class="line">            range = <span class="number">240</span></span><br><span class="line">        <span class="keyword">elif</span> self.battery_size == <span class="number">90</span>:</span><br><span class="line">            range = <span class="number">280</span></span><br><span class="line">        message = <span class="string">"This car can go approximately "</span> + str(range)</span><br><span class="line">        message += <span class="string">" miles on a full charge."</span></span><br><span class="line">        print(message)</span><br><span class="line">        </span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ElectricCar</span><span class="params">(Car)</span>:</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        super().__init__(make,model,year)</span><br><span class="line">        self.battery = Battery()</span><br><span class="line"></span><br><span class="line">my_new_car = ElectricCar(<span class="string">'tesla'</span>,<span class="string">'model s'</span>,<span class="string">'2016'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br><span class="line">my_new_car.battery.describe_battery()</span><br><span class="line">my_new_car.battery.get_range()</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">2016</span> Tesla Model S</span><br><span class="line">This car has a <span class="number">70</span>-KWh battery.</span><br><span class="line">This car can go approximately <span class="number">240</span> miles on a full charge.</span><br></pre></td></tr></table></figure></p><h1 id="8-5-导入类"><a href="#8-5-导入类" class="headerlink" title=" - 8.5 导入类  "></a><font color="#FF0000"> - 8.5 导入类  </font></h1><p>Python允许将类储存在模块中,然后在主程序中导入所需的模块</p><h1 id="8-5-1-导入单个类"><a href="#8-5-1-导入单个类" class="headerlink" title=" - 8.5.1 导入单个类  "></a><font color="#FF0000"> - 8.5.1 导入单个类  </font></h1><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#car.py</span></span><br><span class="line"><span class="comment">#一个用于表示汽车的类</span></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        <span class="comment">#初始化描述汽车的属性</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#返回整洁的描述性名称</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">read_odomter</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条消息,指出汽车的里程</span></span><br><span class="line">        print(<span class="string">"This car has "</span> + str(self.odometer_reading) + <span class="string">" miles on it."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">update_odometer</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#将里程表读数设置为指定的值,拒绝将里程表往回拨</span></span><br><span class="line">        <span class="keyword">if</span> mileage &gt;= self.odometer_reading:</span><br><span class="line">            self.odometer_reading = mileage</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            print(<span class="string">"You can't roll back an odometer!"</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">increment_odometer</span><span class="params">(self,miles)</span>:</span></span><br><span class="line">        <span class="comment">#将里程表读数增加指定的量</span></span><br><span class="line">        self.odometer_reading += miles</span><br></pre></td></tr></table></figure><p>创建另一个文件——my_car.py,在其中导入Car类并创建其实例:<br><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#my_car.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> car <span class="keyword">import</span> Car</span><br><span class="line"></span><br><span class="line">my_new_car = Car(<span class="string">'audi'</span>,<span class="string">'a9'</span>,<span class="string">'2018'</span>)</span><br><span class="line">print(my_new_car.get_descriptive_name())</span><br><span class="line"></span><br><span class="line">my_new_car.odometer_reading = <span class="number">23</span></span><br><span class="line">my_new_car.read_odometer()</span><br></pre></td></tr></table></figure></p><p>import语句让Python打开模块car,并导入其中的Car类,输出结果如下:</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="number">2018</span> Audi A9</span><br><span class="line">This car has <span class="number">23</span> miles on it.</span><br></pre></td></tr></table></figure><h1 id="8-5-2-在一个模块中储存多个类"><a href="#8-5-2-在一个模块中储存多个类" class="headerlink" title=" - 8.5.2 在一个模块中储存多个类  "></a><font color="#FF0000"> - 8.5.2 在一个模块中储存多个类  </font></h1><p>将类Battery和ElectricCar都加入到模块car.py中:<br> <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></pre></td><td class="code"><pre><span class="line"><span class="comment">#car.py</span></span><br><span class="line"><span class="comment">#一组用于表示燃油汽车和电动汽车的类</span></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        <span class="comment">#初始化描述汽车的属性</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#返回整洁的描述性名称</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">read_odometer</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条消息,指出汽车的里程</span></span><br><span class="line">        print(<span class="string">"This car has "</span> + str(self.odometer_reading) + <span class="string">" miles on it."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">update_odometer</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#将里程表读数设置为指定的值,拒绝将里程表往回拨</span></span><br><span class="line">        <span class="keyword">if</span> mileage &gt;= self.odometer_reading:</span><br><span class="line">            self.odometer_reading = mileage</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            print(<span class="string">"You can't roll back an odometer!"</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">increment_odometer</span><span class="params">(self,miles)</span>:</span></span><br><span class="line">        <span class="comment">#将里程表读数增加指定的量</span></span><br><span class="line">        self.odometer_reading += miles</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Battery</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#一次模拟电动车电瓶的简单尝试</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,battery_size=<span class="number">70</span>)</span>:</span></span><br><span class="line">        <span class="comment">#初始化电瓶的属性</span></span><br><span class="line">        self.battery_size = battery_size</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">describe_battery</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条描述电瓶容量的消息</span></span><br><span class="line">        print(<span class="string">"This car has a "</span> + str(self.battery_size) + <span class="string">"-KWh battery."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_range</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条消息,指出电瓶的续航里程</span></span><br><span class="line">        <span class="keyword">if</span> self.battery_size == <span class="number">70</span>:</span><br><span class="line">            range = <span class="number">240</span></span><br><span class="line">        <span class="keyword">elif</span> self.battery_size == <span class="number">90</span>:</span><br><span class="line">            range = <span class="number">280</span></span><br><span class="line">        message = <span class="string">"This car can go approximately "</span> + str(range)</span><br><span class="line">        message += <span class="string">" miles on a full charge."</span></span><br><span class="line">        print(message)</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ElectricCar</span><span class="params">(Car)</span>:</span></span><br><span class="line">    <span class="comment">#模拟电动车的独特之处</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        <span class="comment">#初始化父类的属性,再初始化电动车特有的属性</span></span><br><span class="line">        super().__init__(make,model,year)</span><br><span class="line">        self.battery = Battery()</span><br></pre></td></tr></table></figure></p><p>新建一个my_electric_car.py的文件,导入ElectricCar类,并创建一辆电动车:<br><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#my_electric_car.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> car <span class="keyword">import</span> ElectricCar</span><br><span class="line"></span><br><span class="line">my_tesla = ElectricCar(<span class="string">'tesla'</span>,<span class="string">'model s'</span>,<span class="string">'2016'</span>)</span><br><span class="line"></span><br><span class="line">print(my_tesla.get_descriptive_name())</span><br><span class="line">my_tesla.battery.describe_battery()</span><br><span class="line">my_tesla.battery.get_range()</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">2016</span> Tesla Model S</span><br><span class="line">This car has a <span class="number">70</span>-KWh battery.</span><br><span class="line">This car can go approximately <span class="number">240</span> miles on a full charge.</span><br></pre></td></tr></table></figure></p><h1 id="8-5-3-从一个模块中导入多个类"><a href="#8-5-3-从一个模块中导入多个类" class="headerlink" title=" - 8.5.3 从一个模块中导入多个类  "></a><font color="#FF0000"> - 8.5.3 从一个模块中导入多个类  </font></h1><p>  可根据需要在程序文件中导入任意数量的类,假如我们要在同一个程序中创建普通汽车和电动汽车,就需要将类Car和ElectricCar类都导入,多个类之间用逗号进行分隔:<br> <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></pre></td><td class="code"><pre><span class="line"> <span class="comment">#my_car.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> car <span class="keyword">import</span> Car,ElectricCar</span><br><span class="line"></span><br><span class="line">my_audi = Car(<span class="string">'audi'</span>,<span class="string">'a9'</span>,<span class="string">'2018'</span>)</span><br><span class="line">print(my_audi.get_descriptive_name())</span><br><span class="line"></span><br><span class="line">my_tesla = ElectricCar(<span class="string">'tesla'</span>,<span class="string">'model s'</span>,<span class="string">'2016'</span>)</span><br><span class="line">print(my_tesla.get_descriptive_name())</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">2018</span> Audi A9</span><br><span class="line"><span class="number">2016</span> Tesla Model S</span><br></pre></td></tr></table></figure></p><h1 id="8-5-4-导入整个模块"><a href="#8-5-4-导入整个模块" class="headerlink" title=" - 8.5.4 导入整个模块  "></a><font color="#FF0000"> - 8.5.4 导入整个模块  </font></h1><p>导入整个模块后,需要使用句点表示法访问需要的类:<br><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#my_car.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> car</span><br><span class="line"></span><br><span class="line">my_audi = car.Car(<span class="string">'audi'</span>,<span class="string">'a9'</span>,<span class="string">'2018'</span>)</span><br><span class="line">print(my_audi.get_descriptive_name())</span><br><span class="line"></span><br><span class="line">my_tesla = car.ElectricCar(<span class="string">'tesla'</span>,<span class="string">'model s'</span>,<span class="string">'2016'</span>)</span><br><span class="line">print(my_tesla.get_descriptive_name())</span><br></pre></td></tr></table></figure></p><p>我们导入了整个car模块,需要使用语法 <code>module_name.class_name</code> 访问需要的类,程序输出结果与8.5.3一致:<br><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="number">2018</span> Audi A9</span><br><span class="line"><span class="number">2016</span> Tesla Model S</span><br></pre></td></tr></table></figure></p><h1 id="8-5-5-导入模块中的所有类"><a href="#8-5-5-导入模块中的所有类" class="headerlink" title=" - 8.5.5 导入模块中的所有类  "></a><font color="#FF0000"> - 8.5.5 导入模块中的所有类  </font></h1><p>  要导入模块中的所有类,可使用以下语法:<br><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="keyword">from</span> module_name <span class="keyword">import</span> *</span><br></pre></td></tr></table></figure></p><p>这种导入方法是不推荐的,没有明确指出你使用了模块中的哪些类,还可能引发名称方面的困惑,需要从一个模块中导入很多类时,最好导入整个模块,并使用 <code>module_name.class_name</code> 语法来访问类</p><h1 id="8-5-6-在一个模块中导入另一个模块"><a href="#8-5-6-在一个模块中导入另一个模块" class="headerlink" title=" - 8.5.6 在一个模块中导入另一个模块  "></a><font color="#FF0000"> - 8.5.6 在一个模块中导入另一个模块  </font></h1><p>  有时候需要将类分散到多个模块当中,以免模块太大,或者在同一个模块中储存不相关的类,将类储存在多个模块中时,一个模块中的类可能会依赖于另一个模块中的类,这种情况下,我们可以在前一个模块中导入必要的类,以下例子中,将Car类储存在一个模块当中,并将ElectricCar和Battery类储存在另一个模块当中,将第二个模块命名为electric_car.py,并将ElectricCar和Battery类复制到这个模块中:<br><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#electric_car.py</span></span><br><span class="line"><span class="comment">#一组可用于表示电动汽车的类</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> car <span class="keyword">import</span> Car</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Battery</span><span class="params">()</span>:</span></span><br><span class="line">    <span class="comment">#一次模拟电动车电瓶的简单尝试</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,battery_size=<span class="number">70</span>)</span>:</span></span><br><span class="line">        <span class="comment">#初始化电瓶的属性</span></span><br><span class="line">        self.battery_size = battery_size</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">describe_battery</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条描述电瓶容量的消息</span></span><br><span class="line">        print(<span class="string">"This car has a "</span> + str(self.battery_size) + <span class="string">"-KWh battery."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_range</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条消息,指出电瓶的续航里程</span></span><br><span class="line">        <span class="keyword">if</span> self.battery_size == <span class="number">70</span>:</span><br><span class="line">            range = <span class="number">240</span></span><br><span class="line">        <span class="keyword">elif</span> self.battery_size == <span class="number">90</span>:</span><br><span class="line">            range = <span class="number">280</span></span><br><span class="line">        message = <span class="string">"This car can go approximately "</span> + str(range)</span><br><span class="line">        message += <span class="string">" miles on a full charge."</span></span><br><span class="line">        print(message)</span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">ElectricCar</span><span class="params">(Car)</span>:</span></span><br><span class="line">    <span class="comment">#模拟电动车的独特之处</span></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        <span class="comment">#初始化父类的属性,再初始化电动车特有的属性</span></span><br><span class="line">        super().__init__(make,model,year)</span><br><span class="line">        self.battery = Battery()</span><br></pre></td></tr></table></figure></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><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></pre></td><td class="code"><pre><span class="line"><span class="comment">#car.py</span></span><br><span class="line"><span class="comment">#一个可用于表示汽车的类</span></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Car</span><span class="params">()</span>:</span></span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self,make,model,year)</span>:</span></span><br><span class="line">        <span class="comment">#初始化描述汽车的属性</span></span><br><span class="line">        self.make = make</span><br><span class="line">        self.model = model</span><br><span class="line">        self.year = year</span><br><span class="line">        self.odometer_reading = <span class="number">0</span></span><br><span class="line">        </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">get_descriptive_name</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#返回整洁的描述性名称</span></span><br><span class="line">        long_name = str(self.year) + <span class="string">' '</span> + self.make + <span class="string">' '</span> +self.model</span><br><span class="line">        <span class="keyword">return</span> long_name.title()</span><br><span class="line">    </span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">read_odometer</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#打印一条消息,指出汽车的里程</span></span><br><span class="line">        print(<span class="string">"This car has "</span> + str(self.odometer_reading) + <span class="string">" miles on it."</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">update_odometer</span><span class="params">(self)</span>:</span></span><br><span class="line">        <span class="comment">#将里程表读数设置为指定的值,拒绝将里程表往回拨</span></span><br><span class="line">        <span class="keyword">if</span> mileage &gt;= self.odometer_reading:</span><br><span class="line">            self.odometer_reading = mileage</span><br><span class="line">        <span class="keyword">else</span>:</span><br><span class="line">            print(<span class="string">"You can't roll back an odometer!"</span>)</span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">def</span> <span class="title">increment_odometer</span><span class="params">(self,miles)</span>:</span></span><br><span class="line">        <span class="comment">#将里程表读数增加指定的量</span></span><br><span class="line">        self.odometer_reading += miles</span><br></pre></td></tr></table></figure><p>现在可以分别从每个模块中导入类:<br><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">#my_car.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> car <span class="keyword">import</span> Car</span><br><span class="line"><span class="keyword">from</span> electric_car <span class="keyword">import</span> ElectricCar</span><br><span class="line"></span><br><span class="line">my_audi = Car(<span class="string">'audi'</span>,<span class="string">'a9'</span>,<span class="string">'2018'</span>)</span><br><span class="line">print(my_audi.get_descriptive_name())</span><br><span class="line"></span><br><span class="line">my_tesla = ElectricCar(<span class="string">'tesla'</span>,<span class="string">'model s'</span>,<span class="string">'2016'</span>)</span><br><span class="line">print(my_tesla.get_descriptive_name())</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">2018</span> Audi A9</span><br><span class="line"><span class="number">2016</span> Tesla Model S</span><br></pre></td></tr></table></figure></p><h1 id="8-6-Python标准库"><a href="#8-6-Python标准库" class="headerlink" title=" - 8.6 Python标准库  "></a><font color="#FF0000"> - 8.6 Python标准库  </font></h1><p>Python标准库是一组模块,安装的Python都包含它,我们可以使用标准库中的任何函数和类,只需要在程序的开头包含一条简单的import语句,下面以模块collections中的一个类——OrderedDict(创建字典并记录其中的键-值对的添加顺序)为例:<br><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">#favorite_languages.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> collections <span class="keyword">import</span> OrderedDict</span><br><span class="line"></span><br><span class="line">favorite_languages = OrderedDict()</span><br><span class="line"></span><br><span class="line">favorite_languages [<span class="string">'jen'</span>] = <span class="string">'python'</span></span><br><span class="line">favorite_languages [<span class="string">'sarah'</span>] = <span class="string">'c'</span></span><br><span class="line">favorite_languages [<span class="string">'edward'</span>] = <span class="string">'java'</span></span><br><span class="line">favorite_languages [<span class="string">'anly'</span>] = <span class="string">'python'</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> name,language <span class="keyword">in</span> favorite_languages.items():</span><br><span class="line">    print(name.title() + <span class="string">"'s favorite languages is "</span> +</span><br><span class="line">          language.title() + <span class="string">"."</span>)</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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">Jen<span class="string">'s favorite languages is Python.</span></span><br><span class="line"><span class="string">Sarah'</span>s favorite languages <span class="keyword">is</span> C.</span><br><span class="line">Edward<span class="string">'s favorite languages is Java.</span></span><br><span class="line"><span class="string">Anly'</span>s favorite languages <span class="keyword">is</span> Python.</span><br></pre></td></tr></table></figure></p>]]></content>
    
    <summary type="html">
    
      Python3 【类】
    
    </summary>
    
T
TRHX 已提交
201
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
T
TRHX 已提交
202 203
    
    
T
TRHX 已提交
204
      <category term="类" scheme="https://itrhx.com/tags/%E7%B1%BB/"/>
T
TRHX 已提交
205
    
T
TRHX 已提交
206
      <category term="继承" scheme="https://itrhx.com/tags/%E7%BB%A7%E6%89%BF/"/>
T
TRHX 已提交
207 208 209 210 211
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C07</title>
T
TRHX 已提交
212 213
    <link href="https://itrhx.com/2018/11/03/A13-Python3-self-study-notes-C07/"/>
    <id>https://itrhx.com/2018/11/03/A13-Python3-self-study-notes-C07/</id>
T
TRHX 已提交
214 215 216 217 218 219 220 221 222 223 224
    <published>2018-11-03T14:08:10.447Z</published>
    <updated>2018-11-03T14:11:58.456Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><center><font color="#4094C7" size="4">Python3 自学笔记第七章【函数】</font></center><hr><h1 id="7-1-定义函数"><a href="#7-1-定义函数" class="headerlink" title=" - 7.1 定义函数 "></a><font color="#FF0000"> - 7.1 定义函数 </font></h1><p> 一个简单的函数,命名为 example(),其中,关键字<font color="#FF0000"> def </font>来告诉Python我们要定义一个函数,这就是<font color="#FF0000">函数定义</font></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="function"><span class="keyword">def</span> <span class="title">example</span><span class="params">()</span>:</span></span><br><span class="line">    print(<span class="string">"Hello world!"</span>)</span><br><span class="line">example()</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></pre></td><td class="code"><pre><span class="line">Hello world!</span><br></pre></td></tr></table></figure><h1 id="7-1-1-向函数传递信息"><a href="#7-1-1-向函数传递信息" class="headerlink" title=" - 7.1.1 向函数传递信息 "></a><font color="#FF0000"> - 7.1.1 向函数传递信息 </font></h1><p> 在函数定义 def example() 的括号中添加 username,可以让函数接受我们给 username 指定的任何值,在调用函数时给 username 指定一个值,调用 example() 时,可将一个名字传递给它:</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="function"><span class="keyword">def</span> <span class="title">example</span><span class="params">(username)</span>:</span></span><br><span class="line">    print(<span class="string">"Hello , "</span> + username + <span class="string">'!'</span>)</span><br><span class="line">example(<span class="string">'TRHX'</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></pre></td><td class="code"><pre><span class="line">Hello , TRHX!</span><br></pre></td></tr></table></figure><h1 id="7-1-2-实参和形参"><a href="#7-1-2-实参和形参" class="headerlink" title=" - 7.1.2 实参和形参 "></a><font color="#FF0000"> - 7.1.2 实参和形参 </font></h1><p> 在 7.1.1 的例子中,函数 example() 的定义中,变量 username 是一个<font color="#FF0000">形参</font>——函数完成其工作所需的一项信息,在代码 example(‘TRHX’) 中,值’TRHX’是一个<font color="#FF0000">实参</font>,<font color="#FF0000">实参</font>是调用函数时传递给函数的信息,调用函数时,将要让函数使用的信息放在括号内。在 example(‘TRHX’) 中,将<font color="#FF0000">实参</font> ‘TRHX’ 传递给了函数 example,这个值被储存在<font color="#FF0000">形参</font> username 中</p><h1 id="7-2-传递实参"><a href="#7-2-传递实参" class="headerlink" title=" - 7.2 传递实参 "></a><font color="#FF0000"> - 7.2 传递实参 </font></h1><p>  鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参的方式很多,可使用<font color="#FF0000">位置实参</font>,这要求实参的顺序与形参的顺序相同;也可以使用<font color="#FF0000">关键字实参</font>,其中每个实参都由变量和值组成;还可以使用<font color="#FF0000">列表和字典</font></p><h1 id="7-2-1-位置实参"><a href="#7-2-1-位置实参" class="headerlink" title=" - 7.2.1 位置实参 "></a><font color="#FF0000"> - 7.2.1 位置实参 </font></h1><p>  调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,最简单的方法是基于实参的顺序,这种关联方式被称为位置实参</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="function"><span class="keyword">def</span> <span class="title">describe_pet</span><span class="params">(animal_type , pet_name)</span>:</span></span><br><span class="line">    print(<span class="string">"I have a "</span> + animal_type + <span class="string">"."</span>)</span><br><span class="line">    print(<span class="string">"My "</span> + animal_type + <span class="string">"'s name is "</span> + pet_name.title() + <span class="string">"."</span>)</span><br><span class="line">describe_pet(<span class="string">'hamster'</span> , <span class="string">'harry'</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></pre></td><td class="code"><pre><span class="line">I have a hamster.</span><br><span class="line">My hamste<span class="string">r's name is Harry.</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><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">describe_pet() 即可</span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">describe_pet</span><span class="params">(animal_type , pet_name)</span>:</span></span><br><span class="line">    print(<span class="string">"I have a "</span> + animal_type + <span class="string">"."</span>)</span><br><span class="line">    print(<span class="string">"My "</span> + animal_type + <span class="string">"'s name is "</span> + pet_name.title() + <span class="string">"."</span>)</span><br><span class="line">describe_pet(<span class="string">'hamster'</span> , <span class="string">'harry'</span>)</span><br><span class="line">describe_pet(<span class="string">'dog'</span> , <span class="string">'willi'</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">I have a hamster.</span><br><span class="line">Myhamste<span class="string">r's name is Harry.</span></span><br><span class="line"><span class="string">I have a dog.</span></span><br><span class="line"><span class="string">My dog'</span>s name <span class="keyword">is</span> Willi.</span><br></pre></td></tr></table></figure><h1 id="7-2-2-关键字实参"><a href="#7-2-2-关键字实参" class="headerlink" title=" - 7.2.2 关键字实参 "></a><font color="#FF0000"> - 7.2.2 关键字实参 </font></h1><p>关键字实参是传递给函数的<font color="#FF0000">名称-值对</font>。直接在实参中将名称和值关联起来,不用考虑函数调用中的实参顺序</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"><span class="function"><span class="keyword">def</span> <span class="title">describe_pet</span><span class="params">(animal_type , pet_name)</span>:</span></span><br><span class="line">    print(<span class="string">"I have a "</span> + animal_type + <span class="string">"."</span>)</span><br><span class="line">    print(<span class="string">"My "</span> + animal_type + <span class="string">"'s name is "</span> + pet_name.title() + <span class="string">"."</span>)</span><br><span class="line">describe_pet(animal_type = <span class="string">'hamster'</span> , pet_name = <span class="string">'harry'</span>)</span><br><span class="line">describe_pet(pet_name = <span class="string">'willi'</span> , animal_type = <span class="string">'dog'</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">I have a hamster.</span><br><span class="line">Myhamste<span class="string">r's name is Harry.</span></span><br><span class="line"><span class="string">I have a dog.</span></span><br><span class="line"><span class="string">My dog'</span>s name <span class="keyword">is</span> Willi.</span><br></pre></td></tr></table></figure><h1 id="7-2-3-默认值"><a href="#7-2-3-默认值" class="headerlink" title=" - 7.2.3 默认值 "></a><font color="#FF0000"> - 7.2.3 默认值 </font></h1><p>编写函数时,可给每个形参指定默认值,在调用函数中给形参提供了实参时,Python将使用指定的实参值,否则将使用形参的默认值</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="function"><span class="keyword">def</span> <span class="title">describe_pet</span><span class="params">(pet_name , animal_type = <span class="string">'dog'</span>)</span>:</span></span><br><span class="line">    print(<span class="string">"I have a "</span> + animal_type + <span class="string">"."</span>)</span><br><span class="line">    print(<span class="string">"My "</span> + animal_type + <span class="string">"'s name is "</span> + pet_name.title() + <span class="string">"."</span>)</span><br><span class="line">describe_pet(pet_name = <span class="string">'willi'</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></pre></td><td class="code"><pre><span class="line">I have a dog.</span><br><span class="line">My dog<span class="string">'s name is Willi.</span></span><br></pre></td></tr></table></figure><p>在这个函数定义中,修改了形参的排列顺序,由于给 animal_type 指定了默认值,无需通过实参来指定动物类型,因此在函数调用中只包含一个实参——宠物的名字,然而Python依然将这个实参视为位置实参,因此如果函数调用中只包含宠物的名字,这个实参将关联到函数定义中的第一个形参,这就是需要将 pet_name 放在形参列表开头的原因所在</p><font color="#FF0000">注意:使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参,这让Python依然能够准确地解读位置实参</font><h1 id="7-3-返回值"><a href="#7-3-返回值" class="headerlink" title=" - 7.3 返回值 "></a><font color="#FF0000"> - 7.3 返回值 </font></h1><p>函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值,函数返回的值被称为<font color="#FF0000">返回值</font>,在函数中,<font color="#FF0000">可使用 return 语句将值返回到函数调用的代码行</font></p><h1 id="7-3-1-返回简单值"><a href="#7-3-1-返回简单值" class="headerlink" title=" - 7.3.1 返回简单值 "></a><font color="#FF0000"> - 7.3.1 返回简单值 </font></h1><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="function"><span class="keyword">def</span> <span class="title">name</span><span class="params">(first_name , last_name)</span>:</span></span><br><span class="line">    full_name = first_name + <span class="string">' '</span> + last_name</span><br><span class="line">    <span class="keyword">return</span> full_name.title()</span><br><span class="line">student = name(<span class="string">'jimi'</span> , <span class="string">'hendrix'</span>)</span><br><span class="line">print(student)</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></pre></td><td class="code"><pre><span class="line">Jimi Hendrix</span><br></pre></td></tr></table></figure><h1 id="7-3-2-让实参变成可选的"><a href="#7-3-2-让实参变成可选的" class="headerlink" title=" - 7.3.2 让实参变成可选的 "></a><font color="#FF0000"> - 7.3.2 让实参变成可选的 </font></h1><p>对 7.3.1 的例子进行改进,扩展函数 name,使其还能够处理中间名:</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"><span class="function"><span class="keyword">def</span> <span class="title">name</span><span class="params">(first_name , middle_name , last_name)</span>:</span></span><br><span class="line">    full_name = first_name + <span class="string">' '</span> + middle_name + <span class="string">' '</span> + last_name</span><br><span class="line">    <span class="keyword">return</span> full_name.title()</span><br><span class="line">student = name(<span class="string">'jimi'</span> , <span class="string">'lee'</span> , <span class="string">'hendrix'</span>)</span><br><span class="line">print(student)</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></pre></td><td class="code"><pre><span class="line">Jimi Lee Hendrix</span><br></pre></td></tr></table></figure><p>然而,如果一个人没有中间名,那么在调用这个函数时就会出错,为了让中间名变成可选的,可以给实参 middle_name 指定一个默认值——空字符串,并在用户没有提供中间名时不使用这个实参,注意需要将 middle_name 移到形参列表的末尾:</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></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">name</span><span class="params">(first_name , last_name , middle_name = <span class="string">' '</span>)</span>:</span></span><br><span class="line">    <span class="keyword">if</span> middle_name:</span><br><span class="line">        full_name = first_name + <span class="string">' '</span> + middle_name + <span class="string">' '</span> + last_name</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        full_name = first_name + <span class="string">' '</span> + last_name</span><br><span class="line">    <span class="keyword">return</span> full_name.title()</span><br><span class="line">student = name(<span class="string">'jimi'</span> , <span class="string">'hendrix'</span>)</span><br><span class="line">print(student)</span><br><span class="line">student = name(<span class="string">'jimi'</span> , <span class="string">'hendrix'</span> , <span class="string">'lee'</span> )</span><br><span class="line">print(student)</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></pre></td><td class="code"><pre><span class="line">Jimi   Hendrix</span><br><span class="line">Jimi Lee Hendrix</span><br></pre></td></tr></table></figure><h1 id="7-3-3-返回字典"><a href="#7-3-3-返回字典" class="headerlink" title=" - 7.3.3 返回字典 "></a><font color="#FF0000"> - 7.3.3 返回字典 </font></h1><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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">name</span><span class="params">(first_name , last_name)</span>:</span></span><br><span class="line">    full_name = &#123;<span class="string">'first'</span> : first_name , <span class="string">'last'</span> : last_name&#125;</span><br><span class="line">    <span class="keyword">return</span> full_name</span><br><span class="line">student = name(<span class="string">'jimi'</span> , <span class="string">'hendrix'</span>)</span><br><span class="line">print(student)</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></pre></td><td class="code"><pre><span class="line">&#123;<span class="string">'first'</span>: <span class="string">'jimi'</span>, <span class="string">'last'</span>: <span class="string">'hendrix'</span>&#125;</span><br></pre></td></tr></table></figure><h1 id="7-3-4-结合使用函数和-while-循环"><a href="#7-3-4-结合使用函数和-while-循环" class="headerlink" title=" - 7.3.4 结合使用函数和 while 循环 "></a><font color="#FF0000"> - 7.3.4 结合使用函数和 while 循环 </font></h1><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="function"><span class="keyword">def</span> <span class="title">name</span><span class="params">(first_name , last_name)</span>:</span></span><br><span class="line">    full_name = first_name + <span class="string">' '</span> + last_name</span><br><span class="line">    <span class="keyword">return</span> full_name</span><br><span class="line"><span class="keyword">while</span> <span class="keyword">True</span>:</span><br><span class="line">    print(<span class="string">"\nPlease input your name:"</span>)</span><br><span class="line">    print(<span class="string">"(Enter 'exit' to quit)"</span>)</span><br><span class="line">    f_name = input(<span class="string">"First_name:"</span>)</span><br><span class="line">    <span class="keyword">if</span> f_name == <span class="string">'exit'</span>:</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line">    l_name = input(<span class="string">"Last_name:"</span>)</span><br><span class="line">    <span class="keyword">if</span> l_name == <span class="string">'exit'</span>:</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line">    student = name(f_name , l_name)</span><br><span class="line">    print(student)</span><br><span class="line">    print(<span class="string">"Hello, "</span> + student.title() + <span class="string">"!"</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><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><br><span class="line">Please input your name:</span><br><span class="line">(Enter <span class="string">'exit'</span> to quit)</span><br><span class="line">First_name:jimi</span><br><span class="line">Last_name:hendrix</span><br><span class="line">jimi hendrix</span><br><span class="line">Hello, Jimi Hendrix!</span><br><span class="line"></span><br><span class="line">Please input your name:</span><br><span class="line">(Enter <span class="string">'exit'</span> to quit)</span><br><span class="line">First_name:exit</span><br></pre></td></tr></table></figure><h1 id="7-4-传递列表"><a href="#7-4-传递列表" class="headerlink" title=" - 7.4 传递列表 "></a><font color="#FF0000"> - 7.4 传递列表 </font></h1><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"><span class="function"><span class="keyword">def</span> <span class="title">users</span><span class="params">(names)</span>:</span></span><br><span class="line">    <span class="keyword">for</span> name <span class="keyword">in</span> names:</span><br><span class="line">        message = <span class="string">"Hello, "</span> + name.title() + <span class="string">"!"</span></span><br><span class="line">        print(message)</span><br><span class="line">usernames = [<span class="string">'hannah'</span> , <span class="string">'tony'</span> , <span class="string">'margot'</span>]</span><br><span class="line">users(usernames)</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">Hello, Hannah!</span><br><span class="line">Hello, Tony!</span><br><span class="line">Hello, Margot!</span><br></pre></td></tr></table></figure><h1 id="7-4-1-在函数中修改列表"><a href="#7-4-1-在函数中修改列表" class="headerlink" title=" - 7.4.1 在函数中修改列表 "></a><font color="#FF0000"> - 7.4.1 在函数中修改列表 </font></h1><p>将列表传递给函数后,函数就可以对其进行修改,在函数中对这个列表所做的任何修改都是永久性的</p><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><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">unprinted_designs = [<span class="string">'iphone case'</span> , <span class="string">'robot pendannt'</span> , <span class="string">'dodecahedron'</span>]</span><br><span class="line">completed_models = []</span><br><span class="line"></span><br><span class="line"><span class="comment">#模拟打印每个设计,直到没有未打印的设计为止</span></span><br><span class="line"><span class="comment">#打印每个设计后,都将其移到列表completed_models中</span></span><br><span class="line"><span class="keyword">while</span> unprinted_designs:</span><br><span class="line">    current_design = unprinted_designs.pop()</span><br><span class="line">    </span><br><span class="line">    <span class="comment">#模拟根据设计制作3D打印模型的过程</span></span><br><span class="line">    print(<span class="string">"Printing model: "</span> + current_design)</span><br><span class="line">    completed_models.append(current_design)</span><br><span class="line">    </span><br><span class="line"><span class="comment">#显示打印好的所有模型</span></span><br><span class="line">print(<span class="string">"\nThe following models have been printed: "</span>)</span><br><span class="line"><span class="keyword">for</span> completed_model <span class="keyword">in</span> completed_models:</span><br><span class="line">    print(completed_model)</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><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">Printing model: dodecahedron</span><br><span class="line">Printing model: robot pendannt</span><br><span class="line">Printing model: iphone case</span><br><span class="line"></span><br><span class="line">The following models have been printed: </span><br><span class="line">dodecahedron</span><br><span class="line">robot pendannt</span><br><span class="line">iphone case</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><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></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">print_models</span><span class="params">(unprinted_designs , completed_models)</span>:</span></span><br><span class="line"><span class="comment">#模拟打印每个设计,直到没有未打印的设计为止</span></span><br><span class="line"><span class="comment">#打印每个设计后,都将其移到列表completed_models中</span></span><br><span class="line">    <span class="keyword">while</span> unprinted_designs:</span><br><span class="line">        current_design = unprinted_designs.pop()</span><br><span class="line">    </span><br><span class="line">        <span class="comment">#模拟根据设计制作3D打印模型的过程</span></span><br><span class="line">        print(<span class="string">"Printing model: "</span> + current_design)</span><br><span class="line">        completed_models.append(current_design)</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">show_completed_models</span><span class="params">(completed_models)</span>:</span>    </span><br><span class="line"><span class="comment">#显示打印好的所有模型</span></span><br><span class="line">    print(<span class="string">"\nThe following models have been printed: "</span>)</span><br><span class="line">    <span class="keyword">for</span> completed_model <span class="keyword">in</span> completed_models:</span><br><span class="line">        print(completed_model)</span><br><span class="line"></span><br><span class="line">unprinted_designs = [<span class="string">'iphone case'</span> , <span class="string">'robot pendannt'</span> , <span class="string">'dodecahedron'</span>]</span><br><span class="line">completed_models = []</span><br><span class="line"></span><br><span class="line">print_models(unprinted_designs , completed_models)</span><br><span class="line">show_completed_models(completed_models)</span><br></pre></td></tr></table></figure><h1 id="7-4-2-禁止函数修改列表"><a href="#7-4-2-禁止函数修改列表" class="headerlink" title=" - 7.4.2 禁止函数修改列表 "></a><font color="#FF0000"> - 7.4.2 禁止函数修改列表 </font></h1><p>有时候需要禁止函数修改列表,拿 7.4.1 的例子来说,我们打印了所有设计后,也要保留原来的未打印的设计列表,以供备案,但由于我们将所有的设计都移出了 unprinted_designs,这个列表变成了空的,原来的列表没有了,为了解决这个问题,可向函数传递列表的副本而不是原件;这样函数所做的任何修改都只影响副本,而丝毫不影响原件,要将列表的副本传递给函数,可以像下面这样做:</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">function_name(list_name[:])</span><br></pre></td></tr></table></figure><p>切片表示法 [:] 创建列表的副本,在 7.4.1 的例子中如果不想清空未打印的设计列表,可像下面这样调用 print_models():</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">print_models(unprinted_designs[:] , completed_models)</span><br></pre></td></tr></table></figure><h1 id="7-5-传递任意数量的实参"><a href="#7-5-传递任意数量的实参" class="headerlink" title=" - 7.5 传递任意数量的实参 "></a><font color="#FF0000"> - 7.5 传递任意数量的实参 </font></h1><p>Python允许函数从调用语句中收集任意数量的实参</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="function"><span class="keyword">def</span> <span class="title">make_pizza</span><span class="params">(*toppings)</span>:</span></span><br><span class="line">    print(toppings)</span><br><span class="line">make_pizza(<span class="string">'pepperoni'</span>)</span><br><span class="line">make_pizza(<span class="string">'mushrooms'</span> , <span class="string">'green peppers'</span> , <span class="string">'extra cheese'</span>)</span><br></pre></td></tr></table></figure><p>形参名 <code>*toppings</code> 中的星号让Python创建一个名为 toppings 的空元组,并将收到的所有值都封装到这个元组中,函数体内的print语句通过生成输出来证明Python能够处理使用一个值调用函数的情形,也能处理使用三个值来调用函数的情形,输出结果如下:</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="string">'pepperoni'</span>,)</span><br><span class="line">(<span class="string">'mushrooms'</span>, <span class="string">'green peppers'</span>, <span class="string">'extra cheese'</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><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">make_pizza</span><span class="params">(*toppings)</span>:</span></span><br><span class="line">    print(<span class="string">"\nMaking a pizza with the followiing toppings: "</span>)</span><br><span class="line">    <span class="keyword">for</span> topping <span class="keyword">in</span> toppings:</span><br><span class="line">        print(<span class="string">"- "</span> + topping)</span><br><span class="line">make_pizza(<span class="string">'pepperoni'</span>)</span><br><span class="line">make_pizza(<span class="string">'mushrooms'</span> , <span class="string">'green peppers'</span> , <span class="string">'extra cheese'</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><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><br><span class="line">Making a pizza <span class="keyword">with</span> the followiing toppings: </span><br><span class="line">- pepperoni</span><br><span class="line"></span><br><span class="line">Making a pizza <span class="keyword">with</span> the followiing toppings: </span><br><span class="line">- mushrooms</span><br><span class="line">- green peppers</span><br><span class="line">- extra cheese</span><br></pre></td></tr></table></figure><h1 id="7-5-1-结合使用位置实参和任意数量实参"><a href="#7-5-1-结合使用位置实参和任意数量实参" class="headerlink" title=" - 7.5.1 结合使用位置实参和任意数量实参 "></a><font color="#FF0000"> - 7.5.1 结合使用位置实参和任意数量实参 </font></h1><p>如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中:</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"><span class="function"><span class="keyword">def</span> <span class="title">make_pizza</span><span class="params">(size , *toppings)</span>:</span></span><br><span class="line">    print(<span class="string">"\nMaking a "</span> + str(size) + <span class="string">"-inch pizza with the followiing toppings: "</span>)</span><br><span class="line">    <span class="keyword">for</span> topping <span class="keyword">in</span> toppings:</span><br><span class="line">        print(<span class="string">"- "</span> + topping)</span><br><span class="line">make_pizza(<span class="number">16</span> , <span class="string">'pepperoni'</span>)</span><br><span class="line">make_pizza(<span class="number">18</span> , <span class="string">'mushrooms'</span> , <span class="string">'green peppers'</span> , <span class="string">'extra cheese'</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><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><br><span class="line">Making a <span class="number">16</span>-inch pizza <span class="keyword">with</span> the followiing toppings: </span><br><span class="line">- pepperoni</span><br><span class="line"></span><br><span class="line">Making a <span class="number">18</span>-inch pizza <span class="keyword">with</span> the followiing toppings: </span><br><span class="line">- mushrooms</span><br><span class="line">- green peppers</span><br><span class="line">- extra cheese</span><br></pre></td></tr></table></figure><h1 id="7-5-2-使用任意数量的关键字实参"><a href="#7-5-2-使用任意数量的关键字实参" class="headerlink" title=" - 7.5.2 使用任意数量的关键字实参 "></a><font color="#FF0000"> - 7.5.2 使用任意数量的关键字实参 </font></h1><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><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="function"><span class="keyword">def</span> <span class="title">build_profile</span><span class="params">(first , last , **user_info)</span>:</span></span><br><span class="line">    <span class="comment">#创建一个字典,其中包括我们知道的有关用户的一切</span></span><br><span class="line">    profile = &#123;&#125;</span><br><span class="line">    profile[<span class="string">'first_name'</span>] = first</span><br><span class="line">    profile[<span class="string">'last_name'</span>] = last</span><br><span class="line">    <span class="keyword">for</span> key , value <span class="keyword">in</span> user_info.items():</span><br><span class="line">        profile[key] = value</span><br><span class="line">    <span class="keyword">return</span> profile</span><br><span class="line">user_profile = build_profile(<span class="string">'albert'</span> , <span class="string">'einstein'</span> , location = <span class="string">'princeton'</span> , field = <span class="string">'physics'</span>)</span><br><span class="line">print(user_profile)</span><br></pre></td></tr></table></figure><p>形参 <code>**user_info</code> 中的两个星号让Python创建一个名为 user_info 的空字典,并将收到的所有名称-值对都封装到这个字典中,在这个函数中,可以像访问其他字典那样访问 user_info 中的名字-值对,程序运行结果如下:</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">&#123;<span class="string">'first_name'</span>: <span class="string">'albert'</span>, <span class="string">'last_name'</span>: <span class="string">'einstein'</span>, <span class="string">'location'</span>: <span class="string">'princeton'</span>, <span class="string">'field'</span>: <span class="string">'physics'</span>&#125;</span><br></pre></td></tr></table></figure><h1 id="7-6-将函数储存在模块中"><a href="#7-6-将函数储存在模块中" class="headerlink" title=" - 7.6 将函数储存在模块中 "></a><font color="#FF0000"> - 7.6 将函数储存在模块中 </font></h1><p>更进一步,我们可以把函数储存在被称为<font color="#FF0000">模块</font>的独立文件中,再将模块导入到主程序中,import 语句运行在当前运行的程序文件中使用模块中的代码</p><h1 id="7-6-1-导入整个模块"><a href="#7-6-1-导入整个模块" class="headerlink" title=" - 7.6.1 导入整个模块 "></a><font color="#FF0000"> - 7.6.1 导入整个模块 </font></h1><p>要让函数是可导入的,得先创建模块,<font color="#FF0000">模块是扩展名为.py的文件</font>,包含要导入到程序中的代码,下面将创建一个包含函数 make_pizza() 的模块</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></pre></td><td class="code"><pre><span class="line"><span class="comment">#pizza.py</span></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">make_pizza</span><span class="params">(size , *toppings)</span>:</span></span><br><span class="line">    <span class="comment">#概述要制作的比萨</span></span><br><span class="line">    print(<span class="string">"\nMaking a "</span> + str(size) + <span class="string">"-inch pizza with the followiing toppings: "</span>)</span><br><span class="line">    <span class="keyword">for</span> topping <span class="keyword">in</span> toppings:</span><br><span class="line">        print(<span class="string">"- "</span> + topping)</span><br></pre></td></tr></table></figure><p>接下来,我们在 pizza.py 所在的目录中创建另一个名为 making_pizzas.py 的文件,在这个文件中导入刚刚创建的模块,在调用 make_pizza() 两次:</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"><span class="comment">#making_pizzas.py</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> pizza</span><br><span class="line">pizza.make_pizza(<span class="number">16</span> , <span class="string">'pepperoni'</span>)</span><br><span class="line">pizza.make_pizza(<span class="number">18</span> , <span class="string">'mushrooms'</span> , <span class="string">'green peppers'</span> , <span class="string">'extra cheese'</span>)</span><br></pre></td></tr></table></figure><p>Python在读取这个文件时,代码行 import pizza 让Python打开文件 pizza.py,并在幕后将其中所有函数都复制到这个程序中,在 making_pizzas.py 中,可以使用 pizza.py 中定义的所有函数,要调用被导入的模块中的函数,可指定导入的模块的名称 pizza 和函数名 make_pizza(),并使用句点分隔它们,最终运行结果与原程序相同:</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></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">Making a <span class="number">16</span>-inch pizza <span class="keyword">with</span> the followiing toppings: </span><br><span class="line">- pepperoni</span><br><span class="line"></span><br><span class="line">Making a <span class="number">18</span>-inch pizza <span class="keyword">with</span> the followiing toppings: </span><br><span class="line">- mushrooms</span><br><span class="line">- green peppers</span><br><span class="line">- extra cheese</span><br></pre></td></tr></table></figure><h1 id="7-6-2-导入特定的函数"><a href="#7-6-2-导入特定的函数" class="headerlink" title=" - 7.6.2 导入特定的函数 "></a><font color="#FF0000"> - 7.6.2 导入特定的函数 </font></h1><p>导入模块中特定的函数,可以使用以下语法:</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="keyword">from</span> module_name <span class="keyword">import</span> function_name</span><br></pre></td></tr></table></figure><p>通过用逗号分隔函数名,可根据需要从模块中导入任意数量的函数:<br><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="keyword">from</span> module_name <span class="keyword">import</span> function_0 , function_1 , function_2</span><br></pre></td></tr></table></figure></p><p>以前面的 making_pizzas.py 为例,如果只想导入要使用的函数,代码类似于下面这样:<br><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">from</span> pizza <span class="keyword">import</span> make_pizza</span><br><span class="line"></span><br><span class="line">make_pizza(<span class="number">16</span> , <span class="string">'pepperoni'</span>)</span><br><span class="line">make_pizza(<span class="number">18</span> , <span class="string">'mushrooms'</span> , <span class="string">'green peppers'</span> , <span class="string">'extra cheese'</span>)</span><br></pre></td></tr></table></figure></p><h1 id="7-6-3-使用-as-给函数指定别名"><a href="#7-6-3-使用-as-给函数指定别名" class="headerlink" title=" - 7.6.3 使用 as 给函数指定别名 "></a><font color="#FF0000"> - 7.6.3 使用 as 给函数指定别名 </font></h1><p>如果要导入的函数名称可能与程序中现有的名称冲突,或者函数的名称太长,可指定简短而独一无二的别名,要给函数指定别名,需要在导入它的时候这样做,通用语法为:<br><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="keyword">from</span> module_name <span class="keyword">import</span> function_name <span class="keyword">as</span> fn</span><br></pre></td></tr></table></figure></p><p>同样以前面的 making_pizzas.py 为例:<br><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">from</span> pizza <span class="keyword">import</span> make_pizza <span class="keyword">as</span> mp</span><br><span class="line"></span><br><span class="line">mp(<span class="number">16</span> , <span class="string">'pepperoni'</span>)</span><br><span class="line">mp(<span class="number">18</span> , <span class="string">'mushrooms'</span> , <span class="string">'green peppers'</span> , <span class="string">'extra cheese'</span>)</span><br></pre></td></tr></table></figure></p><h1 id="7-6-4-使用-as-给模块指定别名"><a href="#7-6-4-使用-as-给模块指定别名" class="headerlink" title=" - 7.6.4 使用 as 给模块指定别名 "></a><font color="#FF0000"> - 7.6.4 使用 as 给模块指定别名 </font></h1><p>我们还可以给模块指定别名,通用语法为:<br><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="keyword">import</span> module_name <span class="keyword">as</span> mn</span><br></pre></td></tr></table></figure></p><p>同样以前面的 making_pizzas.py 为例:<br><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">import</span> pizza <span class="keyword">as</span> p</span><br><span class="line"></span><br><span class="line">p.make_pizza(<span class="number">16</span> , <span class="string">'pepperoni'</span>)</span><br><span class="line">p.make_pizza(<span class="number">18</span> , <span class="string">'mushrooms'</span> , <span class="string">'green peppers'</span> , <span class="string">'extra cheese'</span>)</span><br></pre></td></tr></table></figure></p><h1 id="7-6-5-导入模块中的所有函数"><a href="#7-6-5-导入模块中的所有函数" class="headerlink" title=" - 7.6.5 导入模块中的所有函数 "></a><font color="#FF0000"> - 7.6.5 导入模块中的所有函数 </font></h1><p>导入模块中所有函数的通用语法为:<br><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="keyword">from</span> module_name <span class="keyword">import</span> *</span><br></pre></td></tr></table></figure></p><p>同样以前面的 making_pizzas.py 为例:<br><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">from</span> pizza <span class="keyword">import</span> *</span><br><span class="line"></span><br><span class="line">make_pizza(<span class="number">16</span> , <span class="string">'pepperoni'</span>)</span><br><span class="line">make_pizza(<span class="number">18</span> , <span class="string">'mushrooms'</span> , <span class="string">'green peppers'</span> , <span class="string">'extra cheese'</span>)</span><br></pre></td></tr></table></figure></p><p>import 语句中的星号让Python将模块 pizza 中的每个函数都复制到这个程序中,由于导入了每个函数,可通过名称来调用每个函数,而不需要用句点表示法,然而,如果模块中有函数的名称与项目中的名称相同,就有可能导致意想不到的结果,<font color="#FF0000">最佳的做法是,要么只导入我们需要使用的函数,要么导入整个模块并使用句点表示法</font></p>]]></content>
    
    <summary type="html">
    
      Python3 【函数】
    
    </summary>
    
T
TRHX 已提交
225
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
T
TRHX 已提交
226 227
    
    
T
TRHX 已提交
228
      <category term="函数" scheme="https://itrhx.com/tags/%E5%87%BD%E6%95%B0/"/>
T
TRHX 已提交
229
    
T
TRHX 已提交
230
      <category term="模块" scheme="https://itrhx.com/tags/%E6%A8%A1%E5%9D%97/"/>
T
TRHX 已提交
231 232 233 234 235
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C06</title>
T
TRHX 已提交
236 237
    <link href="https://itrhx.com/2018/10/30/A12-Python3-self-study-notes-C06/"/>
    <id>https://itrhx.com/2018/10/30/A12-Python3-self-study-notes-C06/</id>
T
TRHX 已提交
238 239 240 241 242 243 244 245 246 247 248
    <published>2018-10-30T05:38:20.264Z</published>
    <updated>2018-10-30T05:44:13.126Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><center><font color="#4094C7" size="4">Python3 自学笔记第六章【用户输入和 while 循环】</font></center><hr><h1 id="6-1-函数-input-的工作原理"><a href="#6-1-函数-input-的工作原理" class="headerlink" title=" - 6.1 函数 input() 的工作原理 "></a><font color="#FF0000"> - 6.1 函数 input() 的工作原理 </font></h1><p> 函数 input() 让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其储存在一个变量当中,以方便你使用;函数 input() 返回为 string 类型</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">message = input(<span class="string">"Please tell me your name:"</span>)</span><br><span class="line">print(<span class="string">"Hello , "</span> + message + <span class="string">"!"</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></pre></td><td class="code"><pre><span class="line">Please tell me your name:anliy</span><br><span class="line">Hello , anliy!</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">message = <span class="string">"Please tell me your name so that we can personalize the messages you see."</span></span><br><span class="line">message += <span class="string">"\nWhat's your first name?"</span></span><br><span class="line">name = input(message)</span><br><span class="line">print(<span class="string">"\nHello , "</span> + name + <span class="string">"!"</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">Please tell me your name so that we can personalize the messages you see.</span><br><span class="line">What<span class="string">'s your first name?trhx</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Hello , trhx!</span></span><br></pre></td></tr></table></figure><h1 id="6-1-1-使用-int-来获取数值输入"><a href="#6-1-1-使用-int-来获取数值输入" class="headerlink" title=" - 6.1.1 使用 int() 来获取数值输入 "></a><font color="#FF0000"> - 6.1.1 使用 int() 来获取数值输入 </font></h1><p> 使用函数 input() 时,Python会将用户输入解读为字符串:</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="meta">&gt;&gt;&gt; </span>age = input(<span class="string">"How old are you?"</span>)</span><br><span class="line">How old are you?19</span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>age</span><br><span class="line"><span class="string">'19'</span></span><br></pre></td></tr></table></figure><p>为了解决这个问题,可以使用函数 int() ,它让Python将输入视为数值:</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"><span class="meta">&gt;&gt;&gt; </span>age = input(<span class="string">"How old are you?"</span>)</span><br><span class="line">How old are you?19</span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>age = int(age)</span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>age</span><br><span class="line"><span class="number">19</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><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">age = input(<span class="string">"Please tell me your age:"</span>)</span><br><span class="line">age = int(age)</span><br><span class="line"><span class="keyword">if</span> age &gt;= <span class="number">18</span>:</span><br><span class="line">    print(<span class="string">"You are old enough to go to the Internet bar!"</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    print(<span class="string">"You are not old enough to go to Internet bar!"</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></pre></td><td class="code"><pre><span class="line">Please tell me your age:<span class="number">17</span></span><br><span class="line">You are <span class="keyword">not</span> old enough to go to Internet bar!</span><br></pre></td></tr></table></figure><h1 id="6-1-2-求模运算符"><a href="#6-1-2-求模运算符" class="headerlink" title=" - 6.1.2 求模运算符 "></a><font color="#FF0000"> - 6.1.2 求模运算符 </font></h1><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><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="meta">&gt;&gt;&gt; </span><span class="number">4</span> % <span class="number">3</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span><span class="number">5</span> % <span class="number">3</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span><span class="number">8</span> % <span class="number">2</span></span><br><span class="line"><span class="number">0</span></span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span><span class="number">7</span> % <span class="number">3</span></span><br><span class="line"><span class="number">1</span></span><br></pre></td></tr></table></figure><h1 id="6-1-3-在-Python-2-7-中获取输入"><a href="#6-1-3-在-Python-2-7-中获取输入" class="headerlink" title=" - 6.1.3 在 Python 2.7 中获取输入 "></a><font color="#FF0000"> - 6.1.3 在 Python 2.7 中获取输入 </font></h1><p> 如果使用 Python 2.7,应该使用函数 <code>raw_input()</code> 来提示用户输入,这个函数与 Python 3 中的 <code>input()</code> 一样,也将输入解读为字符串;Python 2.7 也包含函数 <code>input()</code>,但它将用户输入解读为Python代码,并尝试运行它们</p><h1 id="6-2-while-循环"><a href="#6-2-while-循环" class="headerlink" title=" - 6.2 while 循环 "></a><font color="#FF0000"> - 6.2 while 循环 </font></h1><p>  for 循环用于针对集合中的每一个元素的一个代码块,而 while 循环不断地运行,直到指定的条件不满足为止</p><h1 id="6-2-1-使用-while-循环"><a href="#6-2-1-使用-while-循环" class="headerlink" title=" - 6.2.1 使用 while 循环 "></a><font color="#FF0000"> - 6.2.1 使用 while 循环 </font></h1><p> 一个简单的 while 循环:</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">num = <span class="number">1</span></span><br><span class="line"><span class="keyword">while</span> num &lt; <span class="number">5</span>:</span><br><span class="line">    print(num)</span><br><span class="line">    num += <span class="number">1</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"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br></pre></td></tr></table></figure><h1 id="6-2-2-让用户选择退出循环"><a href="#6-2-2-让用户选择退出循环" class="headerlink" title=" - 6.2.2 让用户选择退出循环 "></a><font color="#FF0000"> - 6.2.2 让用户选择退出循环 </font></h1><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">prompt = <span class="string">"\nTell me something, and I will repeat it back to you:"</span></span><br><span class="line">prompt += <span class="string">"\nEnter 'quit' to end the program."</span></span><br><span class="line">message = <span class="string">" "</span></span><br><span class="line"><span class="keyword">while</span> message != <span class="string">'quit'</span>:</span><br><span class="line">    message = input(prompt)</span><br><span class="line">    print(message)</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><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><br><span class="line">Tell me something, <span class="keyword">and</span> I will repeat it back to you:</span><br><span class="line">Enter <span class="string">'quit'</span> to end the program.Hello everyone!</span><br><span class="line">Hello everyone!</span><br><span class="line"></span><br><span class="line">Tell me something, <span class="keyword">and</span> I will repeat it back to you:</span><br><span class="line">Enter <span class="string">'quit'</span> to end the program.Hello again!</span><br><span class="line">Hello again!</span><br><span class="line"></span><br><span class="line">Tell me something, <span class="keyword">and</span> I will repeat it back to you:</span><br><span class="line">Enter <span class="string">'quit'</span> to end the program.quit</span><br><span class="line">quit</span><br></pre></td></tr></table></figure><h1 id="6-2-3-使用标志"><a href="#6-2-3-使用标志" class="headerlink" title=" - 6.2.3 使用标志 "></a><font color="#FF0000"> - 6.2.3 使用标志 </font></h1><p> 在要求很多条件都满足才继续运行的程序中,可以定义一个变量,用于判断整个程序是否处于活动状态,这个变量称为<font color="#FF0000">标志</font></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></pre></td><td class="code"><pre><span class="line">prompt = <span class="string">"\nTell me something, and I will repeat it back to you:"</span></span><br><span class="line">prompt += <span class="string">"\nEnter 'quit' to end the program."</span></span><br><span class="line">active = <span class="keyword">True</span></span><br><span class="line"><span class="keyword">while</span> active:</span><br><span class="line">    message = input(prompt)</span><br><span class="line">    <span class="keyword">if</span> message == <span class="string">'quit'</span>:</span><br><span class="line">        active = <span class="keyword">False</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        print(message)</span><br></pre></td></tr></table></figure><p>运行结果与6.2.2一致</p><h1 id="6-2-4-使用-break-退出循环"><a href="#6-2-4-使用-break-退出循环" class="headerlink" title=" - 6.2.4 使用 break 退出循环 "></a><font color="#FF0000"> - 6.2.4 使用 break 退出循环 </font></h1><p> 要立即退出 while 循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用 break 语句,break 语句用于控制程序流程,可使用它来控制哪些代码将执行,哪些代码不执行</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></pre></td><td class="code"><pre><span class="line">prompt = <span class="string">"\nPlease enter the name of a city you have visited:"</span></span><br><span class="line">prompt += <span class="string">"\nEnter 'quit' when you are finished."</span></span><br><span class="line">active = <span class="keyword">True</span></span><br><span class="line"><span class="keyword">while</span> active:</span><br><span class="line">    city = input(prompt)</span><br><span class="line">    <span class="keyword">if</span> city == <span class="string">'quit'</span>:</span><br><span class="line">        <span class="keyword">break</span></span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        print(<span class="string">"I'd love to go to "</span> + city.title() + <span class="string">"!"</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><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><br><span class="line">Please enter the name of a city you have visited:</span><br><span class="line">Enter <span class="string">'quit'</span> when you are finished.Shanghai</span><br><span class="line">I<span class="string">'d love to go to Shanghai!</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Please enter the name of a city you have visited:</span></span><br><span class="line"><span class="string">Enter '</span>quit<span class="string">' when you are finished.Beijing</span></span><br><span class="line"><span class="string">I'</span>d love to go to Beijing!</span><br><span class="line"></span><br><span class="line">Please enter the name of a city you have visited:</span><br><span class="line">Enter <span class="string">'quit'</span> when you are finished.quit</span><br></pre></td></tr></table></figure><p>在任何Python循环中都可以使用break语句,例如,可以使用break语句来退出遍历列表或字典</p><h1 id="6-2-5-在循环中使用-continue"><a href="#6-2-5-在循环中使用-continue" class="headerlink" title=" - 6.2.5 在循环中使用 continue "></a><font color="#FF0000"> - 6.2.5 在循环中使用 continue </font></h1><p> 要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用 continue 语句,它不像 break 语句那样不再执行余下的代码并退出整个循环,例如,从1到10只打印其中奇数:</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">number =<span class="number">0</span></span><br><span class="line"><span class="keyword">while</span> number &lt; <span class="number">10</span>:</span><br><span class="line">    number += <span class="number">1</span></span><br><span class="line">    <span class="keyword">if</span> number % <span class="number">2</span> == <span class="number">0</span>:</span><br><span class="line">        <span class="keyword">continue</span></span><br><span class="line">    print(number)</span><br></pre></td></tr></table></figure><p>输出结果如下:<br><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="number">1</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">5</span></span><br><span class="line"><span class="number">7</span></span><br><span class="line"><span class="number">9</span></span><br></pre></td></tr></table></figure></p><h1 id="6-3-使用-while-循环来处理列表和字典"><a href="#6-3-使用-while-循环来处理列表和字典" class="headerlink" title=" - 6.3 使用 while 循环来处理列表和字典 "></a><font color="#FF0000"> - 6.3 使用 while 循环来处理列表和字典 </font></h1><p>for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素,要在遍历列表的同时对其进行修改,可使用while循环</p><h1 id="6-3-1-在列表之间移动元素"><a href="#6-3-1-在列表之间移动元素" class="headerlink" title=" - 6.3.1 在列表之间移动元素 "></a><font color="#FF0000"> - 6.3.1 在列表之间移动元素 </font></h1><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></pre></td><td class="code"><pre><span class="line">unconfirmed_users = [<span class="string">'alice'</span> , <span class="string">'brian'</span> , <span class="string">'candace'</span>]</span><br><span class="line">confirmed_users = []</span><br><span class="line"><span class="keyword">while</span> unconfirmed_users:</span><br><span class="line">    current_user = unconfirmed_users.pop()</span><br><span class="line">    print(<span class="string">"Verifying user: "</span> + current_user.title())</span><br><span class="line">    confirmed_users.append(current_user)</span><br><span class="line">print(<span class="string">"\nThe following users have been confirmed:"</span>)</span><br><span class="line"><span class="keyword">for</span> confirmed_user <span class="keyword">in</span> confirmed_users:</span><br><span class="line">    print(confirmed_user.title())</span><br></pre></td></tr></table></figure><p> 首先创建一个未验证用户列表,其中包含用户Alice、Brian和Candace,还创建了一个空列表,用于存储已验证的用户,程序中的 while 循环将不断地运行,直到列表 unconfirmed_users 变成空的。在这个循环中,函数pop() 以每次一个的方式从列表 unconfirmed_users 末尾删除未验证的用户。由于Candace位于列表 unconfirmed_users 的末尾,因此其名字将首先被删除、存储到变量 current_user 中并加入到列表 confirmed_users 中。接下来是Brian,然后是Alice</p><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><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">Verifying user: Candace</span><br><span class="line">Verifying user: Brian</span><br><span class="line">Verifying user: Alice</span><br><span class="line"></span><br><span class="line">The following users have been confirmed:</span><br><span class="line">Candace</span><br><span class="line">Brian</span><br><span class="line">Alice</span><br></pre></td></tr></table></figure><h1 id="6-3-2-删除包含特定值的所有列表元素"><a href="#6-3-2-删除包含特定值的所有列表元素" class="headerlink" title=" - 6.3.2 删除包含特定值的所有列表元素 "></a><font color="#FF0000"> - 6.3.2 删除包含特定值的所有列表元素 </font></h1><p> 可以使用方法 remove() 来删除列表中特定的值,但如果要删除的值在列表中出现了多次,方法 remove() 就不管用了,如果要删除列表中所有包含特定值的元素则可以使用 while 循环:</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">names = [<span class="string">'alice'</span> , <span class="string">'candace'</span> , <span class="string">'alice'</span> , <span class="string">'brian'</span> , <span class="string">'alix'</span> , <span class="string">'candace'</span> , <span class="string">'heliy'</span>]</span><br><span class="line">print(names)</span><br><span class="line"><span class="keyword">while</span> <span class="string">'candace'</span> <span class="keyword">in</span> names:</span><br><span class="line">    names.remove(<span class="string">'candace'</span>)</span><br><span class="line">print(names)</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></pre></td><td class="code"><pre><span class="line">[<span class="string">'alice'</span>, <span class="string">'candace'</span>, <span class="string">'alice'</span>, <span class="string">'brian'</span>, <span class="string">'alix'</span>, <span class="string">'candace'</span>, <span class="string">'heliy'</span>]</span><br><span class="line">[<span class="string">'alice'</span>, <span class="string">'alice'</span>, <span class="string">'brian'</span>, <span class="string">'alix'</span>, <span class="string">'heliy'</span>]</span><br></pre></td></tr></table></figure><p>使用方法 remove() 做对比:</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">names = [<span class="string">'alice'</span> , <span class="string">'candace'</span> , <span class="string">'alice'</span> , <span class="string">'brian'</span> , <span class="string">'alix'</span> , <span class="string">'candace'</span> , <span class="string">'heliy'</span>]</span><br><span class="line">print(names)</span><br><span class="line">names.remove(<span class="string">'candace'</span>)</span><br><span class="line">print(names)</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></pre></td><td class="code"><pre><span class="line">[<span class="string">'alice'</span>, <span class="string">'candace'</span>, <span class="string">'alice'</span>, <span class="string">'brian'</span>, <span class="string">'alix'</span>, <span class="string">'candace'</span>, <span class="string">'heliy'</span>]</span><br><span class="line">[<span class="string">'alice'</span>, <span class="string">'alice'</span>, <span class="string">'brian'</span>, <span class="string">'alix'</span>, <span class="string">'candace'</span>, <span class="string">'heliy'</span>]</span><br></pre></td></tr></table></figure><h1 id="6-3-3-使用用户输入来填充字典"><a href="#6-3-3-使用用户输入来填充字典" class="headerlink" title=" - 6.3.3 使用用户输入来填充字典 "></a><font color="#FF0000"> - 6.3.3 使用用户输入来填充字典 </font></h1><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">responses = &#123;&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">#设置一个标志,指出调查是否继续</span></span><br><span class="line">polling_active = <span class="keyword">True</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">while</span> polling_active:</span><br><span class="line">    <span class="comment">#提示输入被调查者的姓名和回答</span></span><br><span class="line">    name = input(<span class="string">"\nWhat's your name?"</span>)</span><br><span class="line">    response = input(<span class="string">"What kind of fruit do you like?"</span>)</span><br><span class="line">    </span><br><span class="line">    <span class="comment">#将答卷储存在字典中</span></span><br><span class="line">    responses[name] = response</span><br><span class="line">    </span><br><span class="line">    <span class="comment">#询问是否还有其他人要参与回答</span></span><br><span class="line">    repeat = input(<span class="string">"Would you like to let another person respond?(Yes/No)"</span>)</span><br><span class="line">    <span class="keyword">if</span> repeat == <span class="string">'No'</span>:</span><br><span class="line">        polling_active = <span class="keyword">False</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#调查结束,显示结果</span></span><br><span class="line">print(<span class="string">"\n------ Poll Results ------"</span>)</span><br><span class="line"><span class="keyword">for</span> name , response <span class="keyword">in</span> responses.items():</span><br><span class="line">    print(name + <span class="string">" like "</span> + response + <span class="string">"."</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><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">What<span class="string">'s your name?TRHX</span></span><br><span class="line"><span class="string">What kind of fruit do you like?apple</span></span><br><span class="line"><span class="string">Would you like to let another person respond?(Yes/No)Yes</span></span><br><span class="line"><span class="string"></span></span><br><span class="line">What's your name?TRHXCC</span><br><span class="line">What kind of fruit do you like?banana</span><br><span class="line">Would you like to let another person respond?(Yes/No)No</span><br><span class="line"></span><br><span class="line">------ Poll Results ------</span><br><span class="line">TRHX like apple.</span><br><span class="line">TRHXCC like banana.</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      Python3 【用户输入和 while 循环】
    
    </summary>
    
T
TRHX 已提交
249
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
T
TRHX 已提交
250 251
    
    
T
TRHX 已提交
252
      <category term="input()函数" scheme="https://itrhx.com/tags/input-%E5%87%BD%E6%95%B0/"/>
T
TRHX 已提交
253
    
T
TRHX 已提交
254
      <category term="while循环" scheme="https://itrhx.com/tags/while%E5%BE%AA%E7%8E%AF/"/>
T
TRHX 已提交
255 256 257 258 259
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C05</title>
T
TRHX 已提交
260 261
    <link href="https://itrhx.com/2018/10/27/A11-Python3-self-study-notes-C05/"/>
    <id>https://itrhx.com/2018/10/27/A11-Python3-self-study-notes-C05/</id>
T
TRHX 已提交
262 263 264 265 266 267 268 269 270 271 272
    <published>2018-10-27T10:46:22.942Z</published>
    <updated>2018-10-27T10:46:23.044Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><center><font color="#4094C7" size="4">Python3 自学笔记第五章【字典】</font></center><hr><h1 id="5-1-一个简单的字典"><a href="#5-1-一个简单的字典" class="headerlink" title=" - 5.1 一个简单的字典 "></a><font color="#FF0000"> - 5.1 一个简单的字典 </font></h1><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 = &#123;<span class="string">'apple'</span> : <span class="string">'red'</span> , <span class="string">'number'</span> : <span class="number">5</span>&#125;</span><br><span class="line">print(fruits[<span class="string">'apple'</span>])</span><br><span class="line">print(fruits[<span class="string">'number'</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></pre></td><td class="code"><pre><span class="line">red</span><br><span class="line"><span class="number">5</span></span><br></pre></td></tr></table></figure><p>在Python中,字典是一系列<font color="#FF000">键-值对</font>。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可以将任何Python对象用作字典中的值。<font color="#FF0000">键-值对</font>是两个相关联的值。在指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而<font color="#FF000">键-值对</font>之间用逗号分隔。在字典中,想储存多少个<font color="#FF000">键-值对</font>都可以</p><h1 id="5-1-1-访问字典中的值"><a href="#5-1-1-访问字典中的值" class="headerlink" title=" - 5.1.1 访问字典中的值 "></a><font color="#FF0000"> - 5.1.1 访问字典中的值 </font></h1><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 = &#123;<span class="string">'apple'</span> : <span class="string">'red'</span> , <span class="string">'number'</span> : <span class="number">5</span>&#125;</span><br><span class="line">number_fruits = fruits[<span class="string">'number'</span>]</span><br><span class="line">print(<span class="string">"The number of apple is "</span> + str(number_fruits) + <span class="string">"!"</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></pre></td><td class="code"><pre><span class="line">The number of apple <span class="keyword">is</span> <span class="number">5</span>!</span><br></pre></td></tr></table></figure><h1 id="5-1-2-添加键-值对"><a href="#5-1-2-添加键-值对" class="headerlink" title=" - 5.1.2 添加键-值对 "></a><font color="#FF0000"> - 5.1.2 添加键-值对 </font></h1><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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">fruits = &#123;<span class="string">'apple'</span> : <span class="string">'red'</span> , <span class="string">'number1'</span> : <span class="number">5</span>&#125;</span><br><span class="line">print(fruits)</span><br><span class="line">fruits[<span class="string">'banana'</span>] = <span class="string">'yellow'</span></span><br><span class="line">fruits[<span class="string">'number2'</span>] = <span class="number">13</span></span><br><span class="line">print(fruits)</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></pre></td><td class="code"><pre><span class="line">&#123;<span class="string">'apple'</span>: <span class="string">'red'</span>, <span class="string">'number1'</span>: <span class="number">5</span>&#125;</span><br><span class="line">&#123;<span class="string">'apple'</span>: <span class="string">'red'</span>, <span class="string">'number1'</span>: <span class="number">5</span>, <span class="string">'banana'</span>: <span class="string">'yellow'</span>, <span class="string">'number2'</span>: <span class="number">13</span>&#125;</span><br></pre></td></tr></table></figure><font color="#FF0000">注意:键-值对的排列顺序与添加顺序不同。Python不关心键-值对的添加顺序,而只关心键和值之间的关联关系</font><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">fruits = &#123;&#125;</span><br><span class="line">fruits[<span class="string">'banana'</span>] = <span class="string">'yellow'</span></span><br><span class="line">fruits[<span class="string">'number2'</span>] = <span class="number">13</span></span><br><span class="line">print(fruits)</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></pre></td><td class="code"><pre><span class="line">&#123;<span class="string">'banana'</span>: <span class="string">'yellow'</span>, <span class="string">'number2'</span>: <span class="number">13</span>&#125;</span><br></pre></td></tr></table></figure><h1 id="5-1-3-修改字典中的值"><a href="#5-1-3-修改字典中的值" class="headerlink" title=" - 5.1.3 修改字典中的值 "></a><font color="#FF0000"> - 5.1.3 修改字典中的值 </font></h1><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">fruits = &#123;<span class="string">'color'</span> : <span class="string">'red'</span>&#125;</span><br><span class="line">print(<span class="string">"The color of the fruits is "</span> + fruits[<span class="string">'color'</span>] + <span class="string">"!"</span>)</span><br><span class="line">fruits[<span class="string">'color'</span>] = <span class="string">'yellow'</span></span><br><span class="line">print(<span class="string">"The color of the fruits is "</span> + fruits[<span class="string">'color'</span>] + <span class="string">" now!"</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></pre></td><td class="code"><pre><span class="line">The color of the fruits <span class="keyword">is</span> red!</span><br><span class="line">The color of the fruits <span class="keyword">is</span> yellow now!</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><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">alien = &#123;<span class="string">'x_position'</span>: <span class="number">0</span>, <span class="string">'y_position'</span>: <span class="number">25</span>, <span class="string">'speed'</span>: <span class="string">'medium'</span>&#125;</span><br><span class="line">print(<span class="string">"Original x-position: "</span> + str(alien[<span class="string">'x_position'</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> alien[<span class="string">'speed'</span>] == <span class="string">'slow'</span>:</span><br><span class="line">    x_increment = <span class="number">1</span></span><br><span class="line"><span class="keyword">elif</span> alien[<span class="string">'speed'</span>] == <span class="string">'medium'</span>:</span><br><span class="line">    x_increment = <span class="number">2</span></span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    x_increment = <span class="number">3</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#新位置等于老位置加上增量</span></span><br><span class="line">alien[<span class="string">'x_position'</span>] = alien[<span class="string">'x_position'</span>] + x_increment</span><br><span class="line">print(<span class="string">"New x_position: "</span> + str(alien[<span class="string">'x_position'</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></pre></td><td class="code"><pre><span class="line">Original x-position: <span class="number">0</span></span><br><span class="line">New x_position: <span class="number">2</span></span><br></pre></td></tr></table></figure><h1 id="5-1-4-删除键-值对"><a href="#5-1-4-删除键-值对" class="headerlink" title=" - 5.1.4 删除键-值对 "></a><font color="#FF0000"> - 5.1.4 删除键-值对 </font></h1><p> 对于字典中不再需要的信息,可使用del语句将相应的键-值对彻底删除。使用del语句时,必须指定字典名和要删除的键</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">fruits = &#123;<span class="string">'apple'</span> : <span class="string">'red'</span> , <span class="string">'number'</span> : <span class="number">5</span>&#125;</span><br><span class="line">print(fruits)</span><br><span class="line"><span class="keyword">del</span> fruits[<span class="string">'number'</span>]</span><br><span class="line">print(fruits)</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></pre></td><td class="code"><pre><span class="line">&#123;<span class="string">'apple'</span>: <span class="string">'red'</span>, <span class="string">'number'</span>: <span class="number">5</span>&#125;</span><br><span class="line">&#123;<span class="string">'apple'</span>: <span class="string">'red'</span>&#125;</span><br></pre></td></tr></table></figure><h1 id="5-1-5-由类似对象组成的字典"><a href="#5-1-5-由类似对象组成的字典" class="headerlink" title=" - 5.1.5 由类似对象组成的字典 "></a><font color="#FF0000"> - 5.1.5 由类似对象组成的字典 </font></h1><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><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">favorite_languages = &#123;</span><br><span class="line">    <span class="string">'jen'</span> : <span class="string">'python'</span> ,</span><br><span class="line">    <span class="string">'sarah'</span> : <span class="string">'c'</span> ,</span><br><span class="line">    <span class="string">'edward'</span> : <span class="string">'ruby'</span> ,</span><br><span class="line">    <span class="string">'phil'</span> : <span class="string">'java'</span> ,</span><br><span class="line">    &#125;</span><br><span class="line">print(<span class="string">"Sarah's favorite languages is "</span> + favorite_languages[<span class="string">'sarah'</span>].title() + <span class="string">"!"</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></pre></td><td class="code"><pre><span class="line">Sarah<span class="string">'s favorite languages is C!</span></span><br></pre></td></tr></table></figure><h1 id="5-2-遍历字典"><a href="#5-2-遍历字典" class="headerlink" title=" - 5.2 遍历字典 "></a><font color="#FF0000"> - 5.2 遍历字典 </font></h1><h1 id="5-2-1-方法-items-遍历所有的键-值对"><a href="#5-2-1-方法-items-遍历所有的键-值对" class="headerlink" title=" - 5.2.1 方法 items() 遍历所有的键-值对 "></a><font color="#FF0000"> - 5.2.1 方法 items() 遍历所有的键-值对 </font></h1><p>使用for循环来遍历字典:<br><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">name = &#123;</span><br><span class="line">    <span class="string">'username'</span> : <span class="string">'efermi'</span> ,</span><br><span class="line">    <span class="string">'first'</span> : <span class="string">'enrico'</span> ,</span><br><span class="line">    <span class="string">'last'</span> : <span class="string">'fermi'</span> ,</span><br><span class="line">    &#125;</span><br><span class="line"><span class="keyword">for</span> key , value <span class="keyword">in</span> name.items():</span><br><span class="line">    print(<span class="string">"\nKey: "</span> + key)</span><br><span class="line">    print(<span class="string">"Value: "</span> + value)</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">Key: username</span><br><span class="line">Value: efermi</span><br><span class="line"></span><br><span class="line">Key: first</span><br><span class="line">Value: enrico</span><br><span class="line"></span><br><span class="line">Key: last</span><br><span class="line">Value: fermi</span><br></pre></td></tr></table></figure></p><p>for语句的第二部分包含字典和方法items(),它返回一个键-值对列表。接下来,for循环依次将每个键-值对储存到指定的两个变量中</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></pre></td><td class="code"><pre><span class="line">favorite_languages = &#123;</span><br><span class="line">    <span class="string">'jen'</span> : <span class="string">'python'</span> ,</span><br><span class="line">    <span class="string">'sarah'</span> : <span class="string">'c'</span> ,</span><br><span class="line">    <span class="string">'edward'</span> : <span class="string">'ruby'</span> ,</span><br><span class="line">    <span class="string">'phil'</span> : <span class="string">'java'</span> ,</span><br><span class="line">    &#125;</span><br><span class="line"><span class="keyword">for</span> name, language <span class="keyword">in</span> favorite_languages.items():</span><br><span class="line">    print(name.title() + <span class="string">"'s favorite language is "</span> + language.title() + <span class="string">"."</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">Jen<span class="string">'s favorite language is Python.</span></span><br><span class="line"><span class="string">Sarah'</span>s favorite language <span class="keyword">is</span> C.</span><br><span class="line">Edward<span class="string">'s favorite language is Ruby.</span></span><br><span class="line"><span class="string">Phil'</span>s favorite language <span class="keyword">is</span> Java.</span><br></pre></td></tr></table></figure><h1 id="5-2-2-方法-keys-遍历字典中所有的键"><a href="#5-2-2-方法-keys-遍历字典中所有的键" class="headerlink" title=" - 5.2.2 方法 keys() 遍历字典中所有的键 "></a><font color="#FF0000"> - 5.2.2 方法 keys() 遍历字典中所有的键 </font></h1><p> 在不需要使用字典中的值时,方法key()很有用,下面来遍历字典favorite_languages,并将每个被调查者的名字都打印出来:</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></pre></td><td class="code"><pre><span class="line">favorite_languages = &#123;</span><br><span class="line">    <span class="string">'jen'</span> : <span class="string">'python'</span> ,</span><br><span class="line">    <span class="string">'sarah'</span> : <span class="string">'c'</span> ,</span><br><span class="line">    <span class="string">'edward'</span> : <span class="string">'ruby'</span> ,</span><br><span class="line">    <span class="string">'phil'</span> : <span class="string">'java'</span> ,</span><br><span class="line">    &#125;</span><br><span class="line"><span class="keyword">for</span> name <span class="keyword">in</span> favorite_languages.keys():</span><br><span class="line">    print(name.title())</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">Jen</span><br><span class="line">Sarah</span><br><span class="line">Edward</span><br><span class="line">Phil</span><br></pre></td></tr></table></figure><p>遍历字典时,会默认遍历所有的键,因此,如果将上述代码中的<code>for name in favorite_languages.keys():</code>替换为<code>for name in favorite_languages:</code>输出结果将不变<br>进阶:</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">favorite_languages = &#123;</span><br><span class="line">    <span class="string">'jen'</span> : <span class="string">'python'</span> ,</span><br><span class="line">    <span class="string">'sarah'</span> : <span class="string">'c'</span> ,</span><br><span class="line">    <span class="string">'edward'</span> : <span class="string">'ruby'</span> ,</span><br><span class="line">    <span class="string">'phil'</span> : <span class="string">'java'</span> ,</span><br><span class="line">    &#125;</span><br><span class="line">friends = [<span class="string">'phil'</span>, <span class="string">'sarah'</span>]</span><br><span class="line"><span class="keyword">for</span> name <span class="keyword">in</span> favorite_languages.keys():</span><br><span class="line">    print(name.title())</span><br><span class="line">    <span class="keyword">if</span> name <span class="keyword">in</span> friends:</span><br><span class="line">        print(<span class="string">"Hi "</span> + name + <span class="string">", I see your favorite languages is "</span> + favorite_languages[name].title() + <span class="string">"!"</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><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">Jen</span><br><span class="line">Sarah</span><br><span class="line">Hi sarah, I see your favorite languages <span class="keyword">is</span> C!</span><br><span class="line">Edward</span><br><span class="line">Phil</span><br><span class="line">Hi phil, I see your favorite languages <span class="keyword">is</span> Java!</span><br></pre></td></tr></table></figure><h1 id="5-2-3-函数-sorted-按顺序遍历字典中的所有键"><a href="#5-2-3-函数-sorted-按顺序遍历字典中的所有键" class="headerlink" title=" - 5.2.3 函数 sorted() 按顺序遍历字典中的所有键 "></a><font color="#FF0000"> - 5.2.3 函数 sorted() 按顺序遍历字典中的所有键 </font></h1><p>字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的,要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序,为此,可以使用函数sorted()来获得按特定顺序排列的键列表的副本:</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></pre></td><td class="code"><pre><span class="line">favorite_languages = &#123;</span><br><span class="line">    <span class="string">'jen'</span> : <span class="string">'python'</span> ,</span><br><span class="line">    <span class="string">'sarah'</span> : <span class="string">'c'</span> ,</span><br><span class="line">    <span class="string">'edward'</span> : <span class="string">'ruby'</span> ,</span><br><span class="line">    <span class="string">'phil'</span> : <span class="string">'java'</span> ,</span><br><span class="line">    &#125;</span><br><span class="line"><span class="keyword">for</span> name <span class="keyword">in</span> sorted(favorite_languages.keys()):</span><br><span class="line">    print(name.title())</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">Edward</span><br><span class="line">Jen</span><br><span class="line">Phil</span><br><span class="line">Sarah</span><br></pre></td></tr></table></figure><h1 id="5-2-4-方法-values-遍历字典中的所有值"><a href="#5-2-4-方法-values-遍历字典中的所有值" class="headerlink" title=" - 5.2.4 方法 values() 遍历字典中的所有值 "></a><font color="#FF0000"> - 5.2.4 方法 values() 遍历字典中的所有值 </font></h1><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">favorite_languages = &#123;</span><br><span class="line">    <span class="string">'jen'</span> : <span class="string">'python'</span> ,</span><br><span class="line">    <span class="string">'sarah'</span> : <span class="string">'c'</span> ,</span><br><span class="line">    <span class="string">'edward'</span> : <span class="string">'ruby'</span> ,</span><br><span class="line">    <span class="string">'phil'</span> : <span class="string">'java'</span> ,</span><br><span class="line">    &#125;</span><br><span class="line"><span class="keyword">for</span> languages <span class="keyword">in</span> favorite_languages.values():</span><br><span class="line">    print(languages.title())</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">Python</span><br><span class="line">C</span><br><span class="line">Ruby</span><br><span class="line">Java</span><br></pre></td></tr></table></figure><p>这种做法提取字典中所有的值,而没有考虑是否重复,<font color="#FF000">为剔除重复项,可使用集合(set)</font>,集合类似于列表,但每个元素都必须是独一无二的:</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></pre></td><td class="code"><pre><span class="line">favorite_languages = &#123;</span><br><span class="line">    <span class="string">'jen'</span> : <span class="string">'python'</span> ,</span><br><span class="line">    <span class="string">'sarah'</span> : <span class="string">'c'</span> ,</span><br><span class="line">    <span class="string">'edward'</span> : <span class="string">'ruby'</span> ,</span><br><span class="line">    <span class="string">'phil'</span> : <span class="string">'python'</span> ,</span><br><span class="line">    &#125;</span><br><span class="line"><span class="keyword">for</span> languages <span class="keyword">in</span> set(favorite_languages.values()):</span><br><span class="line">    print(languages.title())</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">C</span><br><span class="line">Python</span><br><span class="line">Ruby</span><br></pre></td></tr></table></figure><h1 id="5-3-嵌套"><a href="#5-3-嵌套" class="headerlink" title=" - 5.3 嵌套 "></a><font color="#FF0000"> - 5.3 嵌套 </font></h1><p>有时候,需要将一系列字典储存在列表中,或将列表作为值储存在字典中,这称为嵌套。可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典</p><h1 id="5-3-1-字典列表"><a href="#5-3-1-字典列表" class="headerlink" title=" - 5.3.1 字典列表 "></a><font color="#FF0000"> - 5.3.1 字典列表 </font></h1><p>下面代码创建三个字典,每个字典都表示一个个学生,将这三个字典都放到一个名为students的列表当中,遍历列表将每个学生都打印出来:</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">student_0 = &#123;<span class="string">'name'</span> : <span class="string">'anily'</span> , <span class="string">'class'</span> : <span class="number">2</span>&#125;</span><br><span class="line">student_1 = &#123;<span class="string">'name'</span> : <span class="string">'nikey'</span> , <span class="string">'class'</span> : <span class="number">5</span>&#125;</span><br><span class="line">student_2 = &#123;<span class="string">'name'</span> : <span class="string">'heyk'</span> , <span class="string">'class'</span> : <span class="number">3</span>&#125;</span><br><span class="line">students = [student_0 , student_1 , student_2]</span><br><span class="line"><span class="keyword">for</span> student <span class="keyword">in</span> students:</span><br><span class="line">    print(student)</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">&#123;<span class="string">'name'</span>: <span class="string">'anily'</span>, <span class="string">'class'</span>: <span class="number">2</span>&#125;</span><br><span class="line">&#123;<span class="string">'name'</span>: <span class="string">'nikey'</span>, <span class="string">'class'</span>: <span class="number">5</span>&#125;</span><br><span class="line">&#123;<span class="string">'name'</span>: <span class="string">'heyk'</span>, <span class="string">'class'</span>: <span class="number">3</span>&#125;</span><br></pre></td></tr></table></figure><p>进阶:使用 <code>range()</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></pre></td><td class="code"><pre><span class="line"><span class="comment">#创建一个用于存储外星人的空列表</span></span><br><span class="line">aliens = []</span><br><span class="line"></span><br><span class="line"><span class="comment">#创建三十个绿色的外星人</span></span><br><span class="line"><span class="keyword">for</span> alien_number <span class="keyword">in</span> range(<span class="number">30</span>):</span><br><span class="line">    new_alien = &#123;<span class="string">'color'</span> : <span class="string">'green'</span> , <span class="string">'points'</span> : <span class="number">5</span> , <span class="string">'speed'</span> : <span class="string">'slow'</span>&#125;</span><br><span class="line">    aliens.append(new_alien)</span><br><span class="line"></span><br><span class="line"><span class="comment">#显示前五个外星人</span></span><br><span class="line"><span class="keyword">for</span> alien <span class="keyword">in</span> aliens[:<span class="number">5</span>]:</span><br><span class="line">    print(alien)</span><br><span class="line">print(<span class="string">"......"</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment">#显示创建了多少外星人</span></span><br><span class="line">print(<span class="string">"Total number of aliens: "</span> + str(len(aliens)))</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><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">&#123;<span class="string">'color'</span>: <span class="string">'green'</span>, <span class="string">'points'</span>: <span class="number">5</span>, <span class="string">'speed'</span>: <span class="string">'slow'</span>&#125;</span><br><span class="line">&#123;<span class="string">'color'</span>: <span class="string">'green'</span>, <span class="string">'points'</span>: <span class="number">5</span>, <span class="string">'speed'</span>: <span class="string">'slow'</span>&#125;</span><br><span class="line">&#123;<span class="string">'color'</span>: <span class="string">'green'</span>, <span class="string">'points'</span>: <span class="number">5</span>, <span class="string">'speed'</span>: <span class="string">'slow'</span>&#125;</span><br><span class="line">&#123;<span class="string">'color'</span>: <span class="string">'green'</span>, <span class="string">'points'</span>: <span class="number">5</span>, <span class="string">'speed'</span>: <span class="string">'slow'</span>&#125;</span><br><span class="line">&#123;<span class="string">'color'</span>: <span class="string">'green'</span>, <span class="string">'points'</span>: <span class="number">5</span>, <span class="string">'speed'</span>: <span class="string">'slow'</span>&#125;</span><br><span class="line">......</span><br><span class="line">Total number of aliens: <span class="number">30</span></span><br></pre></td></tr></table></figure><p>在上述例子中,虽然每个外星人都具有相同特征,但在Python看来,每个外星人都是独立的,我们可以独立地修改每个外星人:</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">aliens = []</span><br><span class="line"><span class="keyword">for</span> alien_number <span class="keyword">in</span> range(<span class="number">30</span>):</span><br><span class="line">    new_alien = &#123;<span class="string">'color'</span> : <span class="string">'green'</span> , <span class="string">'points'</span> : <span class="number">5</span> , <span class="string">'speed'</span> : <span class="string">'slow'</span>&#125;</span><br><span class="line">    aliens.append(new_alien)</span><br><span class="line"><span class="keyword">for</span> alien <span class="keyword">in</span> aliens[<span class="number">0</span>:<span class="number">3</span>]:</span><br><span class="line">    <span class="keyword">if</span> alien[<span class="string">'color'</span>] == <span class="string">'green'</span>:</span><br><span class="line">        alien[<span class="string">'color'</span>] = <span class="string">'yellow'</span></span><br><span class="line">        alien[<span class="string">'points'</span>] = <span class="number">10</span></span><br><span class="line">        alien[<span class="string">'speed'</span>] = <span class="string">'medium'</span></span><br><span class="line"><span class="keyword">for</span> alien <span class="keyword">in</span> aliens[:<span class="number">5</span>]:</span><br><span class="line">    print(alien)</span><br><span class="line">print(<span class="string">"......"</span>)</span><br><span class="line">print(<span class="string">"Total number of aliens: "</span> + str(len(aliens)))</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><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">&#123;<span class="string">'color'</span>: <span class="string">'yellow'</span>, <span class="string">'points'</span>: <span class="number">10</span>, <span class="string">'speed'</span>: <span class="string">'medium'</span>&#125;</span><br><span class="line">&#123;<span class="string">'color'</span>: <span class="string">'yellow'</span>, <span class="string">'points'</span>: <span class="number">10</span>, <span class="string">'speed'</span>: <span class="string">'medium'</span>&#125;</span><br><span class="line">&#123;<span class="string">'color'</span>: <span class="string">'yellow'</span>, <span class="string">'points'</span>: <span class="number">10</span>, <span class="string">'speed'</span>: <span class="string">'medium'</span>&#125;</span><br><span class="line">&#123;<span class="string">'color'</span>: <span class="string">'green'</span>, <span class="string">'points'</span>: <span class="number">5</span>, <span class="string">'speed'</span>: <span class="string">'slow'</span>&#125;</span><br><span class="line">&#123;<span class="string">'color'</span>: <span class="string">'green'</span>, <span class="string">'points'</span>: <span class="number">5</span>, <span class="string">'speed'</span>: <span class="string">'slow'</span>&#125;</span><br><span class="line">......</span><br><span class="line">Total number of aliens: <span class="number">30</span></span><br></pre></td></tr></table></figure><h1 id="5-3-2-在字典中存储列表"><a href="#5-3-2-在字典中存储列表" class="headerlink" title=" - 5.3.2 在字典中存储列表 "></a><font color="#FF0000"> - 5.3.2 在字典中存储列表 </font></h1><p>有时候需要将列表储存在字典中,而不是将字典储存在列表中:<br>例一:</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></pre></td><td class="code"><pre><span class="line"><span class="comment">#储存所点比萨的信息</span></span><br><span class="line">pizza = &#123;</span><br><span class="line">    <span class="string">'crust'</span> : <span class="string">'thick'</span> ,</span><br><span class="line">    <span class="string">'toppings'</span> : [<span class="string">'mushrooms'</span> , <span class="string">'extra chees'</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">print(<span class="string">"You ordered a "</span> + pizza[<span class="string">'crust'</span>] + <span class="string">"-crust pizza"</span> + <span class="string">"with the following toppings :"</span> )</span><br><span class="line"><span class="keyword">for</span> topping <span class="keyword">in</span> pizza[<span class="string">'toppings'</span>]:</span><br><span class="line">    print(<span class="string">"\t"</span> + topping)</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">You ordered a thick-crust pizzawith the following toppings :</span><br><span class="line">mushrooms</span><br><span class="line">extra chees</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><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">favorite_languages = &#123;</span><br><span class="line">    <span class="string">'jen'</span> : [<span class="string">'python'</span> , <span class="string">'ruby'</span>] ,</span><br><span class="line">    <span class="string">'sarah'</span> : [<span class="string">'c'</span>] ,</span><br><span class="line">    <span class="string">'edward'</span> : [<span class="string">'go'</span> , <span class="string">'ruby'</span>] ,</span><br><span class="line">    <span class="string">'phil'</span> : [<span class="string">'python'</span> , <span class="string">'java'</span>] ,</span><br><span class="line">    &#125;</span><br><span class="line"><span class="keyword">for</span> name , languages <span class="keyword">in</span> favorite_languages.items():</span><br><span class="line">    print(<span class="string">"\n"</span> + name.title() + <span class="string">"'s favorite languages are:"</span>)</span><br><span class="line">    <span class="keyword">for</span> language <span class="keyword">in</span> languages:</span><br><span class="line">        print(<span class="string">"\t"</span> + language.title())</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><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><br><span class="line">Jen<span class="string">'s favorite languages are:</span></span><br><span class="line"><span class="string">Python</span></span><br><span class="line"><span class="string">Ruby</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Sarah'</span>s favorite languages are:</span><br><span class="line">C</span><br><span class="line"></span><br><span class="line">Edward<span class="string">'s favorite languages are:</span></span><br><span class="line"><span class="string">Go</span></span><br><span class="line"><span class="string">Ruby</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Phil'</span>s favorite languages are:</span><br><span class="line">Python</span><br><span class="line">Java</span><br></pre></td></tr></table></figure><h1 id="5-3-3-在字典中存储字典"><a href="#5-3-3-在字典中存储字典" class="headerlink" title=" - 5.3.3 在字典中存储字典 "></a><font color="#FF0000"> - 5.3.3 在字典中存储字典 </font></h1><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">users = &#123;</span><br><span class="line">    <span class="string">'aeinstein'</span> : &#123;</span><br><span class="line">        <span class="string">'first'</span> : <span class="string">'albert'</span> ,</span><br><span class="line">        <span class="string">'last'</span> : <span class="string">'einstein'</span> ,</span><br><span class="line">        <span class="string">'location'</span> : <span class="string">'princeton'</span> ,</span><br><span class="line">        &#125; ,</span><br><span class="line">    <span class="string">'mcurie'</span> : &#123;</span><br><span class="line">        <span class="string">'first'</span> : <span class="string">'marie'</span> ,</span><br><span class="line">        <span class="string">'last'</span> : <span class="string">'curie'</span> ,</span><br><span class="line">        <span class="string">'location'</span> : <span class="string">'paris'</span> ,</span><br><span class="line">        &#125; ,</span><br><span class="line">    &#125;</span><br><span class="line"><span class="keyword">for</span> username , user_info <span class="keyword">in</span> users.items():</span><br><span class="line">    print(<span class="string">"\nUsername : "</span> + username)</span><br><span class="line">    full_name = user_info[<span class="string">'first'</span>] + <span class="string">" "</span> + user_info[<span class="string">'last'</span>]</span><br><span class="line">    location = user_info[<span class="string">'location'</span>]</span><br><span class="line">    print(<span class="string">"\tFull name : "</span> + full_name.title())</span><br><span class="line">    print(<span class="string">"\tlocation : "</span> + location .title())</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><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><br><span class="line">Username : aeinstein</span><br><span class="line">Full name : Albert Einstein</span><br><span class="line">location : Princeton</span><br><span class="line"></span><br><span class="line">Username : mcurie</span><br><span class="line">Full name : Marie Curie</span><br><span class="line">location : Paris</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      Python3 【字典】
    
    </summary>
    
T
TRHX 已提交
273
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
T
TRHX 已提交
274 275
    
    
T
TRHX 已提交
276
      <category term="字典" scheme="https://itrhx.com/tags/%E5%AD%97%E5%85%B8/"/>
T
TRHX 已提交
277 278 279 280 281
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C04</title>
T
TRHX 已提交
282 283
    <link href="https://itrhx.com/2018/10/23/A10-Python3-self-study-notes-C04/"/>
    <id>https://itrhx.com/2018/10/23/A10-Python3-self-study-notes-C04/</id>
T
TRHX 已提交
284 285 286 287 288 289 290 291 292 293 294
    <published>2018-10-23T14:52:48.396Z</published>
    <updated>2018-10-23T15:05:23.396Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><center><font color="#4094C7" size="4">Python3 自学笔记第四章【if语句】</font></center><hr><h1 id="4-1-一个简单的数列"><a href="#4-1-一个简单的数列" class="headerlink" title=" - 4.1 一个简单的数列 "></a><font color="#FF0000"> - 4.1 一个简单的数列 </font></h1><p> 给定一个汽车列表,将其中每一辆汽车的名称打印出来,要求打印 ‘bmw’ 时所有字母都要大写,其余名称只需要首字母大写:</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">cars = [<span class="string">'audi'</span> , <span class="string">'bmw'</span> , <span class="string">'subaru'</span> , <span class="string">'toyota'</span>]</span><br><span class="line"><span class="keyword">for</span> car <span class="keyword">in</span> cars:</span><br><span class="line"><span class="keyword">if</span> car == <span class="string">'bmw'</span>:</span><br><span class="line">print(car.upper())</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">print(car.title())</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">Audi</span><br><span class="line">BMW</span><br><span class="line">Subaru</span><br><span class="line">Toyota</span><br></pre></td></tr></table></figure><h1 id="4-1-1-检查特定值是否包含在列表当中"><a href="#4-1-1-检查特定值是否包含在列表当中" class="headerlink" title=" - 4.1.1 检查特定值是否包含在列表当中 "></a><font color="#FF0000"> - 4.1.1 检查特定值是否包含在列表当中 </font></h1><blockquote><p> 要判断特定的值是否已包含在列表当中,可使用关键字 <font color="#FF0000">in</font></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></pre></td><td class="code"><pre><span class="line">user_names = [<span class="string">'andia'</span> , <span class="string">'david'</span> , <span class="string">'liwa'</span>]</span><br><span class="line">user = <span class="string">'andia'</span></span><br><span class="line"><span class="keyword">if</span> user <span class="keyword">in</span> user_names:</span><br><span class="line">print(user.title() + <span class="string">"is in user_name."</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></pre></td><td class="code"><pre><span class="line">Andiais <span class="keyword">in</span> user_name.</span><br></pre></td></tr></table></figure><blockquote><p>要判断特定的值是否不包含在列表当中,可使用关键字 <font color="#FF0000"> not in</font></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></pre></td><td class="code"><pre><span class="line">user_names = [<span class="string">'andia'</span> , <span class="string">'david'</span> , <span class="string">'liwa'</span>]</span><br><span class="line">user = <span class="string">'kivle'</span></span><br><span class="line"><span class="keyword">if</span> user <span class="keyword">not</span> <span class="keyword">in</span> user_names:</span><br><span class="line">print(user.title() + <span class="string">"is not in user_name."</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></pre></td><td class="code"><pre><span class="line">Kivleis <span class="keyword">not</span> <span class="keyword">in</span> user_name.</span><br></pre></td></tr></table></figure><h1 id="4-2-if-else-语句"><a href="#4-2-if-else-语句" class="headerlink" title=" - 4.2 if-else 语句 "></a><font color="#FF0000"> - 4.2 if-else 语句 </font></h1><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">age = input(<span class="string">"请输入你的年龄查看是否可以去网吧:"</span>)</span><br><span class="line"><span class="keyword">if</span> int(age) &gt;= <span class="number">18</span>:</span><br><span class="line">    print(<span class="string">"You are old enough to go to the net bar!"</span>)</span><br><span class="line">    print(<span class="string">"You should go to net bar less,study more!"</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    print(<span class="string">"You are too young to go to the net bar!"</span>)</span><br><span class="line">    print(<span class="string">"Wait until you are 18 to go to the net bar!"</span>)</span><br></pre></td></tr></table></figure><p>分别输入19和15,输出结果如下:</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="number">19</span></span><br><span class="line">You are old enough to go to the net bar!</span><br><span class="line">You should go to net bar less,study more!</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><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">请输入你的年龄查看是否可以去网吧:<span class="number">15</span></span><br><span class="line">You are too young to go to the net bar!</span><br><span class="line">Wait until you are <span class="number">18</span> to go to the net bar!</span><br></pre></td></tr></table></figure><h1 id="4-3-if-elif-else-结构"><a href="#4-3-if-elif-else-结构" class="headerlink" title=" - 4.3 if-elif-else 结构 "></a><font color="#FF0000"> - 4.3 if-elif-else 结构 </font></h1><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">age = <span class="number">12</span></span><br><span class="line"><span class="keyword">if</span> age &lt; <span class="number">4</span>:</span><br><span class="line">price = <span class="number">0</span></span><br><span class="line"><span class="keyword">elif</span> age &lt; <span class="number">18</span>:</span><br><span class="line">price = <span class="number">5</span></span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">price = <span class="number">10</span></span><br><span class="line">print(<span class="string">"Your admission cost is $"</span> + str(price) + <span class="string">"."</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></pre></td><td class="code"><pre><span class="line">Your admission cost <span class="keyword">is</span> $<span class="number">5.</span></span><br></pre></td></tr></table></figure><h1 id="4-3-1-使用多个-elif-代码块"><a href="#4-3-1-使用多个-elif-代码块" class="headerlink" title=" - 4.3.1 使用多个 elif 代码块 "></a><font color="#FF0000"> - 4.3.1 使用多个 elif 代码块 </font></h1> <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">age = <span class="number">20</span></span><br><span class="line"><span class="keyword">if</span> age &lt; <span class="number">4</span>:</span><br><span class="line">price = <span class="number">0</span></span><br><span class="line"><span class="keyword">elif</span> age &lt; <span class="number">18</span>:</span><br><span class="line">price = <span class="number">5</span></span><br><span class="line"><span class="keyword">elif</span> age &lt; <span class="number">65</span>:</span><br><span class="line">price = <span class="number">15</span></span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">price = <span class="number">10</span></span><br><span class="line">print(<span class="string">"Your admission cost is $"</span> + str(price) + <span class="string">"."</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></pre></td><td class="code"><pre><span class="line">Your admission cost <span class="keyword">is</span> $<span class="number">15.</span></span><br></pre></td></tr></table></figure><h1 id="4-3-2-省略-else-代码块"><a href="#4-3-2-省略-else-代码块" class="headerlink" title=" - 4.3.2 省略 else 代码块 "></a><font color="#FF0000"> - 4.3.2 省略 else 代码块 </font></h1><p> Python并不要求 if-elif 结构后面必须有 else 代码块:<br> <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">age = <span class="number">20</span></span><br><span class="line"><span class="keyword">if</span> age &lt; <span class="number">4</span>:</span><br><span class="line">price = <span class="number">0</span></span><br><span class="line"><span class="keyword">elif</span> age &lt; <span class="number">18</span>:</span><br><span class="line">price = <span class="number">5</span></span><br><span class="line"><span class="keyword">elif</span> age &lt; <span class="number">65</span>:</span><br><span class="line">price = <span class="number">15</span></span><br><span class="line"><span class="keyword">elif</span> age &gt;= <span class="number">65</span>:</span><br><span class="line">price = <span class="number">10</span></span><br><span class="line">print(<span class="string">"Your admission cost is $"</span> + str(price) + <span class="string">"."</span>)</span><br></pre></td></tr></table></figure></p><p>输出结果仍与3.3.1一样</p><h1 id="4-4-测试多个条件"><a href="#4-4-测试多个条件" class="headerlink" title=" - 4.4 测试多个条件 "></a><font color="#FF0000"> - 4.4 测试多个条件 </font></h1><p> if-elif-else结构功能强大,但仅适用于只有一个条件满足的情况:遇到通过了的测试后,Python就会跳过余下的测试:</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></pre></td><td class="code"><pre><span class="line"> names = [<span class="string">'Zhangshan'</span> , <span class="string">'Wanger'</span>]</span><br><span class="line"><span class="keyword">if</span> <span class="string">'Zhangshan'</span> <span class="keyword">in</span> names:</span><br><span class="line">    print(<span class="string">"Zhangshan is here!"</span>)</span><br><span class="line"><span class="keyword">if</span> <span class="string">'Wanger'</span> <span class="keyword">in</span> names:</span><br><span class="line">    print(<span class="string">"Wanger is here!"</span>)</span><br><span class="line"><span class="keyword">if</span> <span class="string">'Xiaoming'</span> <span class="keyword">in</span> names:</span><br><span class="line">    print(<span class="string">"Xiaoming is here!"</span>)</span><br><span class="line">print(<span class="string">"All the students are here!"</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></pre></td><td class="code"><pre><span class="line">Zhangshan <span class="keyword">is</span> here!</span><br><span class="line">Wanger <span class="keyword">is</span> here!</span><br><span class="line">All the students are here!</span><br></pre></td></tr></table></figure><p>相同的程序,如果使用 if-elif-else 结构,代码将不能正确运行:</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></pre></td><td class="code"><pre><span class="line">names = [<span class="string">'Zhangshan'</span> , <span class="string">'Wanger'</span>]</span><br><span class="line"><span class="keyword">if</span> <span class="string">'Zhangshan'</span> <span class="keyword">in</span> names:</span><br><span class="line">    print(<span class="string">"Zhangshan is here!"</span>)</span><br><span class="line"><span class="keyword">elif</span> <span class="string">'Wanger'</span> <span class="keyword">in</span> names:</span><br><span class="line">    print(<span class="string">"Wanger is here!"</span>)</span><br><span class="line"><span class="keyword">elif</span> <span class="string">'Xiaoming'</span> <span class="keyword">in</span> names:</span><br><span class="line">    print(<span class="string">"Xiaoming is here!"</span>)</span><br><span class="line">print(<span class="string">"All the students are here!"</span>)</span><br></pre></td></tr></table></figure><p>输出结果如下:<br><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">Zhangshan <span class="keyword">is</span> here!</span><br><span class="line">All the students are here!</span><br></pre></td></tr></table></figure></p><font color="#FF000">总之,如果我们只想执行一个代码块,就使用 if-elif-else 结构;如果要运行多个代码块,就必须使用一系列独立的 if 语句!</font><h1 id="4-5-使用-if-语句处理列表"><a href="#4-5-使用-if-语句处理列表" class="headerlink" title=" - 4.5 使用 if 语句处理列表 "></a><font color="#FF0000"> - 4.5 使用 if 语句处理列表 </font></h1><h1 id="4-5-1-检查特殊元素"><a href="#4-5-1-检查特殊元素" class="headerlink" title=" - 4.5.1 检查特殊元素"></a><font color="#FF0000"> - 4.5.1 检查特殊元素</font></h1><p>对3.4例子改版,加入姓名 ‘Xiaoming’,当检索到Xiaoming时告诉他,他妈妈叫他回家吃饭<br><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">names = [<span class="string">'Zhangshan'</span> , <span class="string">'Wanger'</span> , <span class="string">'Xiaoming'</span>]</span><br><span class="line"><span class="keyword">for</span> name <span class="keyword">in</span> names:</span><br><span class="line">    <span class="keyword">if</span> name == <span class="string">'Xiaoming'</span>:</span><br><span class="line">        print(<span class="string">"Xiaoming,Your mother told you to go home for dinner!"</span>)</span><br><span class="line">    <span class="keyword">else</span>:</span><br><span class="line">        print(name +<span class="string">"is here!"</span>)</span><br><span class="line">print(<span class="string">"All the students are here!"</span>)</span><br></pre></td></tr></table></figure></p><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">Zhangshanis here!</span><br><span class="line">Wangeris here!</span><br><span class="line">Xiaoming,Your mother told you to go home <span class="keyword">for</span> dinner!</span><br><span class="line">All the students are here!</span><br></pre></td></tr></table></figure><h1 id="4-5-2-确定列表不是空的"><a href="#4-5-2-确定列表不是空的" class="headerlink" title=" - 4.5.2 确定列表不是空的"></a><font color="#FF0000"> - 4.5.2 确定列表不是空的</font></h1><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><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">names = []</span><br><span class="line"><span class="keyword">if</span> names:</span><br><span class="line">    <span class="keyword">for</span> name <span class="keyword">in</span> names:</span><br><span class="line">        print(name +<span class="string">" is here!"</span>)</span><br><span class="line">    print(<span class="string">"All the students are here!"</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">    print(<span class="string">"There is no students!"</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></pre></td><td class="code"><pre><span class="line">There <span class="keyword">is</span> no students!</span><br></pre></td></tr></table></figure><font color="#FF000">在if语句中将列表名用在条件表达式中时,Python将在列表至少包含一个元素时返回Ture,并在列表为空时返回False</font><h1 id="4-5-3-使用多个列表"><a href="#4-5-3-使用多个列表" class="headerlink" title=" - 4.5.3 使用多个列表"></a><font color="#FF0000"> - 4.5.3 使用多个列表</font></h1><p>  两个列表names_1和names_2,要求输出既在names_2中又在names_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></pre></td><td class="code"><pre><span class="line">names_1 = [<span class="string">'Zhangshan'</span> , <span class="string">'Liyang'</span>  , <span class="string">'Wanger'</span> , <span class="string">'Tangyang'</span> , <span class="string">'Xiaoming'</span>]</span><br><span class="line">names_2 = [<span class="string">'Liyang'</span> , <span class="string">'Zhangwei'</span> , <span class="string">'Tangyang'</span>]</span><br><span class="line"><span class="keyword">for</span> names <span class="keyword">in</span> names_2:</span><br><span class="line">    <span class="keyword">if</span> names <span class="keyword">in</span> names_1:</span><br><span class="line">        print(names +<span class="string">" is here!"</span>)</span><br><span class="line">print(<span class="string">"All the students are here!"</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></pre></td><td class="code"><pre><span class="line">Liyang <span class="keyword">is</span> here!</span><br><span class="line">Tangyang <span class="keyword">is</span> here!</span><br><span class="line">All the students are here!</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      Python3 【if语句】
    
    </summary>
    
T
TRHX 已提交
295
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
T
TRHX 已提交
296 297
    
    
T
TRHX 已提交
298
      <category term="if语句" scheme="https://itrhx.com/tags/if%E8%AF%AD%E5%8F%A5/"/>
T
TRHX 已提交
299 300 301 302 303
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C03</title>
T
TRHX 已提交
304 305
    <link href="https://itrhx.com/2018/10/11/A09-Python3-self-study-notes-C03/"/>
    <id>https://itrhx.com/2018/10/11/A09-Python3-self-study-notes-C03/</id>
T
TRHX 已提交
306 307 308 309 310 311 312 313 314 315 316
    <published>2018-10-11T14:49:52.286Z</published>
    <updated>2018-10-11T14:49:52.314Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><center><font color="#4094C7" size="4">Python3 自学笔记第三章【操作列表】</font></center><hr><h1 id="3-1遍历整个列表"><a href="#3-1遍历整个列表" class="headerlink" title=" - 3.1遍历整个列表 "></a><font color="#FF0000"> - 3.1遍历整个列表 </font></h1><p> 使用 for 循环来遍历整个列表:</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">names = [<span class="string">'alice'</span> , <span class="string">'david'</span> , <span class="string">'liwei'</span>]</span><br><span class="line"><span class="keyword">for</span> name <span class="keyword">in</span> names:</span><br><span class="line">print(name)</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">alice</span><br><span class="line">david</span><br><span class="line">liwei</span><br></pre></td></tr></table></figure><p>for循环让Python从列表names中取出一个名字,并将其储存在变量name中,最后  让Python打印前面储存到变量name中的名字,对于列表中的每个名字,Python都将 重复执行后两行代码,将列表names中的每个名字都打印出来</p><h1 id="3-1-1在for循环中执行更多的操作"><a href="#3-1-1在for循环中执行更多的操作" class="headerlink" title="- 3.1.1在for循环中执行更多的操作 "></a><font color="#FF0000">- 3.1.1在for循环中执行更多的操作 </font></h1><p>在for循环中,可对每个元素执行任何操作,下面对前面的示例进行扩展:</p><p>例一:<br><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">names = [<span class="string">'alice'</span> , <span class="string">'david'</span> , <span class="string">'liwei'</span>]</span><br><span class="line"><span class="keyword">for</span> name <span class="keyword">in</span> names:</span><br><span class="line">print(name.title() + <span class="string">", that was a good man!"</span>)</span><br></pre></td></tr></table></figure></p><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">Alice, that was a good man!</span><br><span class="line">David, that was a good man!</span><br><span class="line">Liwei, that was a good man!</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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">names = [<span class="string">'alice'</span> , <span class="string">'david'</span> , <span class="string">'liwei'</span>]</span><br><span class="line"><span class="keyword">for</span> name <span class="keyword">in</span> names:</span><br><span class="line">print(name.title() + <span class="string">", that was a good man!"</span>)</span><br><span class="line">print(<span class="string">"I can't wait to see you again,"</span> + name.title() + <span class="string">".\n"</span>)</span><br><span class="line">print(<span class="string">"Nice to meet you!"</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><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">Alice, that was a good man!</span><br><span class="line">I can<span class="string">'t wait to see you again,Alice.</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">David, that was a good man!</span></span><br><span class="line"><span class="string">I can'</span>t wait to see you again,David.</span><br><span class="line"></span><br><span class="line">Liwei, that was a good man!</span><br><span class="line">I can<span class="string">'t wait to see you again,Liwei.</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">Nice to meet you!</span></span><br></pre></td></tr></table></figure><h1 id="3-2-range-函数"><a href="#3-2-range-函数" class="headerlink" title="- 3.2 range()函数 "></a><font color="#FF0000">- 3.2 range()函数 </font></h1><blockquote><p>Python使用range()函数能够轻松地生成一系列的数字</p></blockquote><blockquote><p>Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表;</p></blockquote><blockquote><p>Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表;</p></blockquote><blockquote><p>Python2 range() 函数返回的是列表</p></blockquote><p>例一:<br><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> i <span class="keyword">in</span> range(<span class="number">1</span>,<span class="number">5</span>):</span><br><span class="line">print(i)</span><br></pre></td></tr></table></figure></p><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="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br></pre></td></tr></table></figure><p>例二:<br><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> i <span class="keyword">in</span> range(<span class="number">5</span>):</span><br><span class="line">print(i)</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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="number">0</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br></pre></td></tr></table></figure></p><p>例三:<br><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="meta">&gt;&gt;&gt; </span>list(range(<span class="number">5</span>))</span><br><span class="line">[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>list(range(<span class="number">0</span>))</span><br><span class="line">[]</span><br><span class="line">&gt;&gt;&gt;list(range(<span class="number">0</span>, <span class="number">30</span>, <span class="number">5</span>))</span><br><span class="line">[<span class="number">0</span>, <span class="number">5</span>, <span class="number">10</span>, <span class="number">15</span>, <span class="number">20</span>, <span class="number">25</span>]</span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>list(range(<span class="number">0</span>, <span class="number">10</span>, <span class="number">2</span>))</span><br><span class="line">[<span class="number">0</span>, <span class="number">2</span>, <span class="number">4</span>, <span class="number">6</span>, <span class="number">8</span>]</span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>list(range(<span class="number">0</span>, <span class="number">-10</span>, <span class="number">-1</span>))</span><br><span class="line">[<span class="number">0</span>, <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><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>list(range(<span class="number">1</span>, <span class="number">0</span>))</span><br><span class="line">[]</span><br></pre></td></tr></table></figure></p><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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">squares = []</span><br><span class="line"><span class="keyword">for</span> value <span class="keyword">in</span> range(<span class="number">1</span>,<span class="number">11</span>):</span><br><span class="line">square = value ** <span class="number">2</span></span><br><span class="line">squares.append(square)</span><br><span class="line">print(squares)</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></pre></td><td class="code"><pre><span class="line">[<span class="number">1</span>, <span class="number">4</span>, <span class="number">9</span>, <span class="number">16</span>, <span class="number">25</span>, <span class="number">36</span>, <span class="number">49</span>, <span class="number">64</span>, <span class="number">81</span>, <span class="number">100</span>]</span><br></pre></td></tr></table></figure><h1 id="3-2-1-对数字列表执行简单的统计计算"><a href="#3-2-1-对数字列表执行简单的统计计算" class="headerlink" title="- 3.2.1 对数字列表执行简单的统计计算 "></a><font color="#FF0000">- 3.2.1 对数字列表执行简单的统计计算 </font></h1><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"><span class="meta">&gt;&gt;&gt; </span>digits = [<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">0</span>]</span><br><span class="line"><span class="meta">&gt;&gt;&gt; </span>min(digits)</span><br><span class="line"><span class="number">0</span></span><br><span class="line">&gt;&gt;&gt;max(digits)</span><br><span class="line"><span class="number">9</span></span><br><span class="line">&gt;&gt;&gt;sum(digits)</span><br><span class="line"><span class="number">45</span></span><br></pre></td></tr></table></figure><h1 id="3-2-2-列表解析"><a href="#3-2-2-列表解析" class="headerlink" title="- 3.2.2 列表解析 "></a><font color="#FF0000">- 3.2.2 列表解析 </font></h1><p> 列表解析能够让比如3.2中的例四更加简化,只需要一行代码就能生成这样的列表,列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素:</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">squares = [value ** <span class="number">2</span> <span class="keyword">for</span> value <span class="keyword">in</span> range(<span class="number">1</span>,<span class="number">11</span>)]</span><br><span class="line">print(squares)</span><br></pre></td></tr></table></figure><p>在这个示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value ** 2<br>输出结果如下:</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="number">1</span>, <span class="number">4</span>, <span class="number">9</span>, <span class="number">16</span>, <span class="number">25</span>, <span class="number">36</span>, <span class="number">49</span>, <span class="number">64</span>, <span class="number">81</span>, <span class="number">100</span>]</span><br></pre></td></tr></table></figure><h1 id="3-3-使用列表的一部分"><a href="#3-3-使用列表的一部分" class="headerlink" title="- 3.3 使用列表的一部分 "></a><font color="#FF0000">- 3.3 使用列表的一部分 </font></h1><p> 处理列表的部分元素——Python称之为切片</p><h1 id="3-3-1-切片"><a href="#3-3-1-切片" class="headerlink" title="- 3.3.1 切片 "></a><font color="#FF0000">- 3.3.1 切片 </font></h1><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">list = [<span class="string">'a'</span>,<span class="string">'b'</span>,<span class="string">'c'</span>,<span class="string">'d'</span>,<span class="string">'e'</span>,<span class="string">'f'</span>]</span><br><span class="line">print(list[:])     <span class="comment">#省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表</span></span><br><span class="line">print(list[:<span class="number">3</span>])     <span class="comment">#省略起始位置的索引,默认起始位置从头开始,结束位置索引为2</span></span><br><span class="line">print(list[<span class="number">3</span>:])     <span class="comment">#省略结束位置的索引,默认结束位置为最后一个,开始位置索引为3</span></span><br><span class="line">print(list[<span class="number">1</span>:<span class="number">4</span>])    <span class="comment">#开始位置索引为1,结束位置索引为3,顾头不顾尾</span></span><br><span class="line">print(list[<span class="number">4</span>:<span class="number">1</span>])    <span class="comment">#从左到右索引,因此为空值</span></span><br><span class="line">print(list[<span class="number">-1</span>:<span class="number">-3</span>])   <span class="comment">#从左到右索引,因此为空值</span></span><br><span class="line">print(list[<span class="number">-3</span>:<span class="number">-1</span>])   <span class="comment">#开始位置索引为倒数第三个,结束位置索引为倒数第二个</span></span><br><span class="line">print(list[<span class="number">1</span>:<span class="number">5</span>:<span class="number">2</span>])   <span class="comment">#开始位置索引为1,结束位置索引为4,间隔2</span></span><br><span class="line">print(list[<span class="number">5</span>:<span class="number">1</span>:<span class="number">-1</span>])   <span class="comment">#反向取值,开始位置索引为5,结束位置索引为2</span></span><br><span class="line">print(list[::<span class="number">-1</span>])    <span class="comment">#反向取值,反向输出列表</span></span><br></pre></td></tr></table></figure><h1 id="3-3-2-遍历列表"><a href="#3-3-2-遍历列表" class="headerlink" title="- 3.3.2 遍历列表 "></a><font color="#FF0000">- 3.3.2 遍历列表 </font></h1><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">players = [<span class="string">'charles'</span> , <span class="string">'martina'</span> , <span class="string">'michael'</span> , <span class="string">'florence'</span> , <span class="string">'eli'</span>]</span><br><span class="line">print(<span class="string">"Here are the first three players on my team:"</span>)</span><br><span class="line"><span class="keyword">for</span> player <span class="keyword">in</span> players[:<span class="number">3</span>]:</span><br><span class="line">print(player.title())</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">Here are the first three players on my team:</span><br><span class="line">Charles</span><br><span class="line">Martina</span><br><span class="line">Michael</span><br></pre></td></tr></table></figure><h1 id="3-3-3-复制列表"><a href="#3-3-3-复制列表" class="headerlink" title="- 3.3.3 复制列表 "></a><font color="#FF0000">- 3.3.3 复制列表 </font></h1><p>要复制列表,可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引<code>([:])</code>,这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表:</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">my_foods = [<span class="string">'pizza'</span> , <span class="string">'falafel'</span> , <span class="string">'carrot cake'</span>]</span><br><span class="line">friend_foods = my_foods[:]</span><br><span class="line">print(<span class="string">"My favorite foods are:"</span>)</span><br><span class="line">print(my_foods)</span><br><span class="line">print(<span class="string">"\nMy friend's favorite foods are:"</span>)</span><br><span class="line">print(friend_foods)</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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">My favorite foods are:</span><br><span class="line">[<span class="string">'pizza'</span>, <span class="string">'falafel'</span>, <span class="string">'carrot cake'</span>]</span><br><span class="line"></span><br><span class="line">My friend<span class="string">'s favorite foods are:</span></span><br><span class="line"><span class="string">['</span>pizza<span class="string">', '</span>falafel<span class="string">', '</span>carrot cake<span class="string">']</span></span><br></pre></td></tr></table></figure><p>为核实我们的确有两个列表,下面在每个列表中都添加一种食品,并核实每个列表都记录了相应人员喜欢的食品:<br><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">my_foods = [<span class="string">'pizza'</span> , <span class="string">'falafel'</span> , <span class="string">'carrot cake'</span>]</span><br><span class="line">friend_foods = my_foods[:]</span><br><span class="line"></span><br><span class="line">my_foods.append(<span class="string">'cannoli'</span>)</span><br><span class="line">friend_foods.append(<span class="string">'ice cream'</span>)</span><br><span class="line"></span><br><span class="line">print(<span class="string">"My favorite foods are:"</span>)</span><br><span class="line">print(my_foods)</span><br><span class="line">print(<span class="string">"\nMy friend's favorite foods are:"</span>)</span><br><span class="line">print(friend_foods)</span><br></pre></td></tr></table></figure></p><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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">My favorite foods are:</span><br><span class="line">[<span class="string">'pizza'</span>, <span class="string">'falafel'</span>, <span class="string">'carrot cake'</span>, <span class="string">'cannoli'</span>]</span><br><span class="line"></span><br><span class="line">My friend<span class="string">'s favorite foods are:</span></span><br><span class="line"><span class="string">['</span>pizza<span class="string">', '</span>falafel<span class="string">', '</span>carrot cake<span class="string">', '</span>ice cream<span class="string">']</span></span><br></pre></td></tr></table></figure><p>输出结果表明,’cannoli’包含在我喜欢的食品列表中,而’ice cream’没有;’ice cream’包含在我朋友喜欢的食品中,而’cannoli’没有,假如我们只是简单的将my_foods赋给friend_foods,就不能得到两个列表。下面是错误示例:</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></pre></td><td class="code"><pre><span class="line">my_foods = [<span class="string">'pizza'</span> , <span class="string">'falafel'</span> , <span class="string">'carrot cake'</span>]</span><br><span class="line">friend_foods = my_foods    <span class="comment">#错误写法</span></span><br><span class="line"></span><br><span class="line">my_foods.append(<span class="string">'cannoli'</span>)</span><br><span class="line">friend_foods.append(<span class="string">'ice cream'</span>)</span><br><span class="line"></span><br><span class="line">print(<span class="string">"My favorite foods are:"</span>)</span><br><span class="line">print(my_foods)</span><br><span class="line">print(<span class="string">"\nMy friend's favorite foods are:"</span>)</span><br><span class="line">print(friend_foods)</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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">My favorite foods are:</span><br><span class="line">[<span class="string">'pizza'</span>, <span class="string">'falafel'</span>, <span class="string">'carrot cake'</span>, <span class="string">'cannoli'</span>, <span class="string">'ice cream'</span>]</span><br><span class="line"></span><br><span class="line">My friend<span class="string">'s favorite foods are:</span></span><br><span class="line"><span class="string">['</span>pizza<span class="string">', '</span>falafel<span class="string">', '</span>carrot cake<span class="string">', '</span>cannoli<span class="string">', '</span>ice cream<span class="string">']</span></span><br></pre></td></tr></table></figure><h1 id="3-4-元组"><a href="#3-4-元组" class="headerlink" title="- 3.4 元组 "></a><font color="#FF0000">- 3.4 元组 </font></h1><p> Python将不能修改的值称为不可变的,而不可变的列表被称为元组</p><h1 id="3-4-1-定义元组"><a href="#3-4-1-定义元组" class="headerlink" title="- 3.4.1 定义元组 "></a><font color="#FF0000">- 3.4.1 定义元组 </font></h1><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">dimensions = (<span class="number">200</span>,<span class="number">50</span>)</span><br><span class="line">print(dimensions[<span class="number">0</span>])</span><br><span class="line">print(dimensions[<span class="number">1</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></pre></td><td class="code"><pre><span class="line"><span class="number">200</span></span><br><span class="line"><span class="number">50</span></span><br></pre></td></tr></table></figure><p>如果尝试修改元组中元素的值,将会导致Python返回类型错误消息,由于试图修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值:</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">dimensions = (<span class="number">200</span>,<span class="number">50</span>)</span><br><span class="line">dimensions[<span class="number">0</span>] = <span class="number">300</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">Traceback (most recent call last):</span><br><span class="line">  File <span class="string">"dimensions.py"</span>, line <span class="number">2</span>, <span class="keyword">in</span> &lt;module&gt;</span><br><span class="line">    dimensions[<span class="number">0</span>] = <span class="number">300</span></span><br><span class="line">TypeError: <span class="string">'tuple'</span> object does <span class="keyword">not</span> support item assignment</span><br></pre></td></tr></table></figure><h1 id="3-4-2-遍历元组中所有的值"><a href="#3-4-2-遍历元组中所有的值" class="headerlink" title="- 3.4.2 遍历元组中所有的值 "></a><font color="#FF0000">- 3.4.2 遍历元组中所有的值 </font></h1><p>  像列表一样,元组也可以使用for循环来遍历元组中的所有值:</p><p>例一:<br><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">dimensions = (<span class="number">200</span>,<span class="number">100</span>,<span class="number">50</span>,<span class="number">6</span>)</span><br><span class="line"><span class="keyword">for</span> dimension <span class="keyword">in</span> dimensions:</span><br><span class="line">print(dimension)</span><br></pre></td></tr></table></figure></p><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="number">200</span></span><br><span class="line"><span class="number">100</span></span><br><span class="line"><span class="number">50</span></span><br><span class="line"><span class="number">6</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></pre></td><td class="code"><pre><span class="line">dimensions = (<span class="number">200</span>,<span class="number">100</span>,<span class="number">50</span>,<span class="number">6</span>)</span><br><span class="line"><span class="keyword">for</span> dimension <span class="keyword">in</span> dimensions[:<span class="number">3</span>]:</span><br><span class="line">print(dimension)</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"><span class="number">200</span></span><br><span class="line"><span class="number">100</span></span><br><span class="line"><span class="number">50</span></span><br></pre></td></tr></table></figure><h1 id="3-4-3-修改元组变量"><a href="#3-4-3-修改元组变量" class="headerlink" title="- 3.4.3 修改元组变量 "></a><font color="#FF0000">- 3.4.3 修改元组变量 </font></h1><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><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></pre></td><td class="code"><pre><span class="line">dimensions = (<span class="number">200</span>,<span class="number">50</span>)</span><br><span class="line">print(<span class="string">"Original dimensions:"</span>)</span><br><span class="line"><span class="keyword">for</span> dimension <span class="keyword">in</span> dimensions:</span><br><span class="line">print(dimension)</span><br><span class="line"></span><br><span class="line">dimensions = (<span class="number">400</span>,<span class="number">100</span>)</span><br><span class="line">print(<span class="string">"\nModified dimensions:"</span>)</span><br><span class="line"><span class="keyword">for</span> dimension <span class="keyword">in</span> dimensions:</span><br><span class="line">print(dimension)</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><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">Original dimensions:</span><br><span class="line"><span class="number">200</span></span><br><span class="line"><span class="number">50</span></span><br><span class="line"></span><br><span class="line">Modified dimensions:</span><br><span class="line"><span class="number">400</span></span><br><span class="line"><span class="number">100</span></span><br></pre></td></tr></table></figure><p>我们首先定义了一个元组,并将其储存的尺寸打印了出来;然后将一个新元组储存到变量dimensions中,打印新的尺寸;相比于列表,元组是更简单的数据结构。如果需要储存的一组值在程序的整个生命周期内都不变,可使用元组</p>]]></content>
    
    <summary type="html">
    
      Python3 【操作列表】
    
    </summary>
    
T
TRHX 已提交
317
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
T
TRHX 已提交
318 319
    
    
T
TRHX 已提交
320
      <category term="操作列表" scheme="https://itrhx.com/tags/%E6%93%8D%E4%BD%9C%E5%88%97%E8%A1%A8/"/>
T
TRHX 已提交
321 322 323 324 325
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C02</title>
T
TRHX 已提交
326 327
    <link href="https://itrhx.com/2018/09/15/A08-Python3-self-study-notes-C02/"/>
    <id>https://itrhx.com/2018/09/15/A08-Python3-self-study-notes-C02/</id>
T
TRHX 已提交
328 329 330 331 332 333 334 335 336 337 338
    <published>2018-09-14T17:41:46.929Z</published>
    <updated>2018-09-15T17:09:42.760Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><center><font color="#4094C7" size="4">Python3 自学笔记第二章【列表】</font></center><hr><h1 id="2-1列表是什么"><a href="#2-1列表是什么" class="headerlink" title=" - 2.1列表是什么 "></a><font color="#FF0000"> - 2.1列表是什么 </font></h1><p> 列表由一系列按特定顺序的元素组成,在 Python 中用方括号( [ ] )来表示列表,并用逗号来分隔其中的元素,例:</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">list1 = [<span class="string">'a'</span>,<span class="string">'b'</span>,<span class="string">'c'</span>,<span class="string">'d'</span>,<span class="string">'e'</span>,<span class="string">'f'</span>]</span><br><span class="line">list2 = [<span class="string">'abc'</span>, <span class="string">'xyz'</span>, <span class="number">2018</span>, <span class="number">2020</span>]</span><br><span class="line">list3 = [<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><br><span class="line">list4 = [<span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"c"</span>, <span class="string">"d"</span>]</span><br><span class="line">print(list1, list2, list3 ,list4)</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></pre></td><td class="code"><pre><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>] [<span class="string">'abc'</span>, <span class="string">'xyz'</span>, <span class="number">2018</span>, <span class="number">2020</span>] [<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="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br></pre></td></tr></table></figure><h1 id="2-1-1访问列表元素"><a href="#2-1-1访问列表元素" class="headerlink" title=" - 2.1.1访问列表元素 "></a><font color="#FF0000"> - 2.1.1访问列表元素 </font></h1><p> 列表是有序集合,因此要访问列表的元素,只需要将该元素的位置或索引告诉Python即可,<font color="#FF0000">注意:在Python中的第一个列表元素的索引为0,而不是1</font></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">list = [<span class="string">'a'</span>,<span class="string">'b'</span>,<span class="string">'c'</span>,<span class="string">'d'</span>,<span class="string">'e'</span>,<span class="string">'f'</span>]</span><br><span class="line">print(list[<span class="number">0</span>])</span><br><span class="line">print(list[<span class="number">3</span>])</span><br><span class="line">print(list[<span class="number">-1</span>])   <span class="comment">#Python为访问最后一个列表元素提供了一种特殊语法,通过将索引指定为-1,可以让Python返回最后一个列表元素</span></span><br><span class="line">print(list[<span class="number">-3</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">d</span><br><span class="line">f</span><br><span class="line">d</span><br></pre></td></tr></table></figure><h1 id="2-1-2列表切片"><a href="#2-1-2列表切片" class="headerlink" title=" - 2.1.2列表切片 "></a><font color="#FF0000"> - 2.1.2列表切片 </font></h1><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">list = [<span class="string">'a'</span>,<span class="string">'b'</span>,<span class="string">'c'</span>,<span class="string">'d'</span>,<span class="string">'e'</span>,<span class="string">'f'</span>]</span><br><span class="line">print(list[:])     <span class="comment">#省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表</span></span><br><span class="line">print(list[:<span class="number">3</span>])     <span class="comment">#省略起始位置的索引,默认起始位置从头开始,结束位置索引为2</span></span><br><span class="line">print(list[<span class="number">3</span>:])     <span class="comment">#省略结束位置的索引,默认结束位置为最后一个,开始位置索引为3</span></span><br><span class="line">print(list[<span class="number">1</span>:<span class="number">4</span>])    <span class="comment">#开始位置索引为1,结束位置索引为3,顾头不顾尾</span></span><br><span class="line">print(list[<span class="number">4</span>:<span class="number">1</span>])    <span class="comment">#从左到右索引,因此为空值</span></span><br><span class="line">print(list[<span class="number">-1</span>:<span class="number">-3</span>])   <span class="comment">#从左到右索引,因此为空值</span></span><br><span class="line">print(list[<span class="number">-3</span>:<span class="number">-1</span>])   <span class="comment">#开始位置索引为倒数第三个,结束位置索引为倒数第二个</span></span><br><span class="line">print(list[<span class="number">1</span>:<span class="number">5</span>:<span class="number">2</span>])   <span class="comment">#开始位置索引为1,结束位置索引为4,间隔2</span></span><br><span class="line">print(list[<span class="number">5</span>:<span class="number">1</span>:<span class="number">-1</span>])   <span class="comment">#反向取值,开始位置索引为5,结束位置索引为2</span></span><br><span class="line">print(list[::<span class="number">-1</span>])    <span class="comment">#反向取值,反向输出列表</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><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="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]</span><br><span class="line">[<span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">[<span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br><span class="line">[]</span><br><span class="line">[]</span><br><span class="line">[<span class="string">'d'</span>, <span class="string">'e'</span>]</span><br><span class="line">[<span class="string">'b'</span>, <span class="string">'d'</span>]</span><br><span class="line">[<span class="string">'f'</span>, <span class="string">'e'</span>, <span class="string">'d'</span>, <span class="string">'c'</span>]</span><br><span class="line">[<span class="string">'f'</span>, <span class="string">'e'</span>, <span class="string">'d'</span>, <span class="string">'c'</span>, <span class="string">'b'</span>, <span class="string">'a'</span>]</span><br></pre></td></tr></table></figure><h1 id="2-1-3使用列表中的各个值"><a href="#2-1-3使用列表中的各个值" class="headerlink" title=" - 2.1.3使用列表中的各个值 "></a><font color="#FF0000"> - 2.1.3使用列表中的各个值 </font></h1><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">list = [<span class="string">'python'</span>, <span class="string">'c'</span>, <span class="string">'c++'</span>, <span class="string">'java'</span>, <span class="string">'php'</span>]</span><br><span class="line">message = <span class="string">"My favorite language is "</span> + list[<span class="number">0</span>].title() + <span class="string">"!"</span></span><br><span class="line">print(message)</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></pre></td><td class="code"><pre><span class="line">My favorite language <span class="keyword">is</span> Python!</span><br></pre></td></tr></table></figure><h1 id="2-1-4修改元素"><a href="#2-1-4修改元素" class="headerlink" title=" - 2.1.4修改元素 "></a><font color="#FF0000"> - 2.1.4修改元素 </font></h1><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">names = [<span class="string">'zhangsan'</span>, <span class="string">'lishi'</span>, <span class="string">'wanger'</span>, <span class="string">'liming'</span>, <span class="string">'xiaowang'</span>]</span><br><span class="line">print(names)</span><br><span class="line">names[<span class="number">1</span>] = <span class="string">'lifang'</span></span><br><span class="line">print(names)</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></pre></td><td class="code"><pre><span class="line">[<span class="string">'zhangsan'</span>, <span class="string">'lishi'</span>, <span class="string">'wanger'</span>, <span class="string">'liming'</span>, <span class="string">'xiaowang'</span>]</span><br><span class="line">[<span class="string">'zhangsan'</span>, <span class="string">'lifang'</span>, <span class="string">'wanger'</span>, <span class="string">'liming'</span>, <span class="string">'xiaowang'</span>]</span><br></pre></td></tr></table></figure><h1 id="2-1-5添加元素"><a href="#2-1-5添加元素" class="headerlink" title=" - 2.1.5添加元素 "></a><font color="#FF0000"> - 2.1.5添加元素 </font></h1> <font color="#FF0000"> - 使用方法 append() 在列表末尾添加元素 </font><br><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">list = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">print(list)</span><br><span class="line">list.append(<span class="string">'g'</span>)</span><br><span class="line">print(list)</span><br></pre></td></tr></table></figure><br><br>输出结果如下:<br><br><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="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>, <span class="string">'g'</span>]</span><br></pre></td></tr></table></figure><br><br> <font color="#FF0000"> - 使用方法 insert() 在列表指定位置添加元素 </font> <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">list = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">print(list)</span><br><span class="line">list.insert(<span class="number">2</span>,<span class="string">"h"</span>)    <span class="comment">#其中括号里的数字表示要插入的位置,此后面的元素将右移一个位置</span></span><br><span class="line">print(list)</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></pre></td><td class="code"><pre><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'h'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>, <span class="string">'g'</span>]</span><br></pre></td></tr></table></figure><h1 id="2-1-6删除元素"><a href="#2-1-6删除元素" class="headerlink" title=" - 2.1.6删除元素 "></a><font color="#FF0000"> - 2.1.6删除元素 </font></h1><font color="#FF0000"> - 使用 del 语句删除元素 </font><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">list = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">print(list)</span><br><span class="line"><span class="keyword">del</span> list[<span class="number">3</span>]</span><br><span class="line">print(list)</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></pre></td><td class="code"><pre><span class="line">list = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">list = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br></pre></td></tr></table></figure><font color="#FF0000"> - 使用方法 pop() 删除最后一个元素</font><br>方法 pop() 可以删除列表末尾的元素,并让你能够接着使用它。术语<font color="#FF0000">弹出(pop)</font>源自这样的类比:列表就像是一个栈,而删除列表末尾的元素就相当于弹出栈顶元素:<br><br><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">list = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">print(list)</span><br><span class="line">new_list = list.pop()</span><br><span class="line">print(list)</span><br><span class="line">print(new_list)</span><br></pre></td></tr></table></figure><br><br>输出结果如下:<br><br><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="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>]</span><br><span class="line">f</span><br></pre></td></tr></table></figure><br><br><font color="#FF0000"> - 使用方法 pop() 删除任意位置元素</font><br>可以使用 pop() 来删除列表中任何位置的元素,只需要在括号中指定要删除的元素的索引即可:<br><br><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">list = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">print(list)</span><br><span class="line">new_list = list.pop(<span class="number">1</span>)</span><br><span class="line">print(list)</span><br><span class="line">print(new_list)</span><br></pre></td></tr></table></figure><br><br>输出结果如下:<br><br><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="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">b</span><br></pre></td></tr></table></figure><br><br><font color="#FF0000"> - 使用方法 remove() 删除未知位置元素</font><br>当我们不知道元素的位置,只知道元素的值的时候,就可以使用方法 remove()<br><br><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">list = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">print(list)</span><br><span class="line">list.remove(<span class="string">'d'</span>)</span><br><span class="line">print(list)</span><br></pre></td></tr></table></figure><br><br>输出结果如下:<br><br><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="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>]</span><br></pre></td></tr></table></figure><br><br> # <font color="#FF0000"> - 2.1.7使用方法 index() 查找指定元素位置 </font><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">list = [<span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"c"</span>, <span class="string">"d"</span>, <span class="string">"e"</span>, <span class="string">"a"</span>]</span><br><span class="line">print(list.index(<span class="string">'c'</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></pre></td><td class="code"><pre><span class="line"><span class="number">2</span></span><br></pre></td></tr></table></figure><h1 id="2-1-8使用方法-count-统计指定元素数量"><a href="#2-1-8使用方法-count-统计指定元素数量" class="headerlink" title=" - 2.1.8使用方法 count() 统计指定元素数量 "></a><font color="#FF0000"> - 2.1.8使用方法 count() 统计指定元素数量 </font></h1><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">list = [<span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"c"</span>, <span class="string">"d"</span>, <span class="string">"e"</span>, <span class="string">"a"</span>]</span><br><span class="line">print(list.count(<span class="string">'a'</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></pre></td><td class="code"><pre><span class="line"><span class="number">2</span></span><br></pre></td></tr></table></figure><h1 id="2-1-9清空列表"><a href="#2-1-9清空列表" class="headerlink" title=" - 2.1.9清空列表 "></a><font color="#FF0000"> - 2.1.9清空列表 </font></h1><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">list = [<span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"c"</span>, <span class="string">"d"</span>, <span class="string">"e"</span>, <span class="string">"a"</span>]</span><br><span class="line">list.clear()</span><br><span class="line">print(list)</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></pre></td><td class="code"><pre><span class="line">[]</span><br></pre></td></tr></table></figure><h1 id="2-2组织列表"><a href="#2-2组织列表" class="headerlink" title=" - 2.2组织列表 "></a><font color="#FF0000"> - 2.2组织列表 </font></h1><p>在创建的列表中,元素的排列顺序常常是无法预测的,因为我们并非总能控制用户提供数据的顺序。有时候,我们希望保留列表元素最初的排列顺序,而有时候又需要调整排列顺序。Python提供了很多组织列表的方式,可根据具体情况选用</p><h1 id="2-2-1使用方法-sort-对列表进行永久排序"><a href="#2-2-1使用方法-sort-对列表进行永久排序" class="headerlink" title=" - 2.2.1使用方法 sort() 对列表进行永久排序 "></a><font color="#FF0000"> - 2.2.1使用方法 sort() 对列表进行永久排序 </font></h1><p>使用方法 sort() 可以对列表按照特殊符号,数字,大写字母,小写字母顺序进行永久排序:</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">cars = [<span class="string">'bmw'</span>, <span class="string">'audi'</span>, <span class="string">'toyota'</span>, <span class="string">'subaru'</span>]</span><br><span class="line">cars.sort()</span><br><span class="line">print(cars)</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></pre></td><td class="code"><pre><span class="line">[<span class="string">'audi'</span>, <span class="string">'bmw'</span>, <span class="string">'subaru'</span>, <span class="string">'toyota'</span>]</span><br></pre></td></tr></table></figure><p>还可以按与字母顺序相反的顺序排列列表元素,只需要向 sort() 方法传递参数 reverse = True 就可以了:</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">cars = [<span class="string">'bmw'</span>, <span class="string">'audi'</span>, <span class="string">'toyota'</span>, <span class="string">'subaru'</span>]</span><br><span class="line">cars.sort(reverse = <span class="keyword">True</span>)</span><br><span class="line">print(cars)</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></pre></td><td class="code"><pre><span class="line">[<span class="string">'toyota'</span>, <span class="string">'subaru'</span>, <span class="string">'bmw'</span>, <span class="string">'audi'</span>]</span><br></pre></td></tr></table></figure><h1 id="2-2-2使用函数-sorted-对列表进行临时排序"><a href="#2-2-2使用函数-sorted-对列表进行临时排序" class="headerlink" title=" - 2.2.2使用函数 sorted() 对列表进行临时排序 "></a><font color="#FF0000"> - 2.2.2使用函数 sorted() 对列表进行临时排序 </font></h1><p>要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序:</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></pre></td><td class="code"><pre><span class="line">cars = [<span class="string">'bmw'</span>, <span class="string">'audi'</span>, <span class="string">'toyota'</span>, <span class="string">'subaru'</span>]</span><br><span class="line">print(<span class="string">"Here is the original list:"</span>)</span><br><span class="line">print(cars)</span><br><span class="line">print(<span class="string">"\nHere is the sorted list:"</span>)</span><br><span class="line">print(sorted(cars))</span><br><span class="line">print(<span class="string">"\nHere is the sorted reverse list:"</span>)</span><br><span class="line">print(sorted(cars, reverse=<span class="keyword">True</span>))</span><br><span class="line">print(<span class="string">"\nHere is the original list again:"</span>)</span><br><span class="line">print(cars)</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><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">Here <span class="keyword">is</span> the original list:</span><br><span class="line">[<span class="string">'bmw'</span>, <span class="string">'audi'</span>, <span class="string">'toyota'</span>, <span class="string">'subaru'</span>]</span><br><span class="line"></span><br><span class="line">Here <span class="keyword">is</span> the sorted list:</span><br><span class="line">[<span class="string">'audi'</span>, <span class="string">'bmw'</span>, <span class="string">'subaru'</span>, <span class="string">'toyota'</span>]</span><br><span class="line"></span><br><span class="line">Here <span class="keyword">is</span> the sorted reverse list:</span><br><span class="line">[<span class="string">'toyota'</span>, <span class="string">'subaru'</span>, <span class="string">'bmw'</span>, <span class="string">'audi'</span>]</span><br><span class="line"></span><br><span class="line">Here <span class="keyword">is</span> the original list again:</span><br><span class="line">[<span class="string">'bmw'</span>, <span class="string">'audi'</span>, <span class="string">'toyota'</span>, <span class="string">'subaru'</span>]</span><br></pre></td></tr></table></figure><h1 id="2-2-3使用方法-reverse-对列表进行反向排序"><a href="#2-2-3使用方法-reverse-对列表进行反向排序" class="headerlink" title=" - 2.2.3使用方法 reverse() 对列表进行反向排序 "></a><font color="#FF0000"> - 2.2.3使用方法 reverse() 对列表进行反向排序 </font></h1><p>要反转列表元素的排列顺序,可使用方法 reverse() </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">cars = [<span class="string">'bmw'</span>, <span class="string">'audi'</span>, <span class="string">'toyota'</span>, <span class="string">'subaru'</span>]</span><br><span class="line">cars.reverse()</span><br><span class="line">print(cars)</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></pre></td><td class="code"><pre><span class="line">[<span class="string">'subaru'</span>, <span class="string">'toyota'</span>, <span class="string">'audi'</span>, <span class="string">'bmw'</span>]</span><br></pre></td></tr></table></figure><h1 id="2-2-4确定列表的长度"><a href="#2-2-4确定列表的长度" class="headerlink" title=" - 2.2.4确定列表的长度 "></a><font color="#FF0000"> - 2.2.4确定列表的长度 </font></h1><p>使用函数 len() 可以快速获悉列表的长度:</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">&gt;&gt;&gt;cars = [<span class="string">'bmw'</span>, <span class="string">'audi'</span>, <span class="string">'toyota'</span>, <span class="string">'subaru'</span>]</span><br><span class="line">&gt;&gt;&gt;len(cars)</span><br><span class="line"><span class="number">4</span></span><br></pre></td></tr></table></figure><h1 id="2-2-5合并列表"><a href="#2-2-5合并列表" class="headerlink" title=" - 2.2.5合并列表 "></a><font color="#FF0000"> - 2.2.5合并列表 </font></h1><font color="#FF0000"> - 使用方法 extend() 合并列表</font><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">list1 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line">list2 = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br><span class="line">list1.extend(list2)    <span class="comment">#将列表list2添加到list1当中去</span></span><br><span class="line">print(list1)</span><br><span class="line">print(list2)</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></pre></td><td class="code"><pre><span class="line">[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br></pre></td></tr></table></figure><font color="#FF0000"> - 使用 “+” 号合并列表</font><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">list1 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line">list2 = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br><span class="line">print(list1 + list2)</span><br><span class="line">print(list2 + list1)</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></pre></td><td class="code"><pre><span class="line">[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br></pre></td></tr></table></figure><font color="#FF0000"> - 使用切片合并列表</font><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">list1 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line">list2 = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br><span class="line">list1[len(list1) : len(list1)] = list2   <span class="comment">#len(list1)代表要将list2插入list1中的位置</span></span><br><span class="line">print(list1)</span><br><span class="line"></span><br><span class="line">list1 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line">list2 = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br><span class="line">list1[<span class="number">0</span> :<span class="number">0</span>] = list2</span><br><span class="line">print(list1)</span><br><span class="line"></span><br><span class="line">list1 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line">list2 = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br><span class="line">list1[<span class="number">1</span>:<span class="number">1</span>] = list2</span><br><span class="line">print(list1)</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">[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line">[<span class="number">1</span>, <span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      Python3 【列表】
    
    </summary>
    
T
TRHX 已提交
339
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
T
TRHX 已提交
340 341
    
    
T
TRHX 已提交
342
      <category term="列表" scheme="https://itrhx.com/tags/%E5%88%97%E8%A1%A8/"/>
T
TRHX 已提交
343 344 345 346 347
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C01</title>
T
TRHX 已提交
348 349
    <link href="https://itrhx.com/2018/09/10/A07-Python3-self-study-notes-C01/"/>
    <id>https://itrhx.com/2018/09/10/A07-Python3-self-study-notes-C01/</id>
T
TRHX 已提交
350 351 352 353 354 355 356 357 358 359 360
    <published>2018-09-10T15:55:00.947Z</published>
    <updated>2018-09-15T17:09:09.035Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><center><font color="#4094C7" size="4">Python3 自学笔记第一章【变量和简单数据类型】</font></center><hr><h1 id="1-1变量的命名和使用"><a href="#1-1变量的命名和使用" class="headerlink" title=" - 1.1变量的命名和使用 "></a><font color="#FF0000"> - 1.1变量的命名和使用 </font></h1><blockquote><p>变量名只能包含字母、数字和下划线。变量名可以字母或者下划线打头,但不能以数字开头,例如,可以将变量命名为message_1,但不能将其命名为1_message</p></blockquote><blockquote><p>变量名不能包含空格,但可使用下划线来分割其中的单词,例如,变量名greeting_message可行,但变量名greeting message会引发错误</p></blockquote><blockquote><p>不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print</p></blockquote><blockquote><p>变量名应既简短又具有描述性,例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好</p></blockquote><blockquote><p>慎用小写字母l和大写字母O,因为它们可能被人看错成数字1和0</p></blockquote><h1 id="1-2字符串"><a href="#1-2字符串" class="headerlink" title=" - 1.2字符串 "></a><font color="#FF0000"> - 1.2字符串 </font></h1><p> 字符串就是一系列字符,在Python中,用引号括起来的都是字符串,其中的引号可以是单引号也可以双引号:</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="string">"This is a string."</span></span><br><span class="line"><span class="string">'This is also a string.'</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></pre></td><td class="code"><pre><span class="line"><span class="string">'I told my friend,"Python is my favorite language!"'</span></span><br><span class="line"><span class="string">"The language 'Python' is named er Monty Python,not the snake."</span></span><br><span class="line"><span class="string">"One of Python's strengths is i diverse and supportive community."</span></span><br></pre></td></tr></table></figure><h1 id="1-2-1使用方法修改字符串的大小写"><a href="#1-2-1使用方法修改字符串的大小写" class="headerlink" title=" - 1.2.1使用方法修改字符串的大小写"></a><font color="#FF0000"> - 1.2.1使用方法修改字符串的大小写</font></h1><p>三种处理方法如下:<br><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">title()     <span class="comment">#将字符串每个单词的首字母都改为大写</span></span><br><span class="line">upper()     <span class="comment">#将字符串的每个字母都改为大写</span></span><br><span class="line">lower()     <span class="comment">#将字符串的每个字母都改为小写</span></span><br></pre></td></tr></table></figure></p><p>例如:<br><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">message = <span class="string">"I love you!"</span></span><br><span class="line">print(name.title())</span><br><span class="line">print(name.upper())</span><br><span class="line">print(name.lower())</span><br></pre></td></tr></table></figure></p><p>输出结果如下:<br><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">I Love You!</span><br><span class="line">I LOVE YOU!</span><br><span class="line">i love you!</span><br></pre></td></tr></table></figure></p><h1 id="1-2-2合并(拼接)字符串"><a href="#1-2-2合并(拼接)字符串" class="headerlink" title=" - 1.2.2合并(拼接)字符串"></a><font color="#FF0000"> - 1.2.2合并(拼接)字符串</font></h1><p>Python使用加号(+)来合并字符串,举例说明:</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">first_name = <span class="string">"I"</span></span><br><span class="line">second_name = <span class="string">"love"</span></span><br><span class="line">third_name = <span class="string">"python"</span></span><br><span class="line">full_name = first_name + <span class="string">" "</span> + second_name + <span class="string">" "</span> + third_time</span><br><span class="line">print(full_name.title() + <span class="string">"!"</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></pre></td><td class="code"><pre><span class="line">I Love Python!</span><br></pre></td></tr></table></figure><h1 id="1-2-3使用制表符或换行符来添加空白"><a href="#1-2-3使用制表符或换行符来添加空白" class="headerlink" title=" - 1.2.3使用制表符或换行符来添加空白"></a><font color="#FF0000"> - 1.2.3使用制表符或换行符来添加空白</font></h1><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">&gt;&gt;&gt;print(<span class="string">"\tPython"</span>)</span><br><span class="line">    Python</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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">&gt;&gt;&gt;print(<span class="string">"C\nC++\nPython\nJavaScript"</span>)</span><br><span class="line">C</span><br><span class="line">C++</span><br><span class="line">Python</span><br><span class="line">JavaScript</span><br></pre></td></tr></table></figure><center><font color="#FF0000"> 附表:Python转义符 </font><br><br><img src="https://i.imgur.com/Do9ja5A.png" alt=""><br><br></center><h1 id="1-2-4删除空白"><a href="#1-2-4删除空白" class="headerlink" title=" - 1.2.4删除空白"></a><font color="#FF0000"> - 1.2.4删除空白</font></h1><p>在Python中可用 lstrip()、rstrip()、strip() 分别删除字符串开头、结尾、全部的空白,举例说明:</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></pre></td><td class="code"><pre><span class="line">&gt;&gt;&gt;message = <span class="string">' python '</span></span><br><span class="line">&gt;&gt;&gt;message</span><br><span class="line"><span class="string">' python '</span></span><br><span class="line">&gt;&gt;&gt;message.lstrip()</span><br><span class="line"><span class="string">'python '</span></span><br><span class="line">&gt;&gt;&gt;message.rstrip()</span><br><span class="line"><span class="string">' python'</span></span><br><span class="line">&gt;&gt;&gt;message.strip()</span><br><span class="line"><span class="string">'python'</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">&gt;&gt;&gt;message = <span class="string">' python '</span></span><br><span class="line">&gt;&gt;&gt;message = message.strip()</span><br><span class="line">&gt;&gt;&gt;message</span><br><span class="line"><span class="string">'python'</span></span><br></pre></td></tr></table></figure><h1 id="1-3数字"><a href="#1-3数字" class="headerlink" title=" - 1.3数字"></a><font color="#FF0000"> - 1.3数字</font></h1><p>在编程中,经常使用数字来记录游戏得分、表示可视化数据、储存Web应用信息等。Python根据数字的用法以不同的方式处理它们</p><h1 id="1-3-1整数"><a href="#1-3-1整数" class="headerlink" title=" - 1.3.1整数"></a><font color="#FF0000"> - 1.3.1整数</font></h1><p>在Python中,可对整数执行加(+)减(-)乘(*)除(/)乘方(**)运算,同时也支持运算次序:</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></pre></td><td class="code"><pre><span class="line">&gt;&gt;&gt;<span class="number">3</span> + <span class="number">2</span></span><br><span class="line"><span class="number">5</span></span><br><span class="line">&gt;&gt;&gt;<span class="number">3</span> - <span class="number">2</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line">&gt;&gt;&gt;<span class="number">3</span> * <span class="number">2</span></span><br><span class="line"><span class="number">6</span></span><br><span class="line">&gt;&gt;&gt;<span class="number">3</span> \ <span class="number">2</span></span><br><span class="line"><span class="number">1.5</span></span><br><span class="line">&gt;&gt;&gt;<span class="number">3</span> ** <span class="number">2</span></span><br><span class="line"><span class="number">9</span></span><br><span class="line">&gt;&gt;&gt;<span class="number">3</span> ** <span class="number">3</span></span><br><span class="line"><span class="number">27</span></span><br><span class="line">&gt;&gt;&gt;<span class="number">2</span> + <span class="number">3</span> * <span class="number">4</span></span><br><span class="line"><span class="number">14</span></span><br><span class="line">&gt;&gt;&gt;(<span class="number">2</span> + <span class="number">3</span>) * <span class="number">4</span></span><br><span class="line"><span class="number">20</span></span><br></pre></td></tr></table></figure><h1 id="1-3-2浮点数"><a href="#1-3-2浮点数" class="headerlink" title=" - 1.3.2浮点数"></a><font color="#FF0000"> - 1.3.2浮点数</font></h1><p>Python将带小数点的数字都称为浮点数:</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">&gt;&gt;&gt;<span class="number">0.1</span> + <span class="number">0.1</span></span><br><span class="line"><span class="number">0.2</span></span><br><span class="line">&gt;&gt;&gt;<span class="number">2</span> * <span class="number">0.2</span></span><br><span class="line"><span class="number">0.4</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">&gt;&gt;&gt;<span class="number">0.2</span> + <span class="number">0.1</span></span><br><span class="line"><span class="number">0.30000000000000004</span></span><br><span class="line">&gt;&gt;&gt;<span class="number">3</span> * <span class="number">0.1</span></span><br><span class="line"><span class="number">0.30000000000000004</span></span><br></pre></td></tr></table></figure><h1 id="1-3-3使用函数-str-避免错误"><a href="#1-3-3使用函数-str-避免错误" class="headerlink" title=" - 1.3.3使用函数 str() 避免错误"></a><font color="#FF0000"> - 1.3.3使用函数 str() 避免错误</font></h1><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">age = <span class="number">23</span></span><br><span class="line">message = <span class="string">"Happy "</span> + age + <span class="string">"rd Birthday!"</span></span><br><span class="line">print(message)</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">Traceback (most recent call last):</span><br><span class="line">  File <span class="string">"birthday.py"</span>, line <span class="number">2</span>, <span class="keyword">in</span> &lt;module&gt;</span><br><span class="line">    message = <span class="string">"Happy "</span> + age + <span class="string">"rd Birthday!"</span></span><br><span class="line">TypeError: must be str, <span class="keyword">not</span> int</span><br></pre></td></tr></table></figure><p>这是一个类型错误,意味着Python无法识别我们使用的信息。在这个例子中,Python发现我们使用了一个值为整数(int)的变量,但它不知道该如何解读这个值,这个变量表示的可能是数值23,也可能是字符2和3。像上面这样的字符串中使用整数时,需要显式地指出我们希望Python将这个整数用作字符串。为此,可调用函数 str(),它让Python将非字符串值表示为字符串:</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">age = <span class="number">23</span></span><br><span class="line">message = <span class="string">"Happy "</span> + str(age) + <span class="string">"rd Birthday!"</span></span><br><span class="line">print(message)</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></pre></td><td class="code"><pre><span class="line">Happy <span class="number">23</span>rd Birthday!</span><br></pre></td></tr></table></figure><h1 id="1-4注释"><a href="#1-4注释" class="headerlink" title=" - 1.4注释"></a><font color="#FF0000"> - 1.4注释</font></h1><p>注释让我们能够使用自然语言在程序中添加说明,Python中注释有三种方法:</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></pre></td><td class="code"><pre><span class="line">print(<span class="string">"Hello Python!"</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment">#这是单行注释</span></span><br><span class="line"></span><br><span class="line"><span class="string">'''这是多行注释</span></span><br><span class="line"><span class="string">这是多行注释'''</span></span><br><span class="line"></span><br><span class="line"><span class="string">"""这也是多行注释</span></span><br><span class="line"><span class="string">这也是多行注释"""</span></span><br></pre></td></tr></table></figure>]]></content>
    
    <summary type="html">
    
      Python3 【变量和简单数据类型】
    
    </summary>
    
T
TRHX 已提交
361
      <category term="Python" scheme="https://itrhx.com/categories/Python/"/>
T
TRHX 已提交
362 363
    
    
T
TRHX 已提交
364
      <category term="数据类型" scheme="https://itrhx.com/tags/%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/"/>
T
TRHX 已提交
365
    
T
TRHX 已提交
366
      <category term="变量" scheme="https://itrhx.com/tags/%E5%8F%98%E9%87%8F/"/>
T
TRHX 已提交
367 368 369 370 371
    
  </entry>
  
  <entry>
    <title>VMware Pro 14 安装 Ubuntu 18.04 详细教程</title>
T
TRHX 已提交
372 373
    <link href="https://itrhx.com/2018/09/09/A06-VMwarePro14-Installation-of-Ubuntu18.04-tutorial/"/>
    <id>https://itrhx.com/2018/09/09/A06-VMwarePro14-Installation-of-Ubuntu18.04-tutorial/</id>
T
TRHX 已提交
374
    <published>2018-09-09T13:14:29.532Z</published>
T
TRHX 已提交
375
    <updated>2019-04-01T15:42:57.097Z</updated>
T
TRHX 已提交
376
    
T
TRHX 已提交
377
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><h1 id="1-下载安装-VMware-Workstation-Pro-14"><a href="#1-下载安装-VMware-Workstation-Pro-14" class="headerlink" title="1.下载安装 VMware Workstation Pro 14"></a><font color="#FF0000">1.下载安装 VMware Workstation Pro 14</font></h1><p> 进入 <a href="https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html" target="_blank" rel="noopener">VMware 官网</a>或者在软件商店下载最新版VMware虚拟机并安装</p><p> <img src="https://i.loli.net/2019/04/01/5ca22c11d6af6.png" alt="01"></p><h1 id="2-下载-Ubuntu-18-04-系统"><a href="#2-下载-Ubuntu-18-04-系统" class="headerlink" title="2.下载 Ubuntu 18.04 系统"></a><font color="#FF0000">2.下载 Ubuntu 18.04 系统</font></h1><p>  进入 <a href="https://www.ubuntu.com/" target="_blank" rel="noopener">Ubuntu 官网</a>,下载最新版 Ubuntu 系统镜像</p><p><img src="https://i.loli.net/2019/04/01/5ca22c21bc04e.png" alt="02"><br><img src="https://i.loli.net/2019/04/01/5ca22c4931bb8.png" alt="03"></p><h1 id="3-在-VMware-中创建虚拟机"><a href="#3-在-VMware-中创建虚拟机" class="headerlink" title="3.在 VMware 中创建虚拟机"></a><font color="#FF0000">3.在 VMware 中创建虚拟机</font></h1><p>打开安装好的 VMware Workstation Pro 14,选择创建新的虚拟机<br><img src="https://i.loli.net/2019/04/01/5ca22c5e2be03.png" alt="04"></p><p>在新建虚拟机向导中选择自定义(高级)<br><img src="https://i.loli.net/2019/04/01/5ca22c6a836dc.png" alt="05"></p><p>默认直接下一步,直到出现下图,再选择稍后安装操作系统<br><img src="https://i.loli.net/2019/04/01/5ca22c7692315.png" alt="06"></p><p>选择客户机操作系统为 Linux ,如果你电脑是32位就选择 Ubuntu 版本,64位就选择 Ubuntu 64 位版本<br><img src="https://i.loli.net/2019/04/01/5ca22c845c906.png" alt="07"></p><p>更改虚拟机名称及存放位置<br><img src="https://i.loli.net/2019/04/01/5ca22c9be2b92.png" alt="08"></p><p>为虚拟机指定处理器数量,默认即可<br><img src="https://i.loli.net/2019/04/01/5ca22caa9b5d8.png" alt="09"></p><p>为虚拟机分配内存,太大了可能会导致卡顿,太小了也不好,推荐内存大小即可<br><img src="https://i.loli.net/2019/04/01/5ca22cceb46fd.png" alt="10"></p><p>以下均选择默认即可<br><img src="https://i.loli.net/2019/04/01/5ca22ce4ea0c7.png" alt="11"><br><img src="https://i.loli.net/2019/04/01/5ca22cf399ce0.png" alt="12"><br><img src="https://i.loli.net/2019/04/01/5ca22cffbfbdb.png" alt="13"><br><img src="https://i.loli.net/2019/04/01/5ca22d09d1258.png" alt="14"></p><p>选择创建新虚拟磁盘<br><img src="https://i.loli.net/2019/04/01/5ca22d1bbcb26.png" alt="15"></p><p>选择将虚拟磁盘储存为单个文件<br><img src="https://i.loli.net/2019/04/01/5ca22d2ab09c1.png" alt="16"></p><p>默认下一步<br><img src="https://i.loli.net/2019/04/01/5ca22d3880b59.png" alt="17"></p><p>点击完成<br><img src="https://i.loli.net/2019/04/01/5ca22d4de7822.png" alt="18"></p><p>此时我们就可以在虚拟机左侧“我的计算机”下面看到刚刚创建的虚拟机 Ubuntu 64 位,单击 Ubuntu 64 位,选择“编辑虚拟机设置”, 再选择“CD/DVD(SATA)”,选择“使用ISO映像文件”,点击“浏览”,找到先前我们下载好的 Ubuntu 64 位镜像文件,点击“确定”<br><img src="https://i.loli.net/2019/04/01/5ca22d5b39578.png" alt="19"><br><img src="https://i.loli.net/2019/04/01/5ca22d6962235.png" alt="20"></p><h1 id="4-在虚拟机上安装-Ubuntu-系统"><a href="#4-在虚拟机上安装-Ubuntu-系统" class="headerlink" title="4.在虚拟机上安装 Ubuntu 系统"></a><font color="#FF0000">4.在虚拟机上安装 Ubuntu 系统</font></h1><p>单击 Ubuntu 64 位,选择“开启此虚拟机”<br><img src="https://i.loli.net/2019/04/01/5ca22d7a11429.png" alt="21"></p><p>来到欢迎界面,选择好语言,点击“安装 Ubuntu”<br><img src="https://i.loli.net/2019/04/01/5ca22d868e089.png" alt="22"></p><p>选择键盘布局为“汉语”<br><img src="https://i.loli.net/2019/04/01/5ca22d91e75fb.png" alt="23"></p><p>更新和其他软件默认选择即可<br><img src="https://i.loli.net/2019/04/01/5ca22d9fb74c5.png" alt="24"></p><p>安装类型选择“清除整个磁盘并安装 Ubuntu”,PS: 因为我们是新安装的系统,且在虚拟机中,所以可以选择清除整个磁盘,这个操作不会清除你原来电脑里面的东西<br><img src="https://i.loli.net/2019/04/01/5ca22dab51a3f.png" alt="25"><br><img src="https://i.loli.net/2019/04/01/5ca22dbbe18ba.png" alt="26"></p><p>地区随便,在中国就行,默认即可<br><img src="https://i.loli.net/2019/04/01/5ca22dcf419c2.png" alt="27"></p><p>之后设置计算机名,密码<br><img src="https://i.loli.net/2019/04/01/5ca22dde29a6d.png" alt="28"></p><p>点击继续稍等一会就安装完成啦<br><img src="https://i.loli.net/2019/04/01/5ca22df0415af.png" alt="29"></p><hr><h1 id="安装过程中可能会出现的一些问题"><a href="#安装过程中可能会出现的一些问题" class="headerlink" title="安装过程中可能会出现的一些问题"></a><center><font color="#FF0000" size="7">安装过程中可能会出现的一些问题</font></center></h1><hr><h1 id="1-在虚拟机上安装-Ubuntu-系统的过程中卡死不动"><a href="#1-在虚拟机上安装-Ubuntu-系统的过程中卡死不动" class="headerlink" title=" 1.在虚拟机上安装 Ubuntu 系统的过程中卡死不动"></a><font color="#FF0000"> 1.在虚拟机上安装 Ubuntu 系统的过程中卡死不动</font></h1><p> 解决方法:关闭网络,重新安装即可</p><hr><h1 id="2-Ubuntu-不能全屏显示"><a href="#2-Ubuntu-不能全屏显示" class="headerlink" title=" 2.Ubuntu 不能全屏显示"></a><font color="#FF0000"> 2.Ubuntu 不能全屏显示</font></h1><p>解决方法:<br>方法①:安装 open-vm-tools:</p><figure class="highlight vim"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt-<span class="built_in">get</span> install <span class="keyword">open</span>-<span class="keyword">vm</span>-tools</span><br></pre></td></tr></table></figure><p>然后执行:</p><figure class="highlight vim"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo apt-<span class="built_in">get</span> install <span class="keyword">open</span>-<span class="keyword">vm</span>*</span><br></pre></td></tr></table></figure><p>重启即可全屏显示</p><p>方法②:在终端输入<code>xrandr</code>,并回车,我们就可以看到很多可以修改的分辨率,选择好分辨率后,比如我们要修改分辨率为 1920x1440 ,则在终端输入 <code>xrandr -s 1920x1440</code>,回车即可,注意 1920x1440 中间是<font color="#FF0000">小写字母 x</font>,本人亲测此方法并不是很完美,不能完全适应屏幕<br><img src="https://i.loli.net/2019/04/01/5ca22dfc9d771.png" alt="30"></p><p>方法③:安装 VMware Tools:<br>1、进入 Ubuntu 系统后,点击虚拟机上的【虚拟机】—>【安装 VMware Tools】,回到桌面即可看到一个 VMware Tools 的 图标<br>2、复制 VMwareTools-10.0.10-4301679.tar.gz(版本根据自己的实际情况而定)到 home 目录下, 用命令 <code>tar -xzvf  VMwareTools-10.0.10-4301679.tar.gz</code> 进行解压<br>3、解压后 cd vmware_tools_distrib,打开终端<br>4、输入“sudo ./vmware-install.pl”,输入用户密码后开始安装<br>5、接下来会有很多地方需要你按 Enter或者 Yes<br>6、当你看到出现 <code>—the vmware team</code> 的字样后就可以关闭窗口了,此时窗口就会自动全屏了,如果没有全屏,重启过后就可以了<br>7、若还没有全屏显示,则将虚拟机的【查看】—&gt;【自动调整大小】—&gt;【自适应客户机】,都选上,即可实现全屏</p>]]></content>
T
TRHX 已提交
378 379 380 381 382 383 384
    
    <summary type="html">
    
      VMware Pro 14 安装 Ubuntu 18.04 的详细教程以及一些在安装过程中可能遇到的问题
    
    </summary>
    
T
TRHX 已提交
385
      <category term="实用教程" scheme="https://itrhx.com/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
T
TRHX 已提交
386 387
    
    
T
TRHX 已提交
388
      <category term="VMware" scheme="https://itrhx.com/tags/VMware/"/>
T
TRHX 已提交
389
    
T
TRHX 已提交
390
      <category term="Ubuntu" scheme="https://itrhx.com/tags/Ubuntu/"/>
T
TRHX 已提交
391 392 393 394 395
    
  </entry>
  
  <entry>
    <title>主流 Markdown 编辑器推荐</title>
T
TRHX 已提交
396 397
    <link href="https://itrhx.com/2018/08/29/A05-Markdown-editor-recommendation/"/>
    <id>https://itrhx.com/2018/08/29/A05-Markdown-editor-recommendation/</id>
T
TRHX 已提交
398
    <published>2018-08-29T15:02:46.857Z</published>
T
TRHX 已提交
399
    <updated>2019-04-01T14:48:58.188Z</updated>
T
TRHX 已提交
400
    
T
TRHX 已提交
401
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><font color="#4094C7"><br>Markdown ,2004年由 John Gruberis 设计和开发,是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式,以下将介绍目前比较流行的一些 Markdown 编辑器(排名不分先后)</font><hr><h1 id="MarkdownPad"><a href="#MarkdownPad" class="headerlink" title=" - MarkdownPad "></a><font color="#FF0000"> - MarkdownPad </font></h1><p>目前分为 MarkdownPad2 和 MarkdownPad Pro 版本,后者收费,我们使用前者足矣,用户可以通过键盘快捷键和工具栏按钮来使用或者移除 Markdown 各种语法格式,支持自定义配色方案、字体、大小和布局 、即时HTML预览、HTML和PDF导出,被很多人称赞为 Windows 平台最好用的 Markdown 编辑器,实用性强,仅支持 Windows 系统,个人觉得在 Windows 10 系统上界面并不是很好看,有时候添加音乐什么的,资源多了,实时预览会显示资源加载失败,<a href="http://markdownpad.com/" target="_blank" rel="noopener">点击此处</a>访问 MarkdownPad 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca2191d6acbd.png" alt="MarkdownPad 2"></p><hr><h1 id="BookPad"><a href="#BookPad" class="headerlink" title="- BookPad "></a><font color="#FF0000">- BookPad </font></h1><p> 无意间在 Microsoft Store 上发现的,完美搭配 Win10 系统,界面非常简洁漂亮,2017年9月份发布,大小30.82 MB,官方网站:<a href="https://sosfos.wordpress.com/" target="_blank" rel="noopener">https://sosfos.wordpress.com/</a> ,收费13人民币,可免费使用7天,各种功能应有尽有,和其他编辑器不相上下,本来想着百度百度看看有没有破解版,结果全网看不见 BookPad 的影子,估计是新出来的还不为人所知吧,可以直接在 Microsoft Store 搜索下载,或者点击链接获取:<a href="https://www.microsoft.com/store/apps/9N6P5ZH2SJSX" target="_blank" rel="noopener">https://www.microsoft.com/store/apps/9N6P5ZH2SJSX</a></p><p><img src="https://i.loli.net/2019/04/01/5ca219681cd25.png" alt="BookPad"></p><p><img src="https://i.loli.net/2019/04/01/5ca2195391180.jpg" alt="BookPad"></p><hr><h1 id="小书匠"><a href="#小书匠" class="headerlink" title=" - 小书匠"></a><font color="#FF0000"> - 小书匠</font></h1><p> 分为免费版和收费版,收费版¥20/年,其实免费版的功能已经足够强大了,多种编辑模式、多种主题选择、多种编辑器实现、丰富的语法支持、第三方同步、强大的文件管理功能,让人使用一次就爱上了它,支持 Windows 和 Web,推荐使用,<a href="http://soft.xiaoshujiang.com/" target="_blank" rel="noopener">点击此处</a>访问小书匠官网</p><p><img src="https://i.loli.net/2019/04/01/5ca219b54506b.png" alt="小书匠"><br><img src="https://i.loli.net/2019/04/01/5ca219b78a301.png" alt="小书匠"></p><hr><h1 id="Typora"><a href="#Typora" class="headerlink" title=" - Typora"></a><font color="#FF0000"> - Typora</font></h1><p>Typora 同样支持 Windows、OS X 和 Linux,Typora 支持即时渲染技术,这也是与其他 Markdown 编辑器最显著的区别,支持数学编辑,可与 Word 直接格式转换,在 Pandoc 的支持下进行多种文档格式转换,Typora 适合那些对码字手速和排版顺畅度有要求的人群,譬如码农、网站小编等,<a href="https://www.typora.io/" target="_blank" rel="noopener">点击此处</a>访问 Typora 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21a9fc5187.png" alt="Typora"></p><hr><h1 id="Visual-Studio-Code"><a href="#Visual-Studio-Code" class="headerlink" title=" - Visual Studio Code"></a><font color="#FF0000"> - Visual Studio Code</font></h1><p>Visual Studio Code 是众所周知的神器,是微软推出一款轻量级的文本编辑工具,类似于 Sublime,它已经默认集成 Markdown 文档编辑插件,原生就支持高亮 Markdown 的语法,但想要实时预览还需要选择 Markdown: Open Preview to the Side 命令实现,相关教程请<a href="https://www.cnblogs.com/shawWey/p/8931697.html" target="_blank" rel="noopener">点击此处</a>,<a href="https://code.visualstudio.com/" target="_blank" rel="noopener">点击此处</a> 访问 Visual Studio Code 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21bd937f9f.png" alt="Visual Studio Code"></p><hr><h1 id="Marxico"><a href="#Marxico" class="headerlink" title="- Marxico"></a><font color="#FF0000">- Marxico</font></h1><p>Marxico 中文名马克飞象,提供桌面客户端以及离线 Chrome App,支持移动端 Web,可以直接把文本存到印象笔记,<a href="http://marxi.co/" target="_blank" rel="noopener">点击此处</a>访问 Marxico,<a href="https://maxiang.io/" target="_blank" rel="noopener">点击此处</a>访问 马克飞象</p><p><img src="https://i.loli.net/2019/04/01/5ca21c14d57bc.png" alt="马克飞象"></p><hr><h1 id="Sublime-Text-3"><a href="#Sublime-Text-3" class="headerlink" title=" - Sublime Text 3"></a><font color="#FF0000"> - Sublime Text 3</font></h1><p>Sublime Text 3 是基于 Vim 开发的跨平台代码编辑器,收费80美元,好像可以免费试用,支持 OS X、Windows、Ubuntu 等 UNIX 及 Linux 操作系统,由于其功能的多样性而广受好评,界面简约大方,定位专业,原生支持的编程语言就多达十几种,通过第三方插件,还能实现更多语法的支持,其中就包括 Markdown ,但也有个缺点,就是不能实时预览,但是用户可以通过 Markdown Preview 的插件实现对 Markdown 的预览,具体教程请<a href="https://blog.csdn.net/qazxswed807/article/details/51235792" target="_blank" rel="noopener">点击此处</a>查看,<a href="http://www.sublimetext.com/" target="_blank" rel="noopener">点击此处</a>访问 Sublime Text 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca219e0ebc3b.png" alt="SublimeText"></p><hr><h1 id="Mou"><a href="#Mou" class="headerlink" title=" - Mou "></a><font color="#FF0000"> - Mou </font></h1><p>Mou 是一款由国人独立开发者罗晨开发的实时预览型 Markdown 编辑器,仅支持 OS X操作系统,是目前同类应用中对汉字兼容性最好的作品,也是目前最好用的免费 Markdown 编辑器,提供语法高亮、在线预览、同步滚动、全屏模式,支持自定保存、自动匹配,允许自定义主题,支持 CSS,HTML 和 PDF 导出等功能,<a href="http://25.io/mou/" target="_blank" rel="noopener">点击此处</a>访问 Mou 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21a13d8db7.png" alt="Mou"></p><hr><h1 id="Atom"><a href="#Atom" class="headerlink" title=" - Atom"></a><font color="#FF0000"> - Atom</font></h1><p>Atom 是 Github 专门为程序员推出的一个跨平台文本编辑器,具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言,当然也支持 Markdown ,支持宏,自动完成分屏功能,集成了文件管理器,<a href="https://atom.io/" target="_blank" rel="noopener">点击此处</a>访问 Atom 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21a3da77e9.png" alt="Atom"></p><hr><h1 id="Smark"><a href="#Smark" class="headerlink" title=" - Smark"></a><font color="#FF0000"> - Smark</font></h1><p>国人编写的开源软件,Windows / Linux 等主流系统跨平台支持,完美支持 LaTex 数学公式、脚注、尾注等,支持使用本地 MathJax 调用,不需要在线访问 MathJax CDN,用户可配置的 Markdown 语法高亮显示,美观整洁,多种格式文件导出支持,简洁友好的界面布局,完备的各类快捷键,能极大地提高工作效率,<a href="https://gitee.com/elerao/Smark" target="_blank" rel="noopener">点击此处</a>访问 Smark 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21a615634c.png" alt="Smark"></p><hr><h1 id="Haroopad"><a href="#Haroopad" class="headerlink" title=" - Haroopad"></a><font color="#FF0000"> - Haroopad</font></h1><p>Haroopad 覆盖三大主流桌面系统,支持 Windows、OS X 和 Linux,多种主题样式供你选择,语法标亮支持 54 种编程语言,该工具重点推荐 Ubuntu/Linux 用户使用,<a href="http://pad.haroopress.com/user.html" target="_blank" rel="noopener">点击此处</a>访问 Haroopad 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21a8743e4c.png" alt="Haroopad"></p><hr><h1 id="CuteMarkEd"><a href="#CuteMarkEd" class="headerlink" title="- CuteMarkEd"></a><font color="#FF0000">- CuteMarkEd</font></h1><p>CuteMarkEd 是一个基于qt5的跨平台的 Markdown 编辑器,开源的, 提供实时 HTML 预览、数学表达式、源码高亮和PDF导出,<a href="https://cloose.github.io/CuteMarkEd/" target="_blank" rel="noopener">点击此处</a> 访问 CuteMarkEd 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21ad033013.png" alt="CuteMarkEd"></p><hr><h1 id="MarkPad"><a href="#MarkPad" class="headerlink" title=" - MarkPad"></a><font color="#FF0000"> - MarkPad</font></h1><p>MarkPad 是款开源的 Markdown 编辑器,与 Window 8 风格和谐友好的界面,可以直接在你的博客或者 GitHub 中打开、保存文档,直接将图片粘贴到 Markdown 文档中,<a href="http://code52.org/DownmarkerWPF/" target="_blank" rel="noopener">点击此处</a>访问 MarkPad 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21aecdb420.png" alt="MarkPad"></p><hr><h1 id="Cmd-Markdown"><a href="#Cmd-Markdown" class="headerlink" title="- Cmd Markdown"></a><font color="#FF0000">- Cmd Markdown</font></h1><p>作业部落出品,是一款不错的工具和博客平台兼顾的产品,同时支持 Linux、Mac 和 Windows 操作系统,此外还提供 Web 在线创作,社交化批注、智能云同步,最简单的方法,满足多种写作需要,<a href="https://www.zybuluo.com/cmd/" target="_blank" rel="noopener">点击此处</a>访问 Cmd Markdown 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21b0cc92fa.png" alt="Cmd Markdown"></p><hr><h1 id="FarBox"><a href="#FarBox" class="headerlink" title="- FarBox"></a><font color="#FF0000">- FarBox</font></h1><p>同样是一款不错的 Markdown 编辑器和博客平台兼顾的产品,让用户通过Dropbox(现在默认是自己的同步服务器)直接建立个人网站。FarBox编辑器免费,同时支持 Linux、Mac 和 Windows 操作系统,Farbox服务可以免费试用,在本地编辑器内写作自动同步发布在个人博客,对于希望有个人博客但却不愿折腾的小白来说,是个不错的选择,<a href="https://www.farbox.com/" target="_blank" rel="noopener">点击此处</a>访问 FarBox 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21b2922870.png" alt="FarBox"><br><img src="https://i.loli.net/2019/04/01/5ca21cdfef736.jpg" alt="Miu"></p><hr><h1 id="Miu"><a href="#Miu" class="headerlink" title="- Miu"></a><font color="#FF0000">- Miu</font></h1><p>Miu 是一款 Windows 下的 Markdown 编辑器,支持 Markdown 高亮、代码高亮、即时预览,以及可以快速发布到 Github Gist,小众软件,界面美观,已经找不到官网了,小众软件网有提供百度云下载,<a href="https://www.appinn.com/miu-markdown-editor/" target="_blank" rel="noopener">Miu 下载地址</a></p><p><img src="https://i.loli.net/2019/04/01/5ca21b459f2e8.jpg" alt="Miu"></p><hr><h1 id="MacDown"><a href="#MacDown" class="headerlink" title="- MacDown"></a><font color="#FF0000">- MacDown</font></h1><p>MacDown 引用了许多 Mou 的设计方式,仅支持 Mac ,开源免费,<a href="http://macdown.uranusjr.com/" target="_blank" rel="noopener">点击此处</a>访问 MacDown 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21b6e30212.png" alt="MacDown"></p><hr><h1 id="Ulysses"><a href="#Ulysses" class="headerlink" title="- Ulysses"></a><font color="#FF0000">- Ulysses</font></h1><p>一款由国外开发商 The Soulmen 制作的 Markdown 编辑器。与其它同类应用相比,Ulysses 最大的不同在于,它能根据内置的文件管理器,以及与 iCloud 云服务器的实时同步方案,达到最快捷的文章整理效率,支持OS X , iPad,26人民币每月,14天免费试用,<a href="https://ulysses.app/" target="_blank" rel="noopener">点击此处</a>访问 Ulysses 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21b95bf115.jpg" alt="Ulysses"></p><hr><h1 id="Byword"><a href="#Byword" class="headerlink" title="- Byword"></a><font color="#FF0000">- Byword</font></h1><p>一款轻量级的 Markdown 编辑器,支持Mac,iPhone和iPad,界面极简,功能强大,貌似要付费使用,<a href="https://bywordapp.com/" target="_blank" rel="noopener">点击此处</a> 访问 Byword 官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21baf8fd30.jpg" alt="Byword"></p><hr><h1 id="MaHua"><a href="#MaHua" class="headerlink" title="- MaHua"></a><font color="#FF0000">- MaHua</font></h1><p>一个在线编辑 Markdown 文档的编辑器,小众软件,VIM 快捷键支持,完美兼容 Github 的 Markdown 语法,界面稍许简陋,<a href="http://mahua.jser.me/" target="_blank" rel="noopener">点击此处</a>访问 MaHua</p><p><img src="https://i.loli.net/2019/04/01/5ca21c3402d22.png" alt="MaHua"></p><hr><h1 id="Dillinger"><a href="#Dillinger" class="headerlink" title="- Dillinger"></a><font color="#FF0000">- Dillinger</font></h1><p>来自国外的 Markdown 编辑器,漂亮强大,支持md、 html、pdf 文件导出,支持Dropbox、Github、Google Drive、Onedrive 一键保存,<a href="https://dillinger.io/" target="_blank" rel="noopener">点击此处</a>访问 Dillinger</p><p><img src="https://i.loli.net/2019/04/01/5ca21c4e41454.png" alt="Dillinger"></p><hr><h1 id="CSDN"><a href="#CSDN" class="headerlink" title=" - CSDN"></a><font color="#FF0000"> - CSDN</font></h1><p>中国专业IT社区CSDN (Chinese Software Developer Network) 创立于1999年,致力于为中国软件开发者提供知识传播、在线学习、职业发展等全生命周期服务。CSDN的在线编辑器功能强大,支持导出为HTML和md文件,注册账号后即可开始创作,<a href="https://www.csdn.net/" target="_blank" rel="noopener">点击此处</a>访问CSDN官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21de1357af.png" alt="CSDN"></p><hr><h1 id="简书"><a href="#简书" class="headerlink" title=" - 简书"></a><font color="#FF0000"> - 简书</font></h1><p>简书是一个优质的创作社区,你可以在线创作并发表到社区,是国内优质原创内容输出平台,简书从一开始就已经支持 Markdown 和富文本编辑,是一个为专门为作者打造的平台,<a href="https://www.jianshu.com/" target="_blank" rel="noopener">点击此处</a>访问简书官网</p><p><img src="https://i.loli.net/2019/04/01/5ca21c658ca62.jpg" alt="简书"></p><hr><p>要细数 Markdown 编辑器的话,可能永远也数不尽,而且每个人的看法也不同,正所谓萝卜白菜各有所爱,什么编辑器不是最重要的,重要的是我们能写出优质的文章,不断学习进步!不断提升自我!</p><p>参考资料:<br><a href="http://www.williamlong.info/archives/4319.html" target="_blank" rel="noopener">《好用的Markdown编辑器一览》</a>(By:月光)<br><a href="https://blog.csdn.net/jinhui157/article/details/73872795/" target="_blank" rel="noopener">《10款流行的Markdown编辑器,总有一款适合你》</a>(By:xiaoxiao_engineer)<br><a href="https://sspai.com/post/27792" target="_blank" rel="noopener">《解决作者们的焦虑:7 款优秀 Markdown 编辑工具推荐》</a>(By:JailJT)</p>]]></content>
T
TRHX 已提交
402 403 404 405 406 407 408
    
    <summary type="html">
    
      工欲善其事,必先利其器,选择一个合适自己的 Markdown 编辑器至关重要
    
    </summary>
    
T
TRHX 已提交
409
      <category term="实用教程" scheme="https://itrhx.com/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
T
TRHX 已提交
410 411
    
    
T
TRHX 已提交
412
      <category term="Markdown" scheme="https://itrhx.com/tags/Markdown/"/>
T
TRHX 已提交
413
    
T
TRHX 已提交
414
      <category term="编辑器" scheme="https://itrhx.com/tags/%E7%BC%96%E8%BE%91%E5%99%A8/"/>
T
TRHX 已提交
415 416 417 418 419
    
  </entry>
  
  <entry>
    <title>Hexo 博客主题个性化</title>
T
TRHX 已提交
420 421
    <link href="https://itrhx.com/2018/08/27/A04-Hexo-blog-topic-personalization/"/>
    <id>https://itrhx.com/2018/08/27/A04-Hexo-blog-topic-personalization/</id>
T
TRHX 已提交
422
    <published>2018-08-27T13:25:24.452Z</published>
T
TRHX 已提交
423
    <updated>2019-03-30T17:00:08.359Z</updated>
T
TRHX 已提交
424
    
T
TRHX 已提交
425
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><hr><p>&ensp;&ensp;&ensp;&ensp;<font color="#4094C7">本文将讲述一些博客主题的美化、实用功能的添加,不同主题可能方法有些不同(本文以作者 <a href="https://luuman.github.io/Home/H1/index.html" target="_blank" rel="noopener">luuman</a> 的 <a href="https://github.com/luuman/hexo-theme-spfk" target="_blank" rel="noopener">spfk</a> 主题和作者 <a href="https://xaoxuu.com/" target="_blank" rel="noopener">xaoxuu</a> 的 <a href="https://xaoxuu.com/wiki/material-x/" target="_blank" rel="noopener">Material X</a> 主题为例),本文章会不定时进行更新。文章涉及有关参考资料、教程、链接如有侵权请联系我删除!</font></p><hr><h1 id="–-添加评论系统"><a href="#–-添加评论系统" class="headerlink" title=" – 添加评论系统 "></a><font color="#FF0000"> – 添加评论系统 </font></h1><p>主流的评论系统有很多,比如:网易云跟帖、多说、友言、畅言、来必力(LiveRe)、Disqus、Valine、Gitment等等,目前网易云跟帖、多说、友言都已经关闭了,还有些可能需要翻墙,比较麻烦,百度了一下,最后还是选择了来必力评论系统</p><p>进入<a href="https://livere.com" target="_blank" rel="noopener">来必力官网</a>,注册一个账号(注册时可能需要翻墙)<br><img src="https://i.loli.net/2019/03/30/5c9f91ed8973a.png" alt="001">  </p><p>注册完毕之后,登录,进入安装页面,选择 City 免费版安装,安装之后你会得到一段代码<br><img src="https://i.loli.net/2019/03/30/5c9f9264b0db4.png" alt="002"><br><img src="https://i.loli.net/2019/03/31/5c9f92836f73e.png" alt="003"><br><img src="https://i.loli.net/2019/03/31/5c9f929e7d62b.png" alt="004">  </p><p>我们打开主题文件下的 <font color="#FF0000">_config.yml</font> 文件,添加如下代码:<br><img src="https://i.loli.net/2019/03/31/5c9f92b5e270f.png" alt="005">  </p><p>在 <font color="#FF0000">\themes\hexo-theme-spfk\layout\_partial\comments</font> 文件夹下新建一个 <font color="#FF0000">livere.ejs</font> 的文件,在里面填写来必力提供的代码:</p><figure class="highlight html"><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">&lt;!-- 来必力City版安装代码 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">"lv-container"</span> <span class="attr">data-id</span>=<span class="string">"city"</span> <span class="attr">data-uid</span>=<span class="string">"这里是你的uid"</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span>&gt;</span><span class="undefined"></span></span><br><span class="line"><span class="undefined">(function(d, s) &#123;</span></span><br><span class="line"><span class="undefined">        var j, e = d.getElementsByTagName(s)[0];</span></span><br><span class="line"><span class="undefined">    </span></span><br><span class="line"><span class="undefined">        if (typeof LivereTower === 'function') &#123; return; &#125;</span></span><br><span class="line"><span class="undefined">    </span></span><br><span class="line"><span class="undefined">        j = d.createElement(s);</span></span><br><span class="line"><span class="undefined">        j.src = 'https://cdn-city.livere.com/js/embed.dist.js';</span></span><br><span class="line"><span class="undefined">        j.async = true;</span></span><br><span class="line"><span class="undefined">    </span></span><br><span class="line"><span class="undefined">        e.parentNode.insertBefore(j, e);</span></span><br><span class="line"><span class="undefined">        &#125;)(document, 'script');</span></span><br><span class="line"><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">noscript</span>&gt;</span>为正常使用来必力评论功能请激活JavaScript<span class="tag">&lt;/<span class="name">noscript</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- City版安装代码已完成 --&gt;</span></span><br></pre></td></tr></table></figure><p>打开 <font color="#FF0000">\themes\hexo-theme-spfk\layout\_partial\article.ejs </font>文件,在适当位置添加如下红框中的代码:<br><img src="https://i.loli.net/2019/03/31/5c9f92e3eebaa.png" alt="006">  </p><p>完成以上操作之后,我们就可以使用来必力评论系统了<br><img src="https://i.loli.net/2019/03/31/5c9f93958c1b4.png" alt="007">  </p><hr><h1 id="–-添加卡通人物"><a href="#–-添加卡通人物" class="headerlink" title=" – 添加卡通人物 "></a><font color="#FF000"> – 添加卡通人物 </font></h1><p>我在逛别人博客的时候偶然发现右下角居然有一个萌萌的卡通人物,还能根据你鼠标位置摇头,瞬间被吸引到了,赶紧也给自己博客添加一个吧!<a href="https://github.com/EYHN/hexo-helper-live2d" target="_blank" rel="noopener">点击此处</a>进入该项目地址  </p><p>输入如下命令获取 live2d :</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span> npm install --save hexo-helper-live2d</span><br></pre></td></tr></table></figure><p>输入以下命令,下载相应的模型,将 <font color="#FF0000">packagename</font> 更换成模型名称即可,更多模型选择请<a href="https://github.com/xiazeyu/live2d-widget-models" target="_blank" rel="noopener">点击此处</a>,各个模型的预览请<a href="https://huaji8.top/post/live2d-plugin-2.0/" target="_blank" rel="noopener">访问原作者的博客</a>  </p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span> npm install packagename</span><br></pre></td></tr></table></figure><p>打开站点目录下的 <font color="#FF0000">_config.yml</font> 文件,添加如下代码:<br><figure class="highlight yaml"><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="attr">live2d:</span></span><br><span class="line"><span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line"><span class="attr">scriptFrom:</span> <span class="string">local</span></span><br><span class="line"><span class="attr">model:</span> </span><br><span class="line"><span class="attr">use:</span> <span class="string">live2d-widget-model-haruto</span> <span class="comment">#模型选择</span></span><br><span class="line"><span class="attr">display:</span> </span><br><span class="line"><span class="attr">position:</span> <span class="string">right</span>  <span class="comment">#模型位置</span></span><br><span class="line"><span class="attr">width:</span> <span class="number">150</span>       <span class="comment">#模型宽度</span></span><br><span class="line"><span class="attr">height:</span> <span class="number">300</span>      <span class="comment">#模型高度</span></span><br><span class="line"><span class="attr">mobile:</span> </span><br><span class="line"><span class="attr">show:</span> <span class="literal">false</span>      <span class="comment">#是否在手机端显示</span></span><br></pre></td></tr></table></figure></p><p>设置好过后我们就拥有了一个卡通人物<br><img src="https://i.loli.net/2019/03/31/5c9f93fe8d0dd.png" alt="008"></p><h1 id="–-自定义鼠标指针样式"><a href="#–-自定义鼠标指针样式" class="headerlink" title=" – 自定义鼠标指针样式 "></a><font color="#FF0000"> – 自定义鼠标指针样式 </font></h1><p>在 <font color="#FF0000"> \themes\material-x\source\less\_main.less</font> 文件里写入如下代码:<br><figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cursor: url('https://cdn.jsdelivr.net/gh/TRHX/CDN-for-itrhx.com@1.0/images/mouse.cur'),auto;</span><br></pre></td></tr></table></figure></p><p>不同主题放的地方不同,确保在博客主体CSS文件中即可,其中的鼠标指针链接可替换成自己的,首先尝试加载 <a href="https://cdn.jsdelivr.net/gh/TRHX/CDN-for-itrhx.com@1.0/images/mouse.cur" target="_blank" rel="noopener">https://cdn.jsdelivr.net/gh/TRHX/CDN-for-itrhx.com@1.0/images/mouse.cur</a> ,如果该文件不存在或由于其他原因无效,那么 auto 会被使用,也就是自动默认效果,图片格式为.ico、.ani、.cur,建议使用.cur,如果使用.ani或者其他格式无效,原因是浏览器兼容问题,请阅读<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Basic_User_Interface/Using_URL_values_for_the_cursor_property" target="_blank" rel="noopener">参考文档</a>或者参考以下兼容表:</p><table><thead><tr><th style="text-align:center">浏览器</th><th style="text-align:center">最低版本</th><th style="text-align:center">格式</th></tr></thead><tbody><tr><td style="text-align:center">Internet Explorer</td><td style="text-align:center">6.0</td><td style="text-align:center">.cur / .ani</td></tr><tr><td style="text-align:center">Firefox (Gecko), Windows and Linux</td><td style="text-align:center">1.5 (1.8)</td><td style="text-align:center">.cur / .png / .gif / .jpg</td></tr><tr><td style="text-align:center">Firefox (Gecko)</td><td style="text-align:center">4.0 (2.0)</td><td style="text-align:center">.cur / .png / .gif / .jpg / .svg</td></tr><tr><td style="text-align:center">Opera</td><td style="text-align:center">—</td><td style="text-align:center">—</td></tr><tr><td style="text-align:center">Safari (Webkit)</td><td style="text-align:center">3.0 (522-523)</td><td style="text-align:center">.cur / .png / .gif / .jpg</td></tr></tbody></table><p>拓展阅读:<a href="https://blog.csdn.net/ixygj197875/article/details/79338360" target="_blank" rel="noopener">《CSS 鼠标样式 cursor属性》</a> (By:歪脖先生的博客)</p><h1 id="–-添加鼠标点击爱心效果"><a href="#–-添加鼠标点击爱心效果" class="headerlink" title=" – 添加鼠标点击爱心效果 "></a><font color="#FF0000"> – 添加鼠标点击爱心效果 </font></h1><p>在<font color="#FF0000"> /themes/hexo-theme-spfk/source/js</font> 下新建文件 <font color="#FF0000">love.js</font>,在 <font color="#FF0000">love.js</font> 文件中添加以下代码:</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">!<span class="function"><span class="keyword">function</span>(<span class="params">e,t,a</span>)</span>&#123;<span class="function"><span class="keyword">function</span> <span class="title">n</span>(<span class="params"></span>)</span>&#123;c(<span class="string">".heart&#123;width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);&#125;.heart:after,.heart:before&#123;content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 500%;-moz-border-radius: 50%;position: fixed;&#125;.heart:after&#123;top: -5px;&#125;.heart:before&#123;left: -5px;&#125;"</span>),o(),r()&#125;<span class="function"><span class="keyword">function</span> <span class="title">r</span>(<span class="params"></span>)</span>&#123;<span class="keyword">for</span>(<span class="keyword">var</span> e=<span class="number">0</span>;e&lt;d.length;e++)d[e].alpha&lt;=<span class="number">0</span>?(t.body.removeChild(d[e].el),d.splice(e,<span class="number">1</span>)):(d[e].y--,d[e].scale+=<span class="number">.004</span>,d[e].alpha-=<span class="number">.013</span>,d[e].el.style.cssText=<span class="string">"left:"</span>+d[e].x+<span class="string">"px;top:"</span>+d[e].y+<span class="string">"px;opacity:"</span>+d[e].alpha+<span class="string">";transform:scale("</span>+d[e].scale+<span class="string">","</span>+d[e].scale+<span class="string">") rotate(45deg);background:"</span>+d[e].color+<span class="string">";z-index:99999"</span>);requestAnimationFrame(r)&#125;<span class="function"><span class="keyword">function</span> <span class="title">o</span>(<span class="params"></span>)</span>&#123;<span class="keyword">var</span> t=<span class="string">"function"</span>==<span class="keyword">typeof</span> e.onclick&amp;&amp;e.onclick;e.onclick=<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>&#123;t&amp;&amp;t(),i(e)&#125;&#125;<span class="function"><span class="keyword">function</span> <span class="title">i</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">var</span> a=t.createElement(<span class="string">"div"</span>);a.className=<span class="string">"heart"</span>,d.push(&#123;<span class="attr">el</span>:a,<span class="attr">x</span>:e.clientX<span class="number">-5</span>,<span class="attr">y</span>:e.clientY<span class="number">-5</span>,<span class="attr">scale</span>:<span class="number">1</span>,<span class="attr">alpha</span>:<span class="number">1</span>,<span class="attr">color</span>:s()&#125;),t.body.appendChild(a)&#125;<span class="function"><span class="keyword">function</span> <span class="title">c</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">var</span> a=t.createElement(<span class="string">"style"</span>);a.type=<span class="string">"text/css"</span>;<span class="keyword">try</span>&#123;a.appendChild(t.createTextNode(e))&#125;<span class="keyword">catch</span>(t)&#123;a.styleSheet.cssText=e&#125;t.getElementsByTagName(<span class="string">"head"</span>)[<span class="number">0</span>].appendChild(a)&#125;<span class="function"><span class="keyword">function</span> <span class="title">s</span>(<span class="params"></span>)</span>&#123;<span class="keyword">return</span><span class="string">"rgb("</span>+~~(<span class="number">255</span>*<span class="built_in">Math</span>.random())+<span class="string">","</span>+~~(<span class="number">255</span>*<span class="built_in">Math</span>.random())+<span class="string">","</span>+~~(<span class="number">255</span>*<span class="built_in">Math</span>.random())+<span class="string">")"</span>&#125;<span class="keyword">var</span> d=[];e.requestAnimationFrame=<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;<span class="keyword">return</span> e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>&#123;setTimeout(e,<span class="number">1e3</span>/<span class="number">60</span>)&#125;&#125;(),n()&#125;(<span class="built_in">window</span>,<span class="built_in">document</span>);</span><br></pre></td></tr></table></figure><p>在 <font color="#FF0000">\themes\hexo-theme-spfk\layout\layout.ejs</font> 文件末尾添加以下代码:</p><figure class="highlight html"><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="comment">&lt;!-- 页面点击小红心 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span> <span class="attr">src</span>=<span class="string">"/js/love.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>完成以上操作后,当我们点击鼠标的时候就可以看见爱心的特效了<br><img src="https://i.loli.net/2019/03/31/5c9f94b1ed40a.png" alt="009"></p><h1 id="–-添加鼠标点击显示字体效果"><a href="#–-添加鼠标点击显示字体效果" class="headerlink" title=" – 添加鼠标点击显示字体效果 "></a><font color="#FF0000"> – 添加鼠标点击显示字体效果 </font></h1><p>在<font color="#FF0000"> /themes/hexo-theme-spfk/source/js</font> 下新建文件 <font color="#FF0000">click_show_text.js</font>,在 <font color="#FF0000">click_show_text.js</font> 文件中添加以下代码:</p><figure class="highlight javascript"><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="keyword">var</span> a_idx = <span class="number">0</span>;</span><br><span class="line">jQuery(<span class="built_in">document</span>).ready(<span class="function"><span class="keyword">function</span>(<span class="params">$</span>) </span>&#123;</span><br><span class="line">    $(<span class="string">"body"</span>).click(<span class="function"><span class="keyword">function</span>(<span class="params">e</span>) </span>&#123;</span><br><span class="line">        <span class="keyword">var</span> a = <span class="keyword">new</span> <span class="built_in">Array</span></span><br><span class="line">        (<span class="string">"富强"</span>, <span class="string">"民主"</span>, <span class="string">"文明"</span>, <span class="string">"和谐"</span>, <span class="string">"自由"</span>, <span class="string">"平等"</span>, <span class="string">"公正"</span>, <span class="string">"法治"</span>, <span class="string">"爱国"</span>, <span class="string">"敬业"</span>, <span class="string">"诚信"</span>, <span class="string">"友善"</span>);</span><br><span class="line">        <span class="keyword">var</span> $i = $(<span class="string">"&lt;span/&gt;"</span>).text(a[a_idx]);</span><br><span class="line">        a_idx = (a_idx + <span class="number">1</span>) % a.length;</span><br><span class="line">        <span class="keyword">var</span> x = e.pageX,</span><br><span class="line">        y = e.pageY;</span><br><span class="line">        $i.css(&#123;</span><br><span class="line">            <span class="string">"z-index"</span>: <span class="number">5</span>,</span><br><span class="line">            <span class="string">"top"</span>: y - <span class="number">20</span>,</span><br><span class="line">            <span class="string">"left"</span>: x,</span><br><span class="line">            <span class="string">"position"</span>: <span class="string">"absolute"</span>,</span><br><span class="line">            <span class="string">"font-weight"</span>: <span class="string">"bold"</span>,</span><br><span class="line">            <span class="string">"color"</span>: <span class="string">"#FF0000"</span></span><br><span class="line">        &#125;);</span><br><span class="line">        $(<span class="string">"body"</span>).append($i);</span><br><span class="line">        $i.animate(&#123;</span><br><span class="line">            <span class="string">"top"</span>: y - <span class="number">180</span>,</span><br><span class="line">            <span class="string">"opacity"</span>: <span class="number">0</span></span><br><span class="line">        &#125;,</span><br><span class="line"><span class="number">3000</span>,</span><br><span class="line"><span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    $i.remove();</span><br><span class="line">&#125;);</span><br><span class="line">    &#125;);</span><br><span class="line">    setTimeout(<span class="string">'delay()'</span>, <span class="number">2000</span>);</span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">delay</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    $(<span class="string">".buryit"</span>).removeAttr(<span class="string">"onclick"</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>其中的社会主义核心价值观可以根据你自己的创意替换为其他文字,然后在 <font color="#FF0000">\themes\hexo-theme-spfk\layout\layout.ejs</font> 文件末尾添加以下代码:</p><figure class="highlight xml"><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="comment">&lt;!--单击显示文字--&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span> <span class="attr">src</span>=<span class="string">"/js/click_show_text.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>最终实现效果如下:<br><img src="https://i.loli.net/2019/03/31/5c9f94fc1a85c.png" alt="010"></p><h1 id="–-添加鼠标点击烟花爆炸效果"><a href="#–-添加鼠标点击烟花爆炸效果" class="headerlink" title=" – 添加鼠标点击烟花爆炸效果 "></a><font color="#FF0000"> – 添加鼠标点击烟花爆炸效果 </font></h1><p>在 <font color="#FF0000">\themes\material-x\source\js</font> 目录下新建一个 <font color="#FF0000">fireworks.js</font> 的文件,里面写入以下代码:<br><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">"use strict"</span>;<span class="function"><span class="keyword">function</span> <span class="title">updateCoords</span>(<span class="params">e</span>)</span>&#123;pointerX=(e.clientX||e.touches[<span class="number">0</span>].clientX)-canvasEl.getBoundingClientRect().left,pointerY=e.clientY||e.touches[<span class="number">0</span>].clientY-canvasEl.getBoundingClientRect().top&#125;<span class="function"><span class="keyword">function</span> <span class="title">setParticuleDirection</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">var</span> t=anime.random(<span class="number">0</span>,<span class="number">360</span>)*<span class="built_in">Math</span>.PI/<span class="number">180</span>,a=anime.random(<span class="number">50</span>,<span class="number">180</span>),n=[<span class="number">-1</span>,<span class="number">1</span>][anime.random(<span class="number">0</span>,<span class="number">1</span>)]*a;<span class="keyword">return</span>&#123;<span class="attr">x</span>:e.x+n*<span class="built_in">Math</span>.cos(t),<span class="attr">y</span>:e.y+n*<span class="built_in">Math</span>.sin(t)&#125;&#125;<span class="function"><span class="keyword">function</span> <span class="title">createParticule</span>(<span class="params">e,t</span>)</span>&#123;<span class="keyword">var</span> a=&#123;&#125;;<span class="keyword">return</span> a.x=e,a.y=t,a.color=colors[anime.random(<span class="number">0</span>,colors.length<span class="number">-1</span>)],a.radius=anime.random(<span class="number">16</span>,<span class="number">32</span>),a.endPos=setParticuleDirection(a),a.draw=<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;ctx.beginPath(),ctx.arc(a.x,a.y,a.radius,<span class="number">0</span>,<span class="number">2</span>*<span class="built_in">Math</span>.PI,!<span class="number">0</span>),ctx.fillStyle=a.color,ctx.fill()&#125;,a&#125;<span class="function"><span class="keyword">function</span> <span class="title">createCircle</span>(<span class="params">e,t</span>)</span>&#123;<span class="keyword">var</span> a=&#123;&#125;;<span class="keyword">return</span> a.x=e,a.y=t,a.color=<span class="string">"#F00"</span>,a.radius=<span class="number">0.1</span>,a.alpha=<span class="number">0.5</span>,a.lineWidth=<span class="number">6</span>,a.draw=<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;ctx.globalAlpha=a.alpha,ctx.beginPath(),ctx.arc(a.x,a.y,a.radius,<span class="number">0</span>,<span class="number">2</span>*<span class="built_in">Math</span>.PI,!<span class="number">0</span>),ctx.lineWidth=a.lineWidth,ctx.strokeStyle=a.color,ctx.stroke(),ctx.globalAlpha=<span class="number">1</span>&#125;,a&#125;<span class="function"><span class="keyword">function</span> <span class="title">renderParticule</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">for</span>(<span class="keyword">var</span> t=<span class="number">0</span>;t&lt;e.animatables.length;t++)&#123;e.animatables[t].target.draw()&#125;&#125;<span class="function"><span class="keyword">function</span> <span class="title">animateParticules</span>(<span class="params">e,t</span>)</span>&#123;<span class="keyword">for</span>(<span class="keyword">var</span> a=createCircle(e,t),n=[],i=<span class="number">0</span>;i&lt;numberOfParticules;i++)&#123;n.push(createParticule(e,t))&#125;anime.timeline().add(&#123;<span class="attr">targets</span>:n,<span class="attr">x</span>:<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">return</span> e.endPos.x&#125;,<span class="attr">y</span>:<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">return</span> e.endPos.y&#125;,<span class="attr">radius</span>:<span class="number">0.1</span>,<span class="attr">duration</span>:anime.random(<span class="number">1200</span>,<span class="number">1800</span>),<span class="attr">easing</span>:<span class="string">"easeOutExpo"</span>,<span class="attr">update</span>:renderParticule&#125;).add(&#123;<span class="attr">targets</span>:a,<span class="attr">radius</span>:anime.random(<span class="number">80</span>,<span class="number">160</span>),<span class="attr">lineWidth</span>:<span class="number">0</span>,<span class="attr">alpha</span>:&#123;<span class="attr">value</span>:<span class="number">0</span>,<span class="attr">easing</span>:<span class="string">"linear"</span>,<span class="attr">duration</span>:anime.random(<span class="number">600</span>,<span class="number">800</span>)&#125;,<span class="attr">duration</span>:anime.random(<span class="number">1200</span>,<span class="number">1800</span>),<span class="attr">easing</span>:<span class="string">"easeOutExpo"</span>,<span class="attr">update</span>:renderParticule,<span class="attr">offset</span>:<span class="number">0</span>&#125;)&#125;<span class="function"><span class="keyword">function</span> <span class="title">debounce</span>(<span class="params">e,t</span>)</span>&#123;<span class="keyword">var</span> a;<span class="keyword">return</span> <span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;<span class="keyword">var</span> n=<span class="keyword">this</span>,i=<span class="built_in">arguments</span>;clearTimeout(a),a=setTimeout(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;e.apply(n,i)&#125;,t)&#125;&#125;<span class="keyword">var</span> canvasEl=<span class="built_in">document</span>.querySelector(<span class="string">".fireworks"</span>);<span class="keyword">if</span>(canvasEl)&#123;<span class="keyword">var</span> ctx=canvasEl.getContext(<span class="string">"2d"</span>),numberOfParticules=<span class="number">30</span>,pointerX=<span class="number">0</span>,pointerY=<span class="number">0</span>,tap=<span class="string">"mousedown"</span>,colors=[<span class="string">"#FF1461"</span>,<span class="string">"#18FF92"</span>,<span class="string">"#5A87FF"</span>,<span class="string">"#FBF38C"</span>],setCanvasSize=debounce(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;canvasEl.width=<span class="number">2</span>*<span class="built_in">window</span>.innerWidth,canvasEl.height=<span class="number">2</span>*<span class="built_in">window</span>.innerHeight,canvasEl.style.width=<span class="built_in">window</span>.innerWidth+<span class="string">"px"</span>,canvasEl.style.height=<span class="built_in">window</span>.innerHeight+<span class="string">"px"</span>,canvasEl.getContext(<span class="string">"2d"</span>).scale(<span class="number">2</span>,<span class="number">2</span>)&#125;,<span class="number">500</span>),render=anime(&#123;<span class="attr">duration</span>:<span class="number">1</span>/<span class="number">0</span>,<span class="attr">update</span>:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;ctx.clearRect(<span class="number">0</span>,<span class="number">0</span>,canvasEl.width,canvasEl.height)&#125;&#125;);<span class="built_in">document</span>.addEventListener(tap,<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>&#123;<span class="string">"sidebar"</span>!==e.target.id&amp;&amp;<span class="string">"toggle-sidebar"</span>!==e.target.id&amp;&amp;<span class="string">"A"</span>!==e.target.nodeName&amp;&amp;<span class="string">"IMG"</span>!==e.target.nodeName&amp;&amp;(render.play(),updateCoords(e),animateParticules(pointerX,pointerY))&#125;,!<span class="number">1</span>),setCanvasSize(),<span class="built_in">window</span>.addEventListener(<span class="string">"resize"</span>,setCanvasSize,!<span class="number">1</span>)&#125;<span class="string">"use strict"</span>;<span class="function"><span class="keyword">function</span> <span class="title">updateCoords</span>(<span class="params">e</span>)</span>&#123;pointerX=(e.clientX||e.touches[<span class="number">0</span>].clientX)-canvasEl.getBoundingClientRect().left,pointerY=e.clientY||e.touches[<span class="number">0</span>].clientY-canvasEl.getBoundingClientRect().top&#125;<span class="function"><span class="keyword">function</span> <span class="title">setParticuleDirection</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">var</span> t=anime.random(<span class="number">0</span>,<span class="number">360</span>)*<span class="built_in">Math</span>.PI/<span class="number">180</span>,a=anime.random(<span class="number">50</span>,<span class="number">180</span>),n=[<span class="number">-1</span>,<span class="number">1</span>][anime.random(<span class="number">0</span>,<span class="number">1</span>)]*a;<span class="keyword">return</span>&#123;<span class="attr">x</span>:e.x+n*<span class="built_in">Math</span>.cos(t),<span class="attr">y</span>:e.y+n*<span class="built_in">Math</span>.sin(t)&#125;&#125;<span class="function"><span class="keyword">function</span> <span class="title">createParticule</span>(<span class="params">e,t</span>)</span>&#123;<span class="keyword">var</span> a=&#123;&#125;;<span class="keyword">return</span> a.x=e,a.y=t,a.color=colors[anime.random(<span class="number">0</span>,colors.length<span class="number">-1</span>)],a.radius=anime.random(<span class="number">16</span>,<span class="number">32</span>),a.endPos=setParticuleDirection(a),a.draw=<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;ctx.beginPath(),ctx.arc(a.x,a.y,a.radius,<span class="number">0</span>,<span class="number">2</span>*<span class="built_in">Math</span>.PI,!<span class="number">0</span>),ctx.fillStyle=a.color,ctx.fill()&#125;,a&#125;<span class="function"><span class="keyword">function</span> <span class="title">createCircle</span>(<span class="params">e,t</span>)</span>&#123;<span class="keyword">var</span> a=&#123;&#125;;<span class="keyword">return</span> a.x=e,a.y=t,a.color=<span class="string">"#F00"</span>,a.radius=<span class="number">0.1</span>,a.alpha=<span class="number">0.5</span>,a.lineWidth=<span class="number">6</span>,a.draw=<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;ctx.globalAlpha=a.alpha,ctx.beginPath(),ctx.arc(a.x,a.y,a.radius,<span class="number">0</span>,<span class="number">2</span>*<span class="built_in">Math</span>.PI,!<span class="number">0</span>),ctx.lineWidth=a.lineWidth,ctx.strokeStyle=a.color,ctx.stroke(),ctx.globalAlpha=<span class="number">1</span>&#125;,a&#125;<span class="function"><span class="keyword">function</span> <span class="title">renderParticule</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">for</span>(<span class="keyword">var</span> t=<span class="number">0</span>;t&lt;e.animatables.length;t++)&#123;e.animatables[t].target.draw()&#125;&#125;<span class="function"><span class="keyword">function</span> <span class="title">animateParticules</span>(<span class="params">e,t</span>)</span>&#123;<span class="keyword">for</span>(<span class="keyword">var</span> a=createCircle(e,t),n=[],i=<span class="number">0</span>;i&lt;numberOfParticules;i++)&#123;n.push(createParticule(e,t))&#125;anime.timeline().add(&#123;<span class="attr">targets</span>:n,<span class="attr">x</span>:<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">return</span> e.endPos.x&#125;,<span class="attr">y</span>:<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>&#123;<span class="keyword">return</span> e.endPos.y&#125;,<span class="attr">radius</span>:<span class="number">0.1</span>,<span class="attr">duration</span>:anime.random(<span class="number">1200</span>,<span class="number">1800</span>),<span class="attr">easing</span>:<span class="string">"easeOutExpo"</span>,<span class="attr">update</span>:renderParticule&#125;).add(&#123;<span class="attr">targets</span>:a,<span class="attr">radius</span>:anime.random(<span class="number">80</span>,<span class="number">160</span>),<span class="attr">lineWidth</span>:<span class="number">0</span>,<span class="attr">alpha</span>:&#123;<span class="attr">value</span>:<span class="number">0</span>,<span class="attr">easing</span>:<span class="string">"linear"</span>,<span class="attr">duration</span>:anime.random(<span class="number">600</span>,<span class="number">800</span>)&#125;,<span class="attr">duration</span>:anime.random(<span class="number">1200</span>,<span class="number">1800</span>),<span class="attr">easing</span>:<span class="string">"easeOutExpo"</span>,<span class="attr">update</span>:renderParticule,<span class="attr">offset</span>:<span class="number">0</span>&#125;)&#125;<span class="function"><span class="keyword">function</span> <span class="title">debounce</span>(<span class="params">e,t</span>)</span>&#123;<span class="keyword">var</span> a;<span class="keyword">return</span> <span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;<span class="keyword">var</span> n=<span class="keyword">this</span>,i=<span class="built_in">arguments</span>;clearTimeout(a),a=setTimeout(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;e.apply(n,i)&#125;,t)&#125;&#125;<span class="keyword">var</span> canvasEl=<span class="built_in">document</span>.querySelector(<span class="string">".fireworks"</span>);<span class="keyword">if</span>(canvasEl)&#123;<span class="keyword">var</span> ctx=canvasEl.getContext(<span class="string">"2d"</span>),numberOfParticules=<span class="number">30</span>,pointerX=<span class="number">0</span>,pointerY=<span class="number">0</span>,tap=<span class="string">"mousedown"</span>,colors=[<span class="string">"#FF1461"</span>,<span class="string">"#18FF92"</span>,<span class="string">"#5A87FF"</span>,<span class="string">"#FBF38C"</span>],setCanvasSize=debounce(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;canvasEl.width=<span class="number">2</span>*<span class="built_in">window</span>.innerWidth,canvasEl.height=<span class="number">2</span>*<span class="built_in">window</span>.innerHeight,canvasEl.style.width=<span class="built_in">window</span>.innerWidth+<span class="string">"px"</span>,canvasEl.style.height=<span class="built_in">window</span>.innerHeight+<span class="string">"px"</span>,canvasEl.getContext(<span class="string">"2d"</span>).scale(<span class="number">2</span>,<span class="number">2</span>)&#125;,<span class="number">500</span>),render=anime(&#123;<span class="attr">duration</span>:<span class="number">1</span>/<span class="number">0</span>,<span class="attr">update</span>:<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;ctx.clearRect(<span class="number">0</span>,<span class="number">0</span>,canvasEl.width,canvasEl.height)&#125;&#125;);<span class="built_in">document</span>.addEventListener(tap,<span class="function"><span class="keyword">function</span>(<span class="params">e</span>)</span>&#123;<span class="string">"sidebar"</span>!==e.target.id&amp;&amp;<span class="string">"toggle-sidebar"</span>!==e.target.id&amp;&amp;<span class="string">"A"</span>!==e.target.nodeName&amp;&amp;<span class="string">"IMG"</span>!==e.target.nodeName&amp;&amp;(render.play(),updateCoords(e),animateParticules(pointerX,pointerY))&#125;,!<span class="number">1</span>),setCanvasSize(),<span class="built_in">window</span>.addEventListener(<span class="string">"resize"</span>,setCanvasSize,!<span class="number">1</span>)&#125;;</span><br></pre></td></tr></table></figure></p><p>然后在 <font color="#FF0000">\themes\material-x\layout\layout.ejs</font> 文件中写入以下代码:</p><figure class="highlight xml"><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="tag">&lt;<span class="name">canvas</span> <span class="attr">class</span>=<span class="string">"fireworks"</span> <span class="attr">style</span>=<span class="string">"position: fixed;left: 0;top: 0;z-index: 1; pointer-events: none;"</span> &gt;</span><span class="tag">&lt;/<span class="name">canvas</span>&gt;</span> </span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span> <span class="attr">src</span>=<span class="string">"//cdn.bootcss.com/animejs/2.2.0/anime.min.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span> </span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span> <span class="attr">src</span>=<span class="string">"/js/fireworks.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>最终效果:<br><img src="https://i.loli.net/2019/03/31/5c9f9521ed8e3.gif" alt="011"></p><h1 id="–-添加彩色滚动变换字体"><a href="#–-添加彩色滚动变换字体" class="headerlink" title=" – 添加彩色滚动变换字体 "></a><font color="#FF0000"> – 添加彩色滚动变换字体 </font></h1><p>在你想要添加彩色滚动变换字体的地方写入以下代码即可,其中文字可自行更改:<br><figure class="highlight xml"><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></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">"binft"</span>&gt;</span><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="undefined"></span></span><br><span class="line"><span class="javascript">    <span class="keyword">var</span> binft = <span class="function"><span class="keyword">function</span> (<span class="params">r</span>) </span>&#123;</span></span><br><span class="line"><span class="javascript">      <span class="function"><span class="keyword">function</span> <span class="title">t</span>(<span class="params"></span>) </span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">return</span> b[<span class="built_in">Math</span>.floor(<span class="built_in">Math</span>.random() * b.length)]</span></span><br><span class="line"><span class="undefined">      &#125;  </span></span><br><span class="line"><span class="javascript">      <span class="function"><span class="keyword">function</span> <span class="title">e</span>(<span class="params"></span>) </span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">return</span> <span class="built_in">String</span>.fromCharCode(<span class="number">94</span> * <span class="built_in">Math</span>.random() + <span class="number">33</span>)</span></span><br><span class="line"><span class="undefined">      &#125;</span></span><br><span class="line"><span class="javascript">      <span class="function"><span class="keyword">function</span> <span class="title">n</span>(<span class="params">r</span>) </span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">for</span> (<span class="keyword">var</span> n = <span class="built_in">document</span>.createDocumentFragment(), i = <span class="number">0</span>; r &gt; i; i++) &#123;</span></span><br><span class="line"><span class="javascript">          <span class="keyword">var</span> l = <span class="built_in">document</span>.createElement(<span class="string">"span"</span>);</span></span><br><span class="line"><span class="undefined">          l.textContent = e(), l.style.color = t(), n.appendChild(l)</span></span><br><span class="line"><span class="undefined">        &#125;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">return</span> n</span></span><br><span class="line"><span class="undefined">      &#125;</span></span><br><span class="line"><span class="javascript">      <span class="function"><span class="keyword">function</span> <span class="title">i</span>(<span class="params"></span>) </span>&#123;</span></span><br><span class="line"><span class="javascript">        <span class="keyword">var</span> t = o[c.skillI];</span></span><br><span class="line"><span class="javascript">        c.step ? c.step-- : (c.step = g, c.prefixP &lt; l.length ? (c.prefixP &gt;= <span class="number">0</span> &amp;&amp; (c.text += l[c.prefixP]), c.prefixP++) : <span class="string">"forward"</span> === c.direction ? c.skillP &lt; t.length ? (c.text += t[c.skillP], c.skillP++) : c.delay ? c.delay-- : (c.direction = <span class="string">"backward"</span>, c.delay = a) : c.skillP &gt; <span class="number">0</span> ? (c.text = c.text.slice(<span class="number">0</span>, <span class="number">-1</span>), c.skillP--) : (c.skillI = (c.skillI + <span class="number">1</span>) % o.length, c.direction = <span class="string">"forward"</span>)), r.textContent = c.text, r.appendChild(n(c.prefixP &lt; l.length ? <span class="built_in">Math</span>.min(s, s + c.prefixP) : <span class="built_in">Math</span>.min(s, t.length - c.skillP))), setTimeout(i, d)</span></span><br><span class="line"><span class="undefined">      &#125;</span></span><br><span class="line"><span class="javascript">      <span class="keyword">var</span> l = <span class="string">""</span>,</span></span><br><span class="line"><span class="javascript">      o = [<span class="string">"青青陵上柏,磊磊涧中石。"</span>, <span class="string">"人生天地间,忽如远行客。"</span>,<span class="string">"斗酒相娱乐,聊厚不为薄。"</span>, <span class="string">"驱车策驽马,游戏宛与洛。"</span>,<span class="string">"洛中何郁郁,冠带自相索。"</span>,<span class="string">"长衢罗夹巷,王侯多第宅。"</span>,<span class="string">"两宫遥相望,双阙百余尺。"</span>,<span class="string">"极宴娱心意,戚戚何所迫?"</span>].map(<span class="function"><span class="keyword">function</span> (<span class="params">r</span>) </span>&#123;</span></span><br><span class="line"><span class="javascript">      <span class="keyword">return</span> r + <span class="string">""</span></span></span><br><span class="line"><span class="undefined">      &#125;),</span></span><br><span class="line"><span class="undefined">      a = 2,</span></span><br><span class="line"><span class="undefined">      g = 1,</span></span><br><span class="line"><span class="undefined">      s = 5,</span></span><br><span class="line"><span class="undefined">      d = 75,</span></span><br><span class="line"><span class="javascript">      b = [<span class="string">"rgb(110,64,170)"</span>, <span class="string">"rgb(150,61,179)"</span>, <span class="string">"rgb(191,60,175)"</span>, <span class="string">"rgb(228,65,157)"</span>, <span class="string">"rgb(254,75,131)"</span>, <span class="string">"rgb(255,94,99)"</span>, <span class="string">"rgb(255,120,71)"</span>, <span class="string">"rgb(251,150,51)"</span>, <span class="string">"rgb(226,183,47)"</span>, <span class="string">"rgb(198,214,60)"</span>, <span class="string">"rgb(175,240,91)"</span>, <span class="string">"rgb(127,246,88)"</span>, <span class="string">"rgb(82,246,103)"</span>, <span class="string">"rgb(48,239,130)"</span>, <span class="string">"rgb(29,223,163)"</span>, <span class="string">"rgb(26,199,194)"</span>, <span class="string">"rgb(35,171,216)"</span>, <span class="string">"rgb(54,140,225)"</span>, <span class="string">"rgb(76,110,219)"</span>, <span class="string">"rgb(96,84,200)"</span>],</span></span><br><span class="line"><span class="undefined">      c = &#123;</span></span><br><span class="line"><span class="javascript">        text: <span class="string">""</span>,</span></span><br><span class="line"><span class="undefined">        prefixP: -s,</span></span><br><span class="line"><span class="undefined">        skillI: 0,</span></span><br><span class="line"><span class="undefined">        skillP: 0,</span></span><br><span class="line"><span class="javascript">        direction: <span class="string">"forward"</span>,</span></span><br><span class="line"><span class="undefined">        delay: a,</span></span><br><span class="line"><span class="undefined">        step: g</span></span><br><span class="line"><span class="undefined">      &#125;;</span></span><br><span class="line"><span class="undefined">      i()</span></span><br><span class="line"><span class="undefined">      &#125;;</span></span><br><span class="line"><span class="javascript">      binft(<span class="built_in">document</span>.getElementById(<span class="string">'binft'</span>));</span></span><br><span class="line"><span class="undefined">  </span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure></p><p>最终效果:<br><img src="https://i.loli.net/2019/03/31/5c9f957dbfa40.gif" alt="012"></p><h1 id="–-添加字数统计和阅读时长"><a href="#–-添加字数统计和阅读时长" class="headerlink" title=" – 添加字数统计和阅读时长 "></a><font color="#FF0000"> – 添加字数统计和阅读时长 </font></h1><p>先在博客目录下执行以下命令安装 <font color="#FF0000">hexo-wordcount</font> 插件:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span> npm i --save hexo-wordcount</span><br></pre></td></tr></table></figure><p>之后在 <font color="#FF0000">\themes\hexo-theme-spfk\layout\_partial\post</font> 目录下创建 <font color="#FF0000">word.ejs</font> 文件,在 <font color="#FF0000">word.ejs</font> 文件中写入以下代码:</p><figure class="highlight html"><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="tag">&lt;<span class="name">div</span> <span class="attr">style</span>=<span class="string">"margin-top:10px;"</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"post-time"</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"post-meta-item-icon"</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">i</span> <span class="attr">class</span>=<span class="string">"fa fa-keyboard-o"</span>&gt;</span><span class="tag">&lt;/<span class="name">i</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"post-meta-item-text"</span>&gt;</span>  字数统计: <span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"post-count"</span>&gt;</span><span class="tag">&lt;<span class="name">%=</span> <span class="attr">wordcount</span>(<span class="attr">post.content</span>) %&gt;</span>字<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line"></span><br><span class="line">    <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"post-time"</span>&gt;</span></span><br><span class="line">      &amp;nbsp; | &amp;nbsp;</span><br><span class="line">      <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"post-meta-item-icon"</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">i</span> <span class="attr">class</span>=<span class="string">"fa fa-hourglass-half"</span>&gt;</span><span class="tag">&lt;/<span class="name">i</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"post-meta-item-text"</span>&gt;</span>  阅读时长: <span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">        <span class="tag">&lt;<span class="name">span</span> <span class="attr">class</span>=<span class="string">"post-count"</span>&gt;</span><span class="tag">&lt;<span class="name">%=</span> <span class="attr">min2read</span>(<span class="attr">post.content</span>) %&gt;</span>分<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">      <span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line">    <span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><p>然后在 <font color="#FF0000">\themes\hexo-theme-spfk\layout\_partial\article.ejs</font> 中适当位置添加以下代码:<br><img src="https://i.loli.net/2019/03/31/5c9f95fe4e36a.png" alt="013"></p><p>最后在主题目录下的 <font color="#FF0000">_config.yml</font> 添加以下配置</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">word_count:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><p>如果显示的位置不好,可以自行更改其位置,成功配置后的效果如下:<br><img src="https://i.loli.net/2019/03/31/5c9f968298e2d.png" alt="014"></p><p><img src="https://i.loli.net/2019/03/31/5c9f96892e4db.png" alt="015"></p><p>另外:要在博客底部显示所有文章的总字数,可以<a href="https://www.npmjs.com/package/hexo-wordcount" target="_blank" rel="noopener">点击此处</a>,根据你博客底部文件的类型选择相应的代码放在适当的位置即可,前提是要安装好 <font color="#FF0000">hexo-wordcount</font> 插件,例如我使用 <a href="https://xaoxuu.com/wiki/material-x/" target="_blank" rel="noopener">Material X</a> 主题,在 <font color="#FF0000">\themes\material-x\layout\_partial</font> 目录下的 <font color="#FF0000">footer.ejs</font> 文件中添加如下代码:<br><figure class="highlight javascript"><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">&lt;i <span class="class"><span class="keyword">class</span></span>=<span class="string">"fas fa-chart-area"</span>&gt;<span class="xml"><span class="tag">&lt;/<span class="name">i</span>&gt;</span></span></span><br><span class="line">&lt;span <span class="class"><span class="keyword">class</span></span>=<span class="string">"post-count"</span>&gt;字数统计:&lt;%= totalcount(site) %&gt;<span class="xml"><span class="tag">&lt;/<span class="name">span</span>&gt;</span></span></span><br></pre></td></tr></table></figure></p><p>实现效果如下:<br><img src="https://i.loli.net/2019/03/31/5c9f96d7bd82d.png" alt="016"></p><h1 id="–-添加背景音乐"><a href="#–-添加背景音乐" class="headerlink" title=" – 添加背景音乐 "></a><font color="#FF0000"> – 添加背景音乐 </font></h1><p>打开网页版<a href="https://music.163.com/" target="_blank" rel="noopener">网易云音乐</a>,选择你准备添加的背景音乐,点击生成外链播放器,前提是要有版权,不然是无法生成外链播放器的,复制底下的HTML代码<br><img src="https://i.loli.net/2019/03/31/5c9f97093cb55.png" alt="017"><br><img src="https://i.loli.net/2019/03/31/5c9f973662e3e.png" alt="018"></p><p>然后将此代码放到你想要放的地方,比如放在博客的左侧,则打开 <font color="#FF0000">\themes\hexo-theme-spfk\layout\_partial\left-col.ejs</font> 文件,将复制的HTML代码粘贴进去,再进行适当的位置设置让播放器更美观,其中 <font color="#FF0000">auto=1</font> 表示打开网页自动播放音乐,<font color="#FF0000">auto=0</font> 表示关闭自动播放音乐<br><img src="https://i.loli.net/2019/03/31/5c9f97844554f.png" alt="019"></p><p>最后效果如下:<br><img src="https://i.loli.net/2019/03/31/5c9f97b508969.png" alt="020"></p><p>这种网易云音乐外链的方式有很多局限性,因此推荐使用<font color="#FF0000">aplayer</font>,GitHub地址为:<a href="https://github.com/MoePlayer/APlayer" target="_blank" rel="noopener">https://github.com/MoePlayer/APlayer</a> ,参考教程:<a href="https://blog.yleao.com/2018/0902/hexo%E4%B8%8A%E7%9A%84aplayer%E5%BA%94%E7%94%A8.html" target="_blank" rel="noopener">《hexo上的aplayer应用》</a></p><h1 id="–-添加网站运行时间"><a href="#–-添加网站运行时间" class="headerlink" title=" – 添加网站运行时间 "></a><font color="#FF0000"> – 添加网站运行时间 </font></h1><p>一个比较好的小功能,可以看见自己的博客运行多久了,时间一天天的增加,成就感也会一天天增加的<br>在 <font color="#FF0000">\themes\hexo-theme-spfk\layout\_partial\footer.ejs</font> 文件下添加以下代码:</p><figure class="highlight html"><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="tag">&lt;<span class="name">span</span> <span class="attr">id</span>=<span class="string">"timeDate"</span>&gt;</span>载入天数...<span class="tag">&lt;/<span class="name">span</span>&gt;</span><span class="tag">&lt;<span class="name">span</span> <span class="attr">id</span>=<span class="string">"times"</span>&gt;</span>载入时分秒...<span class="tag">&lt;/<span class="name">span</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span>&gt;</span><span class="undefined"></span></span><br><span class="line"><span class="javascript">    <span class="keyword">var</span> now = <span class="keyword">new</span> <span class="built_in">Date</span>(); </span></span><br><span class="line"><span class="javascript">    <span class="function"><span class="keyword">function</span> <span class="title">createtime</span>(<span class="params"></span>) </span>&#123; </span></span><br><span class="line"><span class="javascript">        <span class="keyword">var</span> grt= <span class="keyword">new</span> <span class="built_in">Date</span>(<span class="string">"08/10/2018 17:38:00"</span>);<span class="comment">//在此处修改你的建站时间</span></span></span><br><span class="line"><span class="undefined">        now.setTime(now.getTime()+250); </span></span><br><span class="line"><span class="javascript">        days = (now - grt ) / <span class="number">1000</span> / <span class="number">60</span> / <span class="number">60</span> / <span class="number">24</span>; dnum = <span class="built_in">Math</span>.floor(days); </span></span><br><span class="line"><span class="javascript">        hours = (now - grt ) / <span class="number">1000</span> / <span class="number">60</span> / <span class="number">60</span> - (<span class="number">24</span> * dnum); hnum = <span class="built_in">Math</span>.floor(hours); </span></span><br><span class="line"><span class="javascript">        <span class="keyword">if</span>(<span class="built_in">String</span>(hnum).length ==<span class="number">1</span> )&#123;hnum = <span class="string">"0"</span> + hnum;&#125; minutes = (now - grt ) / <span class="number">1000</span> /<span class="number">60</span> - (<span class="number">24</span> * <span class="number">60</span> * dnum) - (<span class="number">60</span> * hnum); </span></span><br><span class="line"><span class="javascript">        mnum = <span class="built_in">Math</span>.floor(minutes); <span class="keyword">if</span>(<span class="built_in">String</span>(mnum).length ==<span class="number">1</span> )&#123;mnum = <span class="string">"0"</span> + mnum;&#125; </span></span><br><span class="line"><span class="undefined">        seconds = (now - grt ) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum); </span></span><br><span class="line"><span class="javascript">        snum = <span class="built_in">Math</span>.round(seconds); <span class="keyword">if</span>(<span class="built_in">String</span>(snum).length ==<span class="number">1</span> )&#123;snum = <span class="string">"0"</span> + snum;&#125; </span></span><br><span class="line"><span class="javascript">        <span class="built_in">document</span>.getElementById(<span class="string">"timeDate"</span>).innerHTML = <span class="string">"本站已安全运行 "</span>+dnum+<span class="string">" 天 "</span>; </span></span><br><span class="line"><span class="javascript">        <span class="built_in">document</span>.getElementById(<span class="string">"times"</span>).innerHTML = hnum + <span class="string">" 小时 "</span> + mnum + <span class="string">" 分 "</span> + snum + <span class="string">" 秒"</span>; </span></span><br><span class="line"><span class="undefined">    &#125; </span></span><br><span class="line"><span class="javascript">setInterval(<span class="string">"createtime()"</span>,<span class="number">250</span>);</span></span><br><span class="line"><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>最后效果如下:<br><img src="https://i.loli.net/2019/03/31/5c9f97ddeca8a.png" alt="021"></p><h1 id="–-添加百度统计"><a href="#–-添加百度统计" class="headerlink" title=" – 添加百度统计 "></a><font color="#FF0000"> – 添加百度统计 </font></h1><p>百度统计是百度推出的一款免费的专业网站流量分析工具,能够告诉用户访客是如何找到并浏览用户的网站,在网站上做了些什么,非常有趣,接下来我们把百度统计添加到自己博客当中</p><p>访问<a href="https://tongji.baidu.com" target="_blank" rel="noopener">百度统计首页</a>,注册一个账号后登陆,添加你的博客网站<br><img src="https://i.loli.net/2019/03/31/5c9f98594c895.png" alt="022"></p><p>接着点击代码获取,复制该代码<br><img src="https://i.loli.net/2019/03/31/5c9f988153c35.png" alt="023"></p><p>然后到目录 <font color="#FF0000">\Hexo\themes\hexo-theme-spfk\layout\_partial</font> 下新建一个 <font color="#FF0000">baidu-analytics.ejs</font> 文件,里面粘贴你刚刚复制的代码<br><img src="https://i.loli.net/2019/03/31/5c9f98b0bb4ef.png" alt="024"></p><p>修改主题文件夹下的 <font color="#FF0000">_config.yml</font> 文件,将你的key(图中涂掉部分)填写进去:<br><img src="https://i.loli.net/2019/03/31/5c9f98d43549d.png" alt="025"></p><p>所有操作完成后可以在百度统计管理页面检查代码是否安装成功,如果代码安装正确,一般20分钟后,可以查看网站分析数据<br><img src="https://i.loli.net/2019/03/31/5c9f9900b9b87.png" alt="026"></p><p>另外推荐:<a href="https://web.umeng.com/main.php?c=user&amp;a=index" target="_blank" rel="noopener">友盟</a>,2010年4月在北京成立,安全、可靠、公正、第三方的网站流量统计分析系统</p><h1 id="–-浏览器网页标题恶搞"><a href="#–-浏览器网页标题恶搞" class="headerlink" title=" – 浏览器网页标题恶搞 "></a><font color="#FF0000"> – 浏览器网页标题恶搞 </font></h1><p>当用户访问你的博客时点击到了其他网页,我们可以恶搞一下网页标题,呼唤用户回来,首先在目录 <font color="#FF0000">\Hexo\themes\hexo-theme-spfk\source\js</font> 下新建一个 <font color="#FF0000">FunnyTitle.js</font> 文件,在里面填写如下代码:</p><figure class="highlight javascript"><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">&lt;!--浏览器搞笑标题--&gt;</span><br><span class="line"> <span class="keyword">var</span> OriginTitle = <span class="built_in">document</span>.title;</span><br><span class="line"> <span class="keyword">var</span> titleTime;</span><br><span class="line"> <span class="built_in">document</span>.addEventListener(<span class="string">'visibilitychange'</span>, <span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>&#123;</span><br><span class="line">     <span class="keyword">if</span> (<span class="built_in">document</span>.hidden) &#123;</span><br><span class="line">         $(<span class="string">'[rel="icon"]'</span>).attr(<span class="string">'href'</span>, <span class="string">"/img/trhx2.png"</span>);</span><br><span class="line">         <span class="built_in">document</span>.title = <span class="string">'ヽ(●-`Д´-)ノ你丑你就走!'</span>;</span><br><span class="line">         clearTimeout(titleTime);</span><br><span class="line">     &#125;</span><br><span class="line">     <span class="keyword">else</span> &#123;</span><br><span class="line">         $(<span class="string">'[rel="icon"]'</span>).attr(<span class="string">'href'</span>, <span class="string">"/img/trhx2.png"</span>);</span><br><span class="line">         <span class="built_in">document</span>.title = <span class="string">'ヾ(Ő∀Ő3)ノ你帅就回来!'</span> + OriginTitle;</span><br><span class="line">         titleTime = setTimeout(<span class="function"><span class="keyword">function</span> (<span class="params"></span>) </span>&#123;</span><br><span class="line">             <span class="built_in">document</span>.title = OriginTitle;</span><br><span class="line">         &#125;, <span class="number">2000</span>);</span><br><span class="line">     &#125;</span><br><span class="line"> &#125;);</span><br></pre></td></tr></table></figure><p>然后在 <font color="#FF0000">\Hexo\themes\hexo-theme-spfk\layout\layout.ejs</font> 文件中添加如下代码:</p><figure class="highlight xml"><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="comment">&lt;!--浏览器搞笑标题--&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span> <span class="attr">src</span>=<span class="string">"\js\FunnyTitle.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>再次部署博客后就可以看见标题搞笑的效果了:<br><img src="https://i.loli.net/2019/03/31/5c9f993712b72.png" alt="027"><br><img src="https://i.loli.net/2019/03/31/5c9f994f67c97.png" alt="028"></p><h1 id="–-背景添加动态线条效果"><a href="#–-背景添加动态线条效果" class="headerlink" title=" – 背景添加动态线条效果 "></a><font color="#FF0000"> – 背景添加动态线条效果 </font></h1><p>在 <font color="#FF0000">\Hexo\themes\hexo-theme-spfk\layout\layout.ejs</font> 文件中添加如下代码:</p><figure class="highlight xml"><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="comment">&lt;!--动态线条背景--&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span></span></span><br><span class="line"><span class="tag"><span class="attr">color</span>=<span class="string">"220,220,220"</span> <span class="attr">opacity</span>=<span class="string">'0.7'</span> <span class="attr">zIndex</span>=<span class="string">"-2"</span> <span class="attr">count</span>=<span class="string">"200"</span> <span class="attr">src</span>=<span class="string">"//cdn.bootcss.com/canvas-nest.js/1.0.0/canvas-nest.min.js"</span>&gt;</span><span class="undefined"></span></span><br><span class="line"><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>其中:</p><ul><li>color:表示线条颜色,三个数字分别为(R,G,B),默认:(0,0,0)</li><li>opacity:表示线条透明度(0~1),默认:0.5</li><li>count:表示线条的总数量,默认:150</li><li>zIndex:表示背景的z-index属性,css属性用于控制所在层的位置,默认:-1</li></ul><p>最终实现效果:<br><img src="https://i.loli.net/2019/03/31/5c9f9980540bc.png" alt="029"></p><h1 id="–-添加人体时钟"><a href="#–-添加人体时钟" class="headerlink" title=" – 添加人体时钟 "></a><font color="#FF0000"> – 添加人体时钟 </font></h1><p>无意中发现了个有趣的人体时钟 HONE HONE CLOCK,作者是个日本人,<a href="http://chabudai.org/blog/" target="_blank" rel="noopener">点击此处</a>访问作者博客,<a href="http://chabudai.org/blog/?p=59" target="_blank" rel="noopener">点击此处</a>在作者原博客上查看动态样式,<a href="http://chabudai.sakura.ne.jp/blogparts/honehoneclock/honehone_clock_tr.swf" target="_blank" rel="noopener">点击此处</a>查看动态大图,如果你的博客上有合适的地方,加上一个人体时钟会很有趣的<br><img src="https://i.loli.net/2019/03/31/5c9f99a875ee5.png" alt="030"></p><p>实现代码:</p><figure class="highlight html"><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">&lt;!--人体时钟背景透明--&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">charset</span>=<span class="string">"Shift_JIS"</span> <span class="attr">src</span>=<span class="string">"http://chabudai.sakura.ne.jp/blogparts/honehoneclock/honehone_clock_tr.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">&lt;!--人体时钟背景白--&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">charset</span>=<span class="string">"Shift_JIS"</span> <span class="attr">src</span>=<span class="string">"http://chabudai.sakura.ne.jp/blogparts/honehoneclock/honehone_clock_wh.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>其他网页小挂件推荐:</p><ul><li><a href="http://abowman.com/" target="_blank" rel="noopener">http://abowman.com/</a> 里面有很多有趣的小挂件,可以养养鱼、龟、狗、仓鼠等各式各样的虚拟宠物,能根据你的鼠标指针位置移动,直接复制代码就可以用</li><li><a href="http://www.revolvermaps.com/" target="_blank" rel="noopener">http://www.revolvermaps.com/</a> 它提供网站访客地理信息,可以以2D、3D等形式显示</li><li><a href="http://www.amazingcounters.com/" target="_blank" rel="noopener">http://www.amazingcounters.com/</a> 免费网站计数器,有非常多的样式供你选择,可以设置计数器初始数值,可以设置按访问量计数,也可以按独立访问者计数</li><li><a href="https://www.seniverse.com/widget/get" target="_blank" rel="noopener">https://www.seniverse.com/widget/get</a> 心知天气提供基于Web的免费天气插件,可以为你的网站添加一项简洁美观的天气预报功能,并自动适配PC和手机上的浏览</li></ul><h1 id="–-添加RSS订阅"><a href="#–-添加RSS订阅" class="headerlink" title=" – 添加RSS订阅 "></a><font color="#FF0000"> – 添加RSS订阅 </font></h1><p>RSS订阅是站点用来和其他站点之间共享内容的一种简易方式,即Really Simple Syndication(简易信息聚合),如果不会使用,可以参见百度百科:<a href="https://baike.baidu.com/item/RSS%E8%AE%A2%E9%98%85/663114" target="_blank" rel="noopener">https://baike.baidu.com/item/RSS%E8%AE%A2%E9%98%85/663114</a> ;首先我们安装feed插件,在本地hexo目录下右键<code>git bash here</code>,输入以下命令:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">$</span> npm install hexo-generator-feed</span><br></pre></td></tr></table></figure><p>等待安装完成后,打开hexo目录下配置文件的<code>_config.yml</code>,在末尾添加以下配置:</p><figure class="highlight plain"><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"># Extensions</span><br><span class="line">## Plugins: http://hexo.io/plugins/</span><br><span class="line">#RSS订阅</span><br><span class="line">plugin:</span><br><span class="line">- hexo-generator-feed</span><br><span class="line">#Feed Atom</span><br><span class="line">feed:</span><br><span class="line">type: atom</span><br><span class="line">path: atom.xml</span><br><span class="line">limit: 20</span><br></pre></td></tr></table></figure><p>随后打开主题配置文件<code>_config.yml</code>,添加以下配置:</p><figure class="highlight avrasm"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="symbol">rss:</span> /atom.xml</span><br></pre></td></tr></table></figure><p>至此,RSS订阅功能添加完成</p><h1 id="–-添加网站雪花飘落效果"><a href="#–-添加网站雪花飘落效果" class="headerlink" title=" – 添加网站雪花飘落效果 "></a><font color="#FF0000"> – 添加网站雪花飘落效果 </font></h1><p>样式一和样式二分别如下:<br><img src="https://i.loli.net/2019/03/31/5c9f99f682827.png" alt="031样式一"><br><img src="https://i.loli.net/2019/03/31/5c9f99ff7baf3.png" alt="032样式二"></p><p>实现方法:在 <font color="#FF0000">\Hexo\themes\hexo-theme-spfk\source\js</font> 目录下新建一个 <font color="#FF0000">snow.js</font> 文件,粘贴以下代码:<br><figure class="highlight js"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">/*样式一*/</span></span><br><span class="line">(<span class="function"><span class="keyword">function</span>(<span class="params">$</span>)</span>&#123;</span><br><span class="line">$.fn.snow = <span class="function"><span class="keyword">function</span>(<span class="params">options</span>)</span>&#123;</span><br><span class="line"><span class="keyword">var</span> $flake = $(<span class="string">'&lt;div id="snowbox" /&gt;'</span>).css(&#123;<span class="string">'position'</span>: <span class="string">'absolute'</span>,<span class="string">'z-index'</span>:<span class="string">'9999'</span>, <span class="string">'top'</span>: <span class="string">'-50px'</span>&#125;).html(<span class="string">'&amp;#10052;'</span>),</span><br><span class="line">documentHeight = $(<span class="built_in">document</span>).height(),</span><br><span class="line">documentWidth= $(<span class="built_in">document</span>).width(),</span><br><span class="line">defaults = &#123;</span><br><span class="line">minSize: <span class="number">10</span>,</span><br><span class="line">maxSize: <span class="number">20</span>,</span><br><span class="line">newOn: <span class="number">1000</span>,</span><br><span class="line">flakeColor: <span class="string">"#AFDAEF"</span> <span class="comment">/* 此处可以定义雪花颜色,若要白色可以改为#FFFFFF */</span></span><br><span class="line">&#125;,</span><br><span class="line">options= $.extend(&#123;&#125;, defaults, options);</span><br><span class="line"><span class="keyword">var</span> interval= setInterval( <span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line"><span class="keyword">var</span> startPositionLeft = <span class="built_in">Math</span>.random() * documentWidth - <span class="number">100</span>,</span><br><span class="line">startOpacity = <span class="number">0.5</span> + <span class="built_in">Math</span>.random(),</span><br><span class="line">sizeFlake = options.minSize + <span class="built_in">Math</span>.random() * options.maxSize,</span><br><span class="line">endPositionTop = documentHeight - <span class="number">200</span>,</span><br><span class="line">endPositionLeft = startPositionLeft - <span class="number">500</span> + <span class="built_in">Math</span>.random() * <span class="number">500</span>,</span><br><span class="line">durationFall = documentHeight * <span class="number">10</span> + <span class="built_in">Math</span>.random() * <span class="number">5000</span>;</span><br><span class="line">$flake.clone().appendTo(<span class="string">'body'</span>).css(&#123;</span><br><span class="line">left: startPositionLeft,</span><br><span class="line">opacity: startOpacity,</span><br><span class="line"><span class="string">'font-size'</span>: sizeFlake,</span><br><span class="line">color: options.flakeColor</span><br><span class="line">&#125;).animate(&#123;</span><br><span class="line">top: endPositionTop,</span><br><span class="line">left: endPositionLeft,</span><br><span class="line">opacity: <span class="number">0.2</span></span><br><span class="line">&#125;,durationFall,<span class="string">'linear'</span>,<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">$(<span class="keyword">this</span>).remove()</span><br><span class="line">&#125;);</span><br><span class="line">&#125;, options.newOn);</span><br><span class="line">    &#125;;</span><br><span class="line">&#125;)(jQuery);</span><br><span class="line">$(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">    $.fn.snow(&#123; </span><br><span class="line">    minSize: <span class="number">5</span>, <span class="comment">/* 定义雪花最小尺寸 */</span></span><br><span class="line">    maxSize: <span class="number">50</span>,<span class="comment">/* 定义雪花最大尺寸 */</span></span><br><span class="line">    newOn: <span class="number">300</span>  <span class="comment">/* 定义密集程度,数字越小越密集 */</span></span><br><span class="line">    &#125;);</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure></p><figure class="highlight js"><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><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</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="function"><span class="keyword">function</span> <span class="title">snowFall</span>(<span class="params">snow</span>) </span>&#123;</span><br><span class="line">    <span class="comment">/* 可配置属性 */</span></span><br><span class="line">    snow = snow || &#123;&#125;;</span><br><span class="line">    <span class="keyword">this</span>.maxFlake = snow.maxFlake || <span class="number">200</span>;   <span class="comment">/* 最多片数 */</span></span><br><span class="line">    <span class="keyword">this</span>.flakeSize = snow.flakeSize || <span class="number">10</span>;  <span class="comment">/* 雪花形状 */</span></span><br><span class="line">    <span class="keyword">this</span>.fallSpeed = snow.fallSpeed || <span class="number">1</span>;   <span class="comment">/* 坠落速度 */</span></span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/* 兼容写法 */</span></span><br><span class="line">requestAnimationFrame = <span class="built_in">window</span>.requestAnimationFrame ||</span><br><span class="line">    <span class="built_in">window</span>.mozRequestAnimationFrame ||</span><br><span class="line">    <span class="built_in">window</span>.webkitRequestAnimationFrame ||</span><br><span class="line">    <span class="built_in">window</span>.msRequestAnimationFrame ||</span><br><span class="line">    <span class="built_in">window</span>.oRequestAnimationFrame ||</span><br><span class="line">    <span class="function"><span class="keyword">function</span>(<span class="params">callback</span>) </span>&#123; setTimeout(callback, <span class="number">1000</span> / <span class="number">60</span>); &#125;;</span><br><span class="line"></span><br><span class="line">cancelAnimationFrame = <span class="built_in">window</span>.cancelAnimationFrame ||</span><br><span class="line">    <span class="built_in">window</span>.mozCancelAnimationFrame ||</span><br><span class="line">    <span class="built_in">window</span>.webkitCancelAnimationFrame ||</span><br><span class="line">    <span class="built_in">window</span>.msCancelAnimationFrame ||</span><br><span class="line"><span class="built_in">window</span>.oCancelAnimationFrame;</span><br><span class="line"><span class="comment">/* 开始下雪 */</span></span><br><span class="line">snowFall.prototype.start = <span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">    <span class="comment">/* 创建画布 */</span></span><br><span class="line">    snowCanvas.apply(<span class="keyword">this</span>);</span><br><span class="line">    <span class="comment">/* 创建雪花形状 */</span></span><br><span class="line">    createFlakes.apply(<span class="keyword">this</span>);</span><br><span class="line">    <span class="comment">/* 画雪 */</span></span><br><span class="line">    drawSnow.apply(<span class="keyword">this</span>)</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/* 创建画布 */</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">snowCanvas</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="comment">/* 添加Dom结点 */</span></span><br><span class="line">    <span class="keyword">var</span> snowcanvas = <span class="built_in">document</span>.createElement(<span class="string">"canvas"</span>);</span><br><span class="line">    snowcanvas.id = <span class="string">"snowfall"</span>;</span><br><span class="line">    snowcanvas.width = <span class="built_in">window</span>.innerWidth;</span><br><span class="line">    snowcanvas.height = <span class="built_in">document</span>.body.clientHeight;</span><br><span class="line">    snowcanvas.setAttribute(<span class="string">"style"</span>, <span class="string">"position:absolute; top: 0; left: 0; z-index: 1; pointer-events: none;"</span>);</span><br><span class="line">    <span class="built_in">document</span>.getElementsByTagName(<span class="string">"body"</span>)[<span class="number">0</span>].appendChild(snowcanvas);</span><br><span class="line">    <span class="keyword">this</span>.canvas = snowcanvas;</span><br><span class="line">    <span class="keyword">this</span>.ctx = snowcanvas.getContext(<span class="string">"2d"</span>);</span><br><span class="line">    <span class="comment">/* 窗口大小改变的处理 */</span></span><br><span class="line">    <span class="built_in">window</span>.onresize = <span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">        snowcanvas.width = <span class="built_in">window</span>.innerWidth;</span><br><span class="line">        <span class="comment">/* snowcanvas.height = window.innerHeight */</span></span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/* 雪运动对象 */</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">flakeMove</span>(<span class="params">canvasWidth, canvasHeight, flakeSize, fallSpeed</span>) </span>&#123;</span><br><span class="line">    <span class="keyword">this</span>.x = <span class="built_in">Math</span>.floor(<span class="built_in">Math</span>.random() * canvasWidth);   <span class="comment">/* x坐标 */</span></span><br><span class="line">    <span class="keyword">this</span>.y = <span class="built_in">Math</span>.floor(<span class="built_in">Math</span>.random() * canvasHeight);  <span class="comment">/* y坐标 */</span></span><br><span class="line">    <span class="keyword">this</span>.size = <span class="built_in">Math</span>.random() * flakeSize + <span class="number">2</span>;          <span class="comment">/* 形状 */</span></span><br><span class="line">    <span class="keyword">this</span>.maxSize = flakeSize;                           <span class="comment">/* 最大形状 */</span></span><br><span class="line">    <span class="keyword">this</span>.speed = <span class="built_in">Math</span>.random() * <span class="number">1</span> + fallSpeed;         <span class="comment">/* 坠落速度 */</span></span><br><span class="line">    <span class="keyword">this</span>.fallSpeed = fallSpeed;                         <span class="comment">/* 坠落速度 */</span></span><br><span class="line">    <span class="keyword">this</span>.velY = <span class="keyword">this</span>.speed;                             <span class="comment">/* Y方向速度 */</span></span><br><span class="line">    <span class="keyword">this</span>.velX = <span class="number">0</span>;                                      <span class="comment">/* X方向速度 */</span></span><br><span class="line">    <span class="keyword">this</span>.stepSize = <span class="built_in">Math</span>.random() / <span class="number">30</span>;                 <span class="comment">/* 步长 */</span></span><br><span class="line">    <span class="keyword">this</span>.step = <span class="number">0</span>                                       <span class="comment">/* 步数 */</span></span><br><span class="line">&#125;</span><br><span class="line">flakeMove.prototype.update = <span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="keyword">var</span> x = <span class="keyword">this</span>.x,</span><br><span class="line">        y = <span class="keyword">this</span>.y;</span><br><span class="line">    <span class="comment">/* 左右摆动(余弦) */</span></span><br><span class="line">    <span class="keyword">this</span>.velX *= <span class="number">0.98</span>;</span><br><span class="line">    <span class="keyword">if</span> (<span class="keyword">this</span>.velY &lt;= <span class="keyword">this</span>.speed) &#123;</span><br><span class="line">        <span class="keyword">this</span>.velY = <span class="keyword">this</span>.speed</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">this</span>.velX += <span class="built_in">Math</span>.cos(<span class="keyword">this</span>.step += <span class="number">.05</span>) * <span class="keyword">this</span>.stepSize;</span><br><span class="line"></span><br><span class="line">    <span class="keyword">this</span>.y += <span class="keyword">this</span>.velY;</span><br><span class="line">    <span class="keyword">this</span>.x += <span class="keyword">this</span>.velX;</span><br><span class="line">    <span class="comment">/* 飞出边界的处理 */</span></span><br><span class="line">    <span class="keyword">if</span> (<span class="keyword">this</span>.x &gt;= canvas.width || <span class="keyword">this</span>.x &lt;= <span class="number">0</span> || <span class="keyword">this</span>.y &gt;= canvas.height || <span class="keyword">this</span>.y &lt;= <span class="number">0</span>) &#123;</span><br><span class="line">        <span class="keyword">this</span>.reset(canvas.width, canvas.height)</span><br><span class="line">    &#125;</span><br><span class="line">&#125;;</span><br><span class="line"><span class="comment">/* 飞出边界-放置最顶端继续坠落 */</span></span><br><span class="line">flakeMove.prototype.reset = <span class="function"><span class="keyword">function</span>(<span class="params">width, height</span>) </span>&#123;</span><br><span class="line">    <span class="keyword">this</span>.x = <span class="built_in">Math</span>.floor(<span class="built_in">Math</span>.random() * width);</span><br><span class="line">    <span class="keyword">this</span>.y = <span class="number">0</span>;</span><br><span class="line">    <span class="keyword">this</span>.size = <span class="built_in">Math</span>.random() * <span class="keyword">this</span>.maxSize + <span class="number">2</span>;</span><br><span class="line">    <span class="keyword">this</span>.speed = <span class="built_in">Math</span>.random() * <span class="number">1</span> + <span class="keyword">this</span>.fallSpeed;</span><br><span class="line">    <span class="keyword">this</span>.velY = <span class="keyword">this</span>.speed;</span><br><span class="line">    <span class="keyword">this</span>.velX = <span class="number">0</span>;</span><br><span class="line">&#125;;</span><br><span class="line"><span class="comment">// 渲染雪花-随机形状(此处可修改雪花颜色!!!)</span></span><br><span class="line">flakeMove.prototype.render = <span class="function"><span class="keyword">function</span>(<span class="params">ctx</span>) </span>&#123;</span><br><span class="line">    <span class="keyword">var</span> snowFlake = ctx.createRadialGradient(<span class="keyword">this</span>.x, <span class="keyword">this</span>.y, <span class="number">0</span>, <span class="keyword">this</span>.x, <span class="keyword">this</span>.y, <span class="keyword">this</span>.size);</span><br><span class="line">    snowFlake.addColorStop(<span class="number">0</span>, <span class="string">"rgba(255, 255, 255, 0.9)"</span>);  <span class="comment">/* 此处是雪花颜色,默认是白色 */</span></span><br><span class="line">    snowFlake.addColorStop(<span class="number">.5</span>, <span class="string">"rgba(255, 255, 255, 0.5)"</span>); <span class="comment">/* 若要改为其他颜色,请自行查 */</span></span><br><span class="line">    snowFlake.addColorStop(<span class="number">1</span>, <span class="string">"rgba(255, 255, 255, 0)"</span>);    <span class="comment">/* 找16进制的RGB 颜色代码。 */</span></span><br><span class="line">    ctx.save();</span><br><span class="line">    ctx.fillStyle = snowFlake;</span><br><span class="line">    ctx.beginPath();</span><br><span class="line">    ctx.arc(<span class="keyword">this</span>.x, <span class="keyword">this</span>.y, <span class="keyword">this</span>.size, <span class="number">0</span>, <span class="built_in">Math</span>.PI * <span class="number">2</span>);</span><br><span class="line">    ctx.fill();</span><br><span class="line">    ctx.restore();</span><br><span class="line">&#125;;</span><br><span class="line"><span class="comment">/* 创建雪花-定义形状 */</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">createFlakes</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="keyword">var</span> maxFlake = <span class="keyword">this</span>.maxFlake,</span><br><span class="line">        flakes = <span class="keyword">this</span>.flakes = [],</span><br><span class="line">        canvas = <span class="keyword">this</span>.canvas;</span><br><span class="line">    <span class="keyword">for</span> (<span class="keyword">var</span> i = <span class="number">0</span>; i &lt; maxFlake; i++) &#123;</span><br><span class="line">        flakes.push(<span class="keyword">new</span> flakeMove(canvas.width, canvas.height, <span class="keyword">this</span>.flakeSize, <span class="keyword">this</span>.fallSpeed))</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/* 画雪 */</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">drawSnow</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="keyword">var</span> maxFlake = <span class="keyword">this</span>.maxFlake,</span><br><span class="line">        flakes = <span class="keyword">this</span>.flakes;</span><br><span class="line">    ctx = <span class="keyword">this</span>.ctx, canvas = <span class="keyword">this</span>.canvas, that = <span class="keyword">this</span>;</span><br><span class="line">    <span class="comment">/* 清空雪花 */</span></span><br><span class="line">    ctx.clearRect(<span class="number">0</span>, <span class="number">0</span>, canvas.width, canvas.height);</span><br><span class="line">    <span class="keyword">for</span> (<span class="keyword">var</span> e = <span class="number">0</span>; e &lt; maxFlake; e++) &#123;</span><br><span class="line">        flakes[e].update();</span><br><span class="line">        flakes[e].render(ctx);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="comment">/*  一帧一帧的画 */</span></span><br><span class="line">    <span class="keyword">this</span>.loop = requestAnimationFrame(<span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">        drawSnow.apply(that);</span><br><span class="line">    &#125;);</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/* 调用及控制方法 */</span></span><br><span class="line"><span class="keyword">var</span> snow = <span class="keyword">new</span> snowFall(&#123;<span class="attr">maxFlake</span>:<span class="number">60</span>&#125;);</span><br><span class="line">snow.start();</span><br></pre></td></tr></table></figure><p>然后在 <font color="#FF0000">\Hexo\themes\hexo-theme-spfk\layout\layout.ejs</font> 文件里引用即可:</p><figure class="highlight xml"><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="comment">&lt;!-- 雪花特效 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span> <span class="attr">src</span>=<span class="string">"\js\snow.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>如果没效果,请确认网页是否已载入JQurey,如果没有请在下雪代码之前引入JQ即可:</p><figure class="highlight xml"><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="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span> <span class="attr">src</span>=<span class="string">"http://libs.baidu.com/jquery/1.8.3/jquery.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">script</span> <span class="attr">type</span>=<span class="string">"text/javascript"</span> <span class="attr">src</span>=<span class="string">"http://libs.baidu.com/jquery/1.8.3/jquery.min.js"</span>&gt;</span><span class="undefined"></span><span class="tag">&lt;/<span class="name">script</span>&gt;</span></span><br></pre></td></tr></table></figure><p>原文链接:<a href="https://ihuan.me/2172.html" target="_blank" rel="noopener">《分享两种圣诞节雪花特效JS代码(网站下雪效果)》</a></p><h1 id="–-添加-Fork-me-on-GitHub-效果"><a href="#–-添加-Fork-me-on-GitHub-效果" class="headerlink" title=" – 添加 Fork me on GitHub 效果 "></a><font color="#FF0000"> – 添加 Fork me on GitHub 效果 </font></h1><p>效果图:<br><img src="https://i.loli.net/2019/03/31/5c9f9a69c7aa8.png" alt="033"><br><a href="https://blog.github.com/2008-12-19-github-ribbons/" target="_blank" rel="noopener">点击此处</a>可以查看更多样式,将相应样式的代码复制到你想要放的地方就OK了,代码里的链接也要替换成你的,更多创意,比如 Follow me on CSDN ,只需要用PS改掉图片里的文字,替换掉相应链接即可</p><h1 id="–-添加背景动态彩带效果"><a href="#–-添加背景动态彩带效果" class="headerlink" title=" – 添加背景动态彩带效果 "></a><font color="#FF0000"> – 添加背景动态彩带效果 </font></h1><p>样式一是鼠标点击后彩带自动更换样式,样式二是飘动的彩带:<br><img src="https://i.loli.net/2019/03/31/5c9f9fe2d5a4b.png" alt="034"></p><p>实现方法:在 <font color="#FF0000">\themes\material-x\layout\layout.ejs</font> 文件的<font color="#FF0000">body</font>前面添加如下代码:<br><figure class="highlight plain"><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">&lt;!-- 样式一(鼠标点击更换样式) --&gt;</span><br><span class="line">&lt;script src=&quot;https://g.joyinshare.com/hc/ribbon.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</span><br></pre></td></tr></table></figure></p><figure class="highlight plain"><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">&lt;!-- 样式二(飘动的彩带) --&gt;</span><br><span class="line">&lt;script src=&quot;https://g.joyinshare.com/hc/piao.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</span><br></pre></td></tr></table></figure><hr><h1 id="未完待续……"><a href="#未完待续……" class="headerlink" title="未完待续……"></a><center><font color="#FF0000">未完待续……</font></center></h1><hr>]]></content>
T
TRHX 已提交
426 427 428 429 430 431 432
    
    <summary type="html">
    
      Hexo 博客主题的美化,添加一些实用功能,定制你的专属博客【持续更新】
    
    </summary>
    
T
TRHX 已提交
433
      <category term="实用教程" scheme="https://itrhx.com/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
T
TRHX 已提交
434 435
    
    
T
TRHX 已提交
436 437
      <category term="主题个性化" scheme="https://itrhx.com/tags/%E4%B8%BB%E9%A2%98%E4%B8%AA%E6%80%A7%E5%8C%96/"/>
    
T
TRHX 已提交
438 439
      <category term="Hexo" scheme="https://itrhx.com/tags/Hexo/"/>
    
T
TRHX 已提交
440 441 442 443
  </entry>
  
  <entry>
    <title>Markdown 语法&amp;技巧总结</title>
T
TRHX 已提交
444 445
    <link href="https://itrhx.com/2018/08/25/A03-Markdown-grammar-and-techniques/"/>
    <id>https://itrhx.com/2018/08/25/A03-Markdown-grammar-and-techniques/</id>
T
TRHX 已提交
446
    <published>2018-08-25T09:57:16.879Z</published>
T
TRHX 已提交
447
    <updated>2019-04-01T16:19:25.611Z</updated>
T
TRHX 已提交
448
    
T
TRHX 已提交
449
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><p><strong><font color="#4094C7">在写博客的时候,我们不希望都是千篇一律的没有色彩,多了解一些 Markdown 语法技巧有利于丰富我们的博客,看起来更有 feel !</font></strong></p><hr><h1 id="–-插入图片"><a href="#–-插入图片" class="headerlink" title=" – 插入图片 "></a><font color="#FF0000"> – 插入图片 </font></h1><p><img src="https://i.loli.net/2019/04/02/5ca239da22c83.jpg" alt="车"></p><p>如果你使用 MarkdownPad 的话就比较方便,可以直接选择插入本地图片或者是网络图片,实质是通过以下代码实现的,小括号里面就是你的图片地址,中括号里面是图片的替代文字,比如上面的图片代码如下:<br><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">![<span class="string">车</span>](<span class="link">https://i.loli.net/2019/04/02/5ca239da22c83.jpg</span>)</span><br></pre></td></tr></table></figure></p><h1 id="–-插入音乐"><a href="#–-插入音乐" class="headerlink" title=" – 插入音乐 "></a><font color="#FF0000"> – 插入音乐 </font></h1><p>打开网页版<a href="https://music.163.com/" target="_blank" rel="noopener">网易云音乐</a>,选择你准备插入的音乐,点击生成外链播放器,前提是要有版权,不然是无法生成外链播放器的,复制底下的HTML代码<br><img src="https://i.imgur.com/6E1kQzO.png" alt=""><br><img src="https://i.imgur.com/uRdMA63.png" alt=""></p><p>然后将此HTML代码粘贴到你想要放的地方,可自行调节播放器的大小,其中 <font color="#FF0000">auto=1</font> 表示打开网页自动播放音乐,<font color="#FF0000">auto=0</font> 表示关闭自动播放音乐,比如See You Again (中英文版) - 罗艺恒这首歌曲代码如下:</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">iframe</span> <span class="attr">frameborder</span>=<span class="string">"no"</span> <span class="attr">border</span>=<span class="string">"0"</span> <span class="attr">marginwidth</span>=<span class="string">"0"</span> <span class="attr">marginheight</span>=<span class="string">"0"</span> <span class="attr">width</span>=<span class="string">330</span> <span class="attr">height</span>=<span class="string">86</span> <span class="attr">src</span>=<span class="string">"//music.163.com/outchain/player?type=2&amp;id=32405683&amp;auto=1&amp;height=66"</span>&gt;</span><span class="tag">&lt;/<span class="name">iframe</span>&gt;</span></span><br></pre></td></tr></table></figure><h1 id="–-插入视频"><a href="#–-插入视频" class="headerlink" title=" – 插入视频 "></a><font color="#FF0000"> – 插入视频 </font></h1><p>高考毕业了我们为下一届的学弟学妹们录制高考加油视频,我担任后期制作,在这里就以该视频为例٩(๑❛ᴗ❛๑)۶,在腾讯视频播放页面找到分享按钮,复制该视频的通用代码(其他视频播放平台也一样),粘贴到文章中对应位置即可,可根据情况调整视频播放器的大小<br><img src="https://i.loli.net/2019/04/02/5ca23a062920c.png" alt=""></p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">iframe</span> <span class="attr">frameborder</span>=<span class="string">"0"</span> <span class="attr">width</span>=<span class="string">"840"</span>  <span class="attr">height</span>=<span class="string">"500"</span> <span class="attr">src</span>=<span class="string">"https://v.qq.com/txp/iframe/player.html?vid=x0643zvgtf7"</span> <span class="attr">allowFullScreen</span>=<span class="string">"true"</span>&gt;</span><span class="tag">&lt;/<span class="name">iframe</span>&gt;</span></span><br></pre></td></tr></table></figure><iframe frameborder="0" width="840" height="500" src="https://v.qq.com/txp/iframe/player.html?vid=x0643zvgtf7" allowfullscreen="true"></iframe><hr><h1 id="未完待续……"><a href="#未完待续……" class="headerlink" title="未完待续…… "></a><center><font color="#FF0000">未完待续…… </font></center></h1><hr>]]></content>
T
TRHX 已提交
450 451 452 453 454 455 456
    
    <summary type="html">
    
      在写博客的时候遇到的 Markdown 各种方法技巧或者语法记录下来,方便查阅【持续更新】
    
    </summary>
    
T
TRHX 已提交
457
      <category term="实用教程" scheme="https://itrhx.com/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
T
TRHX 已提交
458 459
    
    
T
TRHX 已提交
460
      <category term="Markdown" scheme="https://itrhx.com/tags/Markdown/"/>
T
TRHX 已提交
461
    
T
TRHX 已提交
462
      <category term="技巧" scheme="https://itrhx.com/tags/%E6%8A%80%E5%B7%A7/"/>
T
TRHX 已提交
463 464 465 466
    
  </entry>
  
  <entry>
T
TRHX 已提交
467
    <title>使用 Github Pages 和 Hexo 搭建自己的独立博客</title>
T
TRHX 已提交
468 469
    <link href="https://itrhx.com/2018/08/15/A02-Build-blog-with-GithubPages-and-Hexo/"/>
    <id>https://itrhx.com/2018/08/15/A02-Build-blog-with-GithubPages-and-Hexo/</id>
T
TRHX 已提交
470
    <published>2018-08-15T13:34:58.325Z</published>
T
TRHX 已提交
471
    <updated>2019-04-01T16:33:52.249Z</updated>
T
TRHX 已提交
472
    
T
TRHX 已提交
473
    <content type="html"><![CDATA[<link rel="stylesheet" class="aplayer-secondary-style-marker" href="\assets\css\APlayer.min.css"><script src="\assets\js\APlayer.min.js" class="aplayer-secondary-script-marker"></script><p><img src="https://i.loli.net/2019/03/25/5c98f4517de37.jpg" alt=""></p><a id="more"></a><h1 id="–-前言"><a href="#–-前言" class="headerlink" title="– 前言"></a><font color="#FF000">– 前言</font></h1><blockquote><p>首先感谢您能访问我的博客:<a href="https://trhx.github.io" target="_blank" rel="noopener">TRHX’S BLOG</a></p></blockquote><p>这是一篇有关如何使用 <font color="#DC143C">Github Pages</font> 和 <font color="#DC143C">Hexo</font> 搭建属于自己独立博客的详尽教程,本人是软件工程专业本科生,目前只学习了C和C++编程语言,对网站开发的有关知识几乎为零,这也是我搭建好自己的博客之后写的第一篇博客,刚开始搭建博客的时候自己也是网上各种百度,由于自己属于<font color="#DC143C">小白</font>那种,历经了千辛万苦才弄好,所以借这个机会写一篇小白真正能看懂的博客搭建教程,教你一步一步走向成功的彼岸!</p><p>推荐文章: <a href="http://www.cnblogs.com/jhzhu/p/3893297.html" target="_blank" rel="noopener">《我为什么写博客》</a> (By 知明所以)<br>      <a href="http://mindhacks.cn/2009/02/15/why-you-should-start-blogging-now/" target="_blank" rel="noopener">《为什么你应该(从现在开始就)写博客》</a>  (By 刘未鹏 | Mind Hacks)</p><h1 id="–-入门"><a href="#–-入门" class="headerlink" title="– 入门"></a><font color="#FF000">– 入门</font></h1><blockquote><p><strong>Github Pages</strong></p></blockquote><p>Github Pages可以被认为是用户编写的、托管在github上的静态网页。使用Github Pages可以为你提供一个免费的服务器,免去了自己搭建服务器和写数据库的麻烦。此外还可以绑定自己的域名。</p><blockquote><p><strong>Hexo</strong></p></blockquote><p>Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。</p><h1 id="–-安装-Node-js"><a href="#–-安装-Node-js" class="headerlink" title="– 安装 Node.js"></a><font color="#FF000">– 安装 Node.js</font></h1><p><a href="https://nodejs.org/en/download/" target="_blank" rel="noopener">点击此处</a>访问官网,按需下载相应版本,默认安装可以了<br><img src="https://i.loli.net/2019/03/25/5c98f481d3740.png" alt=""></p><p>注:本人在安装过程中出现了Warning 1909,无法创建快捷方式,这种情况很少出现,如果在安装过程中也有这种情况请参考百度文库(win10系统实测可行):<a href="https://wenku.baidu.com/view/4ad59110964bcf84b9d57ba5.html" target="_blank" rel="noopener">《Win7安装程序警告1909无法创建快捷方式》</a><br><img src="https://i.loli.net/2019/03/25/5c98f4c99f708.png" alt=""></p><h1 id="–-安装-Git"><a href="#–-安装-Git" class="headerlink" title="– 安装 Git"></a><font color="#FF000">– 安装 Git</font></h1><p><a href="https://git-scm.com/download/win" target="_blank" rel="noopener">点击此处</a>访问官网,按需下载相应版本,默认安装即可<br>参考资料:<a href="https://www.cnblogs.com/jytx/p/5602927.html" target="_blank" rel="noopener">《如何在windows下安装GIT》</a>  (By 俊雨廷休)<br>     <a href="http://git.oschina.net/progit/" target="_blank" rel="noopener">《Pro Git(中文版)》</a></p><h1 id="–-检验软件是否安装成功"><a href="#–-检验软件是否安装成功" class="headerlink" title="– 检验软件是否安装成功"></a><font color="#FF000">– 检验软件是否安装成功</font></h1><p>同时按下 Win 键和 R 键打开运行窗口,输入 <font color="#DC143C">cmd</font> ,然后输入以下命令,有相应版本信息显示则安装成功,若不正确可以卸载软件重新安装,此外若安装成功,在桌面右键鼠标,可以看到菜单里多了 <font color="#DC143C">Git GUI Here</font> 和 <font color="#DC143C">Git Bash Here</font>两个选项,第一个是<font color="#DC143C">图形界面的Git操作</font>,另一个是<font color="#DC143C">命令行</font><br><figure class="highlight plain"><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">$ git --version</span><br><span class="line">$ node -v</span><br><span class="line">$ npm -v</span><br></pre></td></tr></table></figure></p><p><img src="https://i.loli.net/2019/03/25/5c98f4ee8a794.png" alt=""></p><p><img src="https://i.loli.net/2019/03/25/5c98f50ec2092.png" alt=""></p><h1 id="–-Hexo-安装"><a href="#–-Hexo-安装" class="headerlink" title="– Hexo 安装"></a><font color="#FF000">– Hexo 安装</font></h1><p>选择一个磁盘,新建一个文件夹,自己重命名文件夹(如:我的文件夹为:<font color="#DC143C">E\TRHX_Blog</font>),博客相关文件将储存在此文件夹下,在该文件夹下右键鼠标,点击 <font color="#DC143C">Git Bash Here</font>,输入以下 npm 命令即可安装,第一个命令表示安装 hexo,第二个命令表示安装 hexo 部署到 git page 的 deployer,如图所示即为安装成功<br><figure class="highlight plain"><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">$ npm install hexo-cli -g</span><br><span class="line">$ npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure></p><p><img src="https://i.loli.net/2019/03/25/5c98f53d4b019.png" alt=""></p><h1 id="–-Hexo-初始化配置"><a href="#–-Hexo-初始化配置" class="headerlink" title="– Hexo 初始化配置"></a><font color="#FF000">– Hexo 初始化配置</font></h1><p>在刚才新建的文件夹里面再次新建一个 <font color="#DC143C">Hexo</font> 文件夹(如:我的文件夹为:<font color="#DC143C">E\TRHX_Blog\Hexo</font>),进入该 <font color="#DC143C">Hexo</font> 文件夹右键鼠标,点击 <font color="#DC143C">Git Bash Here</font>,输入以下命令,如图所示则安装成功<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo init</span><br></pre></td></tr></table></figure></p><p><img src="https://i.loli.net/2019/03/25/5c98f566b4b6b.png" alt=""></p><p>Hexo 安装完成后,将会在指定文件夹中新建所需要的文件,Hexo 文件夹下的目录如下:<br><img src="https://i.loli.net/2019/03/25/5c98f58d2eee5.png" alt=""></p><h1 id="–-本地查看效果"><a href="#–-本地查看效果" class="headerlink" title="– 本地查看效果"></a><font color="#FF000">– 本地查看效果</font></h1><p>执行以下命令,执行完即可登录 <a href="http://localhost:4000/" target="_blank" rel="noopener">http://localhost:4000/</a> 查看效果<br><figure class="highlight plain"><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">$ hexo generate</span><br><span class="line">$ hexo server</span><br></pre></td></tr></table></figure></p><p>显示以下信息说明操作成功:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.</span><br></pre></td></tr></table></figure></p><p>登录 <a href="http://localhost:4000/" target="_blank" rel="noopener">http://localhost:4000/</a> 查看效果:<br><img src="https://i.loli.net/2019/03/25/5c98f5b7c74d2.png" alt=""></p><h1 id="–-将博客部署到-Github-Pages-上"><a href="#–-将博客部署到-Github-Pages-上" class="headerlink" title="– 将博客部署到 Github Pages 上"></a><font color="#FF000">– 将博客部署到 Github Pages 上</font></h1><p>到目前为止,我们的本地博客就成功搭建了,但是现在我们只能通过本地连接查看博客,我们要做的是让其他人也能够访问我们的博客,这就需要我们将博客部署到Github Pages上</p><p>一、注册 Github 账户:<a href="https://github.com" target="_blank" rel="noopener">点击此处</a>访问 Github 官网,点击 Sign Up 注册账户</p><p>二、创建项目代码库:点击 <font color="#DC143C">New repository</font> 开始创建,步骤及注意事项见图:<br><img src="https://i.loli.net/2019/03/25/5c98f5e0930c2.png" alt=""></p><p>三、配置 <font color="#DC143C">SSH</font> 密钥:只有配置好 <font color="#DC143C">SSH</font> 密钥后,我们才可以通过 git 操作实现本地代码库与 Github 代码库同步,在你第一次新建的文件夹里面(如:我的文件夹为:<font color="#DC143C">E\TRHX_Blog</font>) <font color="#DC143C">Git Bash Here</font> 输入以下命令:<br><figure class="highlight plain"><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">$ ssh-keygen -t rsa -C &quot;your email@example.com&quot;</span><br><span class="line">//引号里面填写你的邮箱地址,比如我的是tanrenhou@126.com</span><br></pre></td></tr></table></figure></p><p>之后会出现:<br><figure class="highlight plain"><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">Generating public/private rsa key pair.</span><br><span class="line">Enter file in which to save the key (/c/Users/you/.ssh/id_rsa):</span><br><span class="line">//到这里可以直接回车将密钥按默认文件进行存储</span><br></pre></td></tr></table></figure></p><p>然后会出现:<br><figure class="highlight plain"><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">Enter passphrase (empty for no passphrase):</span><br><span class="line">//这里是要你输入密码,其实不需要输什么密码,直接回车就行</span><br><span class="line">Enter same passphrase again:</span><br></pre></td></tr></table></figure></p><p>接下来屏幕会显示:<br><figure class="highlight plain"><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">Your identification has been saved in /c/Users/you/.ssh/id_rsa.</span><br><span class="line">Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.</span><br><span class="line">The key fingerprint is:</span><br><span class="line">这里是各种字母数字组成的字符串,结尾是你的邮箱</span><br><span class="line">The key&apos;s randomart image is:</span><br><span class="line">这里也是各种字母数字符号组成的字符串</span><br></pre></td></tr></table></figure></p><p>运行以下命令,将公钥的内容复制到系统粘贴板上<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ clip &lt; ~/.ssh/id_rsa.pub</span><br></pre></td></tr></table></figure></p><p>四、在 GitHub 账户中添加你的公钥</p><p>1.登陆 GitHub,进入 <font color="#DC143C">Settings</font>:<br><img src="https://i.loli.net/2019/03/25/5c98f606e7558.png" alt=""></p><p>2.点击 <font color="#DC143C">SSH and GPG Keys</font>:<br><img src="https://i.loli.net/2019/03/25/5c98f622b4588.png" alt=""></p><p>3.选择 <font color="#DC143C">New SSH key</font>:<br><img src="https://i.loli.net/2019/03/25/5c98f63eb1ab2.png" alt=""></p><p>4.粘贴密钥:<br><img src="https://i.loli.net/2019/03/25/5c98f6bc1fc87.png" alt=""></p><p>五、测试</p><p>输入以下命令:<font color="#DC143C">注意:<a href="mailto:git@github.com" target="_blank" rel="noopener">git@github.com</a>不要做任何更改!</font><br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ ssh -T git@github.com</span><br></pre></td></tr></table></figure></p><p>之后会显示:<br><img src="https://i.loli.net/2019/03/25/5c98f6e3b4803.png" alt=""></p><p>输入 <font color="#DC143C">yes</font> 后会显示:<br><img src="https://i.loli.net/2019/03/25/5c98f702c46d6.png" alt=""><br>此时表示设置正确</p><p>六、配置 Git 个人信息</p><p>Git 会根据用户的名字和邮箱来记录提交,GitHub 也是用这些信息来做权限的处理,输入以下命令进行个人信息的设置,把名称和邮箱替换成你自己的,名字可以不是 GitHub 的昵称,但为了方便记忆,建议与 GitHub  一致<br><figure class="highlight plain"><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">$ git config --global user.name &quot;此处填你的用户名&quot;</span><br><span class="line">$ git config --global user.email &quot;此处填你的邮箱&quot;</span><br></pre></td></tr></table></figure></p><p>到此为止 SSH Key 配置成功,本机已成功连接到 Github</p><h1 id="–-将本地的-Hexo-文件更新到-Github-的库中"><a href="#–-将本地的-Hexo-文件更新到-Github-的库中" class="headerlink" title="– 将本地的 Hexo 文件更新到 Github 的库中"></a><font color="#FF000">– 将本地的 Hexo 文件更新到 Github 的库中</font></h1><p>一、登录 Github 打开自己的项目 <font color="#DC143C">yourname.github.io</font><br><img src="https://i.loli.net/2019/03/25/5c98f720ccae0.png" alt=""></p><p>二、鼠标移到 <font color="#DC143C">Clone or download</font> 按钮,选择 <font color="#DC143C">Use SSH</font><br><img src="https://i.loli.net/2019/03/25/5c98f7408b8a9.png" alt=""></p><p>三、一键复制地址<br><img src="https://i.loli.net/2019/03/25/5c98f76cb3da4.png" alt=""></p><p>四、打开你创建的 <font color="#DC143C">Hexo</font> 文件夹(如:<font color="#DC143C">E:\TRHX_Blog\Hexo</font>),右键用记事本(或者Notepad++、Vs Code等)打开该文件夹下的 <font color="#DC143C">_config.yml</font> 文件<br><img src="https://i.loli.net/2019/03/25/5c98f78b8ba3e.png" alt=""></p><p>五、按下图修改 <font color="#DC143C">_config.yml</font> 文件并保存<br><img src="https://i.loli.net/2019/03/25/5c98f7e11eed7.png" alt=""></p><p>六、在 <font color="#DC143C">Hexo</font> 文件夹下分别执行以下命令<br><figure class="highlight plain"><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">$ hexo g</span><br><span class="line">$ hexo d</span><br></pre></td></tr></table></figure></p><p>或者直接执行<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo g -d</span><br></pre></td></tr></table></figure></p><p>执行完之后会让你输入你的 Github 的账号和密码,如果此时报以下错误,说明你的 deployer 没有安装成功<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ERROR Deployer not found: git</span><br></pre></td></tr></table></figure></p><p>需要执行以下命令再安装一次:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure></p><p>再执行 <font color="#DC143C"><code>hexo g -d</code></font>,你的博客就会部署到 Github 上了</p><p>七、访问博客</p><p>你的博客地址:<font color="#DC143C">https://你的用户名.github.io</font>,比如我的是:<font color="#DC143C"><a href="https://trhx.github.io" target="_blank" rel="noopener">https://trhx.github.io</a></font> ,现在每个人都可以通过此链接访问你的博客了</p><h1 id="–-如何在博客上发表文章"><a href="#–-如何在博客上发表文章" class="headerlink" title="– 如何在博客上发表文章"></a><font color="#FF000">– 如何在博客上发表文章</font></h1><p>博客已经成功搭建了,但是我们该怎么写博客呢?</p><p>一、新建一个空文章,输入以下命令,会在项目 <font color="#DC143C">\Hexo\source\_posts</font> 中生成 <font color="#DC143C">文章标题.md</font> 文件,文章标题根据需要命名<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo n &quot;文章标题&quot;</span><br></pre></td></tr></table></figure></p><p>也可以直接在 <font color="#DC143C">\Hexo\source\_posts</font> 目录下右键鼠标新建文本文档,改后缀为 <font color="#DC143C">.md</font> 即可,这种方法比较方便</p><p>二、用编辑器编写文章</p><font color="#DC143C">md</font> 全称 Markdown, Markdown 是 2004 年由 John Gruberis 设计和开发的纯文本格式的语法,非常的简单实用,常用的标记符号屈指可数,几分钟即可学会, <font color="#DC143C">.md</font> 文件可以使用支持 Markdown 语法的编辑器编辑,然后将写好的文章(.md文件)保存到 <font color="#DC143C">\Hexo\source\_posts</font> 文件夹下即可<br><br>推荐 Windows 上使用 <font color="#DC143C">MarkdownPad2</font> 或者 <font color="#DC143C">小书匠</font> 编辑器,macOS 上使用 <font color="#DC143C">Mou</font> 编辑器,Linux 上使用 <font color="#DC143C">Remarkable</font> 编辑器,Web 端上使用<font color="#DC143C"> 简书</font> ,另外可以参考我的另一篇文章:<a href="https://itrhx.com/2018/08/29/Markdown-Editor/">《主流 Markdown 编辑器推荐》</a><br>当我们用编辑器写好文章后,可以使用以下命令将其推送到服务器上<br><figure class="highlight plain"><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">$ hexo g</span><br><span class="line">$ hexo d</span><br></pre></td></tr></table></figure><br><br>或者将两个命令合二为一输入以下命令:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo d -g</span><br></pre></td></tr></table></figure><br><br>现在访问你的博客就可以看见写好的文章啦!<br>参考资料:<a href="https://blog.csdn.net/jinhui157/article/details/73872795" target="_blank" rel="noopener">《10款流行的Markdown编辑器》</a> (By xiaoxiao_engineer)<br>     <a href="https://www.jianshu.com/p/q81RER/" target="_blank" rel="noopener">《献给写作者的 Markdown 新手指南》</a> (By 简书)<br>     <a href="https://sspai.com/post/25137" target="_blank" rel="noopener">《认识与入门 Markdown》</a> (By Te_Lee)<br>     <a href="http://ibruce.info/2013/11/26/markdown/" target="_blank" rel="noopener">《markdown简明语法》</a> (By 不如)<br>     <a href="https://www.jianshu.com/p/191d1e21f7ed" target="_blank" rel="noopener">《markdown基本语法》</a> (By 高鸿祥)<br>     <a href="http://www.liuhaihua.cn/archives/143443.html" target="_blank" rel="noopener">《Markdown 公式指导手册》</a> (By Harries)<br><br><br># <font color="#FF000">– 如何为博客更换自己喜欢的主题</font><p>博客也搭建好了,文章也会写了,但是!!!默认的主题并不喜欢怎么办?现在,我们就来为自己的博客更换自己喜欢的主题</p><p><a href="https://hexo.io/themes/" target="_blank" rel="noopener">点击此处</a>进入 Hexo 官网的主题专栏,我们可以看见有许多的主题供我们选择<br><img src="https://i.loli.net/2019/03/25/5c98f8025c37c.png" alt=""></p><p>我们要做的就是把主题克隆过来,在此我们以主题 <font color="#DC143C">Aero-Dual</font> 为例,点进去我们就可以看见该主题作者的博客,鼠标滑到底,我们可以看见 <font color="#DC143C">Theme By Levblanc</font> 的字样(其他主题类似),点击作者 <font color="#DC143C">Levblanc</font> ,页面就会跳转到该主题所有的相关文件在 Github 上的地址,复制该地址<br><img src="https://i.loli.net/2019/03/25/5c98f823f1275.png" alt=""><br><img src="https://i.loli.net/2019/03/25/5c98f8414cec6.png" alt=""><br><img src="https://i.loli.net/2019/03/25/5c98f85dbdf23.png" alt=""></p><p>再打开 <font color="#DC143C">Hexo</font> 文件夹下的 <font color="#DC143C">themes</font> 目录(如:<font color="#DC143C">E:\TRHX_Blog\Hexo\themes</font>),右键 <font color="#DC143C">Git Bash Here</font>,输入以下命令:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ git clone 此处填写你刚才复制的主题地址</span><br></pre></td></tr></table></figure></p><p>比如要安装 <font color="#DC143C">Aero-Dual</font> 主题,则输入命令:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ git clone https://github.com/levblanc/hexo-theme-aero-dual</span><br></pre></td></tr></table></figure></p><p>等待下载完成后即可在 <font color="#DC143C">themes</font> 目录下生成 <font color="#DC143C">hexo-theme-aero-dual</font> 文件夹,然后打开 <font color="#DC143C">Hexo</font> 文件夹下的配置文件 <font color="#DC143C">_config.yml</font> ,找到关键字 <font color="#DC143C">theme</font>,修改参数为:<font color="#DC143C">theme:hexo-theme-aero-dual</font> (其他主题修改成相应名称即可),再次注意冒号后面有一个空格!<br><img src="https://i.loli.net/2019/03/25/5c98f87c0a7e9.png" alt=""></p><p>返回 <font color="#DC143C">Hexo</font> 目录,右键 <font color="#DC143C">Git Bash Here</font> ,输入以下命令开始部署主题:<br><figure class="highlight plain"><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">$ hexo g   </span><br><span class="line">$ hexo s</span><br></pre></td></tr></table></figure></p><p>此时打开浏览器,访问 <a href="http://localhost:4000/" target="_blank" rel="noopener">http://localhost:4000/</a>  就可看见我们的主题已经更换了,如果感觉效果满意,我们就可以把它部署到Github上了</p><p>打开 <font color="#DC143C">Hexo</font> 文件夹,右键 <font color="#DC143C">Git Bash Here</font> ,输入以下命令:<br><figure class="highlight plain"><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">$ hexo clean  </span><br><span class="line">//该命令的作用是清除缓存,若不输入此命令,服务器有可能更新不了主题</span><br><span class="line">$ hexo g -d</span><br></pre></td></tr></table></figure></p><p>此时访问自己的博客即可看见更换后的主题,但我们仍然需要对主题的相关配置进行修改,比如网站标题,图标等等,Hexo 中有两份主要的配置文件,名称都是  <font color="#DC143C">_config.yml</font> ,它们均是用于站点配置使用的。其中,一份位于站点根目录下(比如我的:<font color="#DC143C">E:\TRHX_Blog\Hexo\_config.yml</font>),主要包含 Hexo 本身整站的配置;另一份位于主题目录下(比如我的:<font color="#DC143C">E:\TRHX_Blog\Hexo\themes\hexo-theme-aero-dual\_config.yml</font>),这份配置由主题作者提供,主要用于配置主题相关的选项,一般  <font color="#DC143C">_config.yml</font>  文件里都有相关注释,按需修改即可</p><p>参考资料:<a href="https://www.zhihu.com/question/24422335" target="_blank" rel="noopener">《有哪些好看的 Hexo 主题?》</a> (知乎)<br>     <a href="https://hexo.io/zh-cn/docs/configuration.html" target="_blank" rel="noopener">《Hexo | 配置》</a> (Hexo官方文档)<br>     <a href="https://segmentfault.com/a/1190000002632530" target="_blank" rel="noopener">《hexo常用命令笔记》</a> (By 小弟调调)</p><h1 id="–-为你的-Hexo-博客配置个性域名"><a href="#–-为你的-Hexo-博客配置个性域名" class="headerlink" title="– 为你的 Hexo 博客配置个性域名"></a><font color="#FF000">– 为你的 Hexo 博客配置个性域名</font></h1><p>本人在配置域名的时候问题百出,百度的各种方法都不管用,打开网站总是 404,可能是我太笨了  o(╥﹏╥)o ,不过好在后来终于解决了这个问题</p><p>首先我们要购买域名,<a href="https://www.aliyun.com" target="_blank" rel="noopener">阿里云</a>,<a href="https://cloud.tencent.com" target="_blank" rel="noopener">腾讯云</a>都可以,也不贵,一年几十块钱,最便宜几块钱也能买到,以阿里云为例,我购买的域名是 <a href="https://itrhx.com">itrhx.com</a>,购买过程就不赘述了,选择阿里云的解析平台,来到阿里云的管理控制台,点击进入域名解析列表或者直接点击域名后面的解析<br><img src="https://i.loli.net/2019/03/25/5c98f8a1ab8b8.png" alt=""></p><p>方法一:点击添加记录,需要添加两个记录,两个记录类型都是 <font color="#DC143C">CNAME</font> ,第一个主机记录为 <font color="#DC143C">@</font> ,第二个主机记录为 <font color="#DC143C">www</font>,记录值都是填你自己的博客地址(比如我的是:<font color="#DC143C"><a href="http://trhx.github.io" target="_blank" rel="noopener">trhx.github.io</a></font>),保存之后域名解析就完成了!<br><img src="https://i.loli.net/2019/03/25/5c98f8bf3e24d.png" alt=""><br>方法二:两个记录类型为 <font color="#DC143C">A</font> ,第一个主机记录为 <font color="#DC143C">@</font> ,第二个主机记录为 <font color="#DC143C">www</font>,记录值都为博客的 <font color="#DC143C">IP</font> 地址,<font color="#DC143C">IP</font> 地址可以 <font color="#DC143C">cmd</font> 中输入 <font color="#DC143C">ping 你的博客地址</font> 获得(比如我的:<font color="#DC143C">ping trhx.github.io</font>),保存之后域名解析就完成了!<br><img src="https://i.loli.net/2019/03/26/5c9903ca0388c.png" alt=""><br>有关解析记录类型的区别可以参考<a href="https://blog.csdn.net/it_man/article/details/9017307" target="_blank" rel="noopener">《域名解析中A记录、CNAME、MX记录、NS记录的区别和联系》</a> </p><p>为了使 GitHub 接收我们的域名,还需要在博客的根目录下添加一个名为 <font color="#DC143C">CNAME</font> 的文件(<font color="#DC143C">注意不要加.txt,没有任何后缀名!</font>),这个文件放到 <font color="#DC143C">Hexo</font> 文件夹的 <font color="#DC143C">source</font> 里面,(比如我的是:<font color="#DC143C">E:\TRHX_Blog\Hexo\source</font>),文件里面填写你的域名(<font color="#DC143C">加不加www都行</font>),比如要填写我的域名,文件里面就写:<font color="#DC143C"><a href="http://www.itrhx.com" target="_blank" rel="noopener">www.itrhx.com</a></font> 或者 <font color="#DC143C">itrhx.com</font>,经过以上操作,别人就可以通过 <a href="http://www.itrhx.com" target="_blank" rel="noopener">www.itrhx.com</a> 、<a href="https://itrhx.com">itrhx.com</a> 、<a href="https://trhx.github.io" target="_blank" rel="noopener">trhx.github.io</a> 三个当中任意一个访问我的博客了!你的也一样!</p><p>有关加不加www的问题有以下区别:</p><blockquote><p>如果你填写的是没有www的,比如 itrhx.com,那么无论是访问 <a href="https://www.itrhx.com" target="_blank" rel="noopener">https://www.itrhx.com</a> 还是 <a href="https://itrhx.com">https://itrhx.com</a> ,都会自动跳转到 <a href="https://itrhx.com">https://itrhx.com</a></p></blockquote><blockquote><p>如果你填写的是带www的,比如 <a href="http://www.itrhx.com" target="_blank" rel="noopener">www.itrhx.com</a> ,那么无论是访问 <a href="https://www.itrhx.com" target="_blank" rel="noopener">https://www.itrhx.com</a> 还是 <a href="https://itrhx.com">https://itrhx.com</a> ,都会自动跳转到 <a href="http://www.itrhx.com" target="_blank" rel="noopener">http://www.itrhx.com</a></p></blockquote><p><img src="https://i.loli.net/2019/03/12/5c87b2837a5e3.png" alt=""></p><p>如果你在其他平台购买域名,或者选择 <a href="https://www.dnspod.cn" target="_blank" rel="noopener">DNSPod</a> 等其他域名解析,操作方法大同小异,遇到问题可自行百度解决!</p><p>参考资料:<a href="https://zhuanlan.zhihu.com/p/27349039" target="_blank" rel="noopener">《推荐几家域名注册服务商》</a>  (By Jelly Bool)<br>     <a href="http://www.chinaz.com/web/2015/0122/380042.shtml" target="_blank" rel="noopener">《盘点十大免费DNS域名解析服务:稳定、可靠》</a></p><h1 id="–-结语"><a href="#–-结语" class="headerlink" title="– 结语"></a><font color="#FF000">– 结语</font></h1><p>一顿操作下来虽然有点儿累,但看见拥有了自己的博客还是非常有成就感的,人生就是需要折腾,那么现在就开始你的创作之旅吧!文章的不断积累,你会从中受益很多的!另外,这是一篇小白写的适用于小白的博客搭建教程,比较详细,有这方面基础的可以百度有简略一点儿的教程,文中如有错误还请大佬指出改正!文中涉及参考资料如有侵权请联系我删除!</p>]]></content>
T
TRHX 已提交
474 475 476
    
    <summary type="html">
    
T
TRHX 已提交
477
      &lt;p&gt;&lt;img src=&quot;https://i.loli.net/2019/03/25/5c98f4517de37.jpg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
T
TRHX 已提交
478 479 480
    
    </summary>
    
T
TRHX 已提交
481
      <category term="实用教程" scheme="https://itrhx.com/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
T
TRHX 已提交
482 483
    
    
T
TRHX 已提交
484 485
      <category term="Hexo" scheme="https://itrhx.com/tags/Hexo/"/>
    
T
TRHX 已提交
486 487
      <category term="Github Pages" scheme="https://itrhx.com/tags/Github-Pages/"/>
    
T
TRHX 已提交
488 489 490
  </entry>
  
</feed>