atom.xml 505.9 KB
Newer Older
T
TRHX 已提交
1 2 3 4 5 6 7 8 9 10 11 12
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>TRHX&#39;s Blog - Live for code!</title>
  
  <subtitle>路漫漫其修远兮 吾将上下而求索</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://trhx.top/"/>
  <updated>2018-11-15T16:48:05.385Z</updated>
  <id>https://trhx.top/</id>
  
  <author>
T
TRHX 已提交
13
    <name>TRHX&#39;BLOG</name>
T
TRHX 已提交
14 15 16 17 18 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Python3 自学笔记 C09</title>
    <link href="https://trhx.top/2018/11/16/Python3%20%E8%87%AA%E5%AD%A6%E7%AC%94%E8%AE%B0%20C09/"/>
    <id>https://trhx.top/2018/11/16/Python3 自学笔记 C09/</id>
    <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>
    
      <category term="Python" scheme="https://trhx.top/categories/Python/"/>
    
    
      <category term="文件" scheme="https://trhx.top/tags/%E6%96%87%E4%BB%B6/"/>
    
      <category term="异常" scheme="https://trhx.top/tags/%E5%BC%82%E5%B8%B8/"/>
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C08</title>
    <link href="https://trhx.top/2018/11/10/Python3%20%E8%87%AA%E5%AD%A6%E7%AC%94%E8%AE%B0%20C08/"/>
    <id>https://trhx.top/2018/11/10/Python3 自学笔记 C08/</id>
    <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>
    
      <category term="Python" scheme="https://trhx.top/categories/Python/"/>
    
    
      <category term="类" scheme="https://trhx.top/tags/%E7%B1%BB/"/>
    
      <category term="继承" scheme="https://trhx.top/tags/%E7%BB%A7%E6%89%BF/"/>
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C07</title>
    <link href="https://trhx.top/2018/11/03/Python3%20%E8%87%AA%E5%AD%A6%E7%AC%94%E8%AE%B0%20C07/"/>
    <id>https://trhx.top/2018/11/03/Python3 自学笔记 C07/</id>
    <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>
    
      <category term="Python" scheme="https://trhx.top/categories/Python/"/>
    
    
      <category term="函数" scheme="https://trhx.top/tags/%E5%87%BD%E6%95%B0/"/>
    
      <category term="模块" scheme="https://trhx.top/tags/%E6%A8%A1%E5%9D%97/"/>
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C06</title>
    <link href="https://trhx.top/2018/10/30/Python3%20%E8%87%AA%E5%AD%A6%E7%AC%94%E8%AE%B0%20C06/"/>
    <id>https://trhx.top/2018/10/30/Python3 自学笔记 C06/</id>
    <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>
    
      <category term="Python" scheme="https://trhx.top/categories/Python/"/>
    
    
      <category term="input()函数" scheme="https://trhx.top/tags/input-%E5%87%BD%E6%95%B0/"/>
    
      <category term="while循环" scheme="https://trhx.top/tags/while%E5%BE%AA%E7%8E%AF/"/>
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C05</title>
    <link href="https://trhx.top/2018/10/27/Python3%20%E8%87%AA%E5%AD%A6%E7%AC%94%E8%AE%B0%20C05/"/>
    <id>https://trhx.top/2018/10/27/Python3 自学笔记 C05/</id>
    <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>
    
      <category term="Python" scheme="https://trhx.top/categories/Python/"/>
    
    
      <category term="字典" scheme="https://trhx.top/tags/%E5%AD%97%E5%85%B8/"/>
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C04</title>
    <link href="https://trhx.top/2018/10/23/Python3%20%E8%87%AA%E5%AD%A6%E7%AC%94%E8%AE%B0%20C04/"/>
    <id>https://trhx.top/2018/10/23/Python3 自学笔记 C04/</id>
    <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>
    
      <category term="Python" scheme="https://trhx.top/categories/Python/"/>
    
    
      <category term="if语句" scheme="https://trhx.top/tags/if%E8%AF%AD%E5%8F%A5/"/>
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C03</title>
    <link href="https://trhx.top/2018/10/11/Python3%20%E8%87%AA%E5%AD%A6%E7%AC%94%E8%AE%B0%20C03/"/>
    <id>https://trhx.top/2018/10/11/Python3 自学笔记 C03/</id>
    <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>
    
      <category term="Python" scheme="https://trhx.top/categories/Python/"/>
    
    
      <category term="操作列表" scheme="https://trhx.top/tags/%E6%93%8D%E4%BD%9C%E5%88%97%E8%A1%A8/"/>
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C02</title>
    <link href="https://trhx.top/2018/09/15/Python3%20%E8%87%AA%E5%AD%A6%E7%AC%94%E8%AE%B0%20C02/"/>
    <id>https://trhx.top/2018/09/15/Python3 自学笔记 C02/</id>
    <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>
    
      <category term="Python" scheme="https://trhx.top/categories/Python/"/>
    
    
      <category term="列表" scheme="https://trhx.top/tags/%E5%88%97%E8%A1%A8/"/>
    
  </entry>
  
  <entry>
    <title>Python3 自学笔记 C01</title>
    <link href="https://trhx.top/2018/09/10/Python3%20%E8%87%AA%E5%AD%A6%E7%AC%94%E8%AE%B0%20C01/"/>
    <id>https://trhx.top/2018/09/10/Python3 自学笔记 C01/</id>
    <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>
    
      <category term="Python" scheme="https://trhx.top/categories/Python/"/>
    
    
      <category term="数据类型" scheme="https://trhx.top/tags/%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/"/>
    
      <category term="变量" scheme="https://trhx.top/tags/%E5%8F%98%E9%87%8F/"/>
    
  </entry>
  
  <entry>
    <title>VMware Pro 14 安装 Ubuntu 18.04 详细教程</title>
    <link href="https://trhx.top/2018/09/09/VMware%20Pro%2014%20%E5%AE%89%E8%A3%85%20Ubuntu%2018.04%20%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B/"/>
    <id>https://trhx.top/2018/09/09/VMware Pro 14 安装 Ubuntu 18.04 详细教程/</id>
    <published>2018-09-09T13:14:29.532Z</published>
    <updated>2018-09-09T13:23:38.708Z</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><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.imgur.com/zJA6ChL.png" alt=""></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.imgur.com/d95LvnF.png" alt=""><br><img src="https://i.imgur.com/dBnJ3wk.png" alt=""></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.imgur.com/dJ5Kdjc.png" alt=""></p><p>在新建虚拟机向导中选择自定义(高级)<br><img src="https://i.imgur.com/bJRtsq5.png" alt=""></p><p>默认直接下一步,直到出现下图,再选择稍后安装操作系统<br><img src="https://i.imgur.com/dtFaCNO.png" alt=""></p><p>选择客户机操作系统为 Linux ,如果你电脑是32位就选择 Ubuntu 版本,64位就选择 Ubuntu 64 位版本<br><img src="https://i.imgur.com/C99dRXE.png" alt=""></p><p>更改虚拟机名称及存放位置<br><img src="https://i.imgur.com/4K3xJCg.png" alt=""></p><p>为虚拟机指定处理器数量,默认即可<br><img src="https://i.imgur.com/HvpWMli.png" alt=""></p><p>为虚拟机分配内存,太大了可能会导致卡顿,太小了也不好,推荐内存大小即可<br><img src="https://i.imgur.com/GYfJEWf.png" alt=""></p><p>以下均选择默认即可<br><img src="https://i.imgur.com/yJbavZ4.png" alt=""><br><img src="https://i.imgur.com/LqMRfT7.png" alt=""><br><img src="https://i.imgur.com/GmnD8d8.png" alt=""><br><img src="https://i.imgur.com/EXIohkd.png" alt=""></p><p>选择创建新虚拟磁盘<br><img src="https://i.imgur.com/yunujA7.png" alt=""></p><p>选择将虚拟磁盘储存为单个文件<br><img src="https://i.imgur.com/vo4ySkv.png" alt=""></p><p>默认下一步<br><img src="https://i.imgur.com/K2S0ilB.png" alt=""></p><p>点击完成<br><img src="https://i.imgur.com/nNCyWpF.png" alt=""></p><p>此时我们就可以在虚拟机左侧“我的计算机”下面看到刚刚创建的虚拟机 Ubuntu 64 位,单击 Ubuntu 64 位,选择“编辑虚拟机设置”, 再选择“CD/DVD(SATA)”,选择“使用ISO映像文件”,点击“浏览”,找到先前我们下载好的 Ubuntu 64 位镜像文件,点击“确定”<br><img src="https://i.imgur.com/DgaSZzK.png" alt=""><br><img src="https://i.imgur.com/P9DF9ac.png" alt=""></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.imgur.com/yQlKPbW.png" alt=""></p><p>来到欢迎界面,选择好语言,点击“安装 Ubuntu”<br><img src="https://i.imgur.com/KQKy2uB.png" alt=""></p><p>选择键盘布局为“汉语”<br><img src="https://i.imgur.com/41TwsWC.png" alt=""></p><p>更新和其他软件默认选择即可<br><img src="https://i.imgur.com/hbiiq7B.png" alt=""></p><p>安装类型选择“清除整个磁盘并安装 Ubuntu”,PS: 因为我们是新安装的系统,且在虚拟机中,所以可以选择清除整个磁盘,这个操作不会清除你原来电脑里面的东西<br><img src="https://i.imgur.com/9gECrVN.png" alt=""><br><img src="https://i.imgur.com/g4u752f.png" alt=""></p><p>地区随便,在中国就行,默认即可<br><img src="https://i.imgur.com/lldWP1b.png" alt=""></p><p>之后设置计算机名,密码<br><img src="https://i.imgur.com/aMxZb3p.png" alt=""></p><p>点击继续稍等一会就安装完成啦<br><img src="https://i.imgur.com/gTMUSKo.png" alt=""></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.imgur.com/XAzzUhM.png" alt=""></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>
    
    <summary type="html">
    
      VMware Pro 14 安装 Ubuntu 18.04 的详细教程以及一些在安装过程中可能遇到的问题
    
    </summary>
    
      <category term="实用教程" scheme="https://trhx.top/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
      <category term="VMware" scheme="https://trhx.top/tags/VMware/"/>
    
      <category term="Ubuntu" scheme="https://trhx.top/tags/Ubuntu/"/>
    
  </entry>
  
  <entry>
    <title>主流 Markdown 编辑器推荐</title>
    <link href="https://trhx.top/2018/08/29/%E4%B8%BB%E6%B5%81%20Markdown%20%E7%BC%96%E8%BE%91%E5%99%A8%E6%8E%A8%E8%8D%90/"/>
    <id>https://trhx.top/2018/08/29/主流 Markdown 编辑器推荐/</id>
    <published>2018-08-29T15:02:46.857Z</published>
    <updated>2018-08-30T15:05:11.494Z</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><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.imgur.com/n5pmp5G.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.imgur.com/WUtiGok.png" alt="BookPad"></p><p><img src="https://i.imgur.com/Kcb90ue.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.imgur.com/prXhTeP.png" alt="小书匠"></p><p><img src="https://i.imgur.com/lKwKWo7.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.imgur.com/RXJEwo1.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.imgur.com/ufiUGdn.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.imgur.com/Xzi5CRJ.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.imgur.com/2lNv6Px.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.imgur.com/paxg5og.png" alt="Haroopad"></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.imgur.com/EZoRE4k.png" alt="Typora"></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.imgur.com/S30XQeT.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.imgur.com/ZCfwYYO.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.imgur.com/nyC04vz.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.imgur.com/jHNCTOO.png" alt="FarBox"></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.imgur.com/kCoF0Vw.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.imgur.com/dSL15No.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.imgur.com/82rKPJS.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.imgur.com/88WhhUY.jpg" alt="Byword"></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.imgur.com/IZ2W5X8.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.imgur.com/fS52srD.png" alt="马克飞象"></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.imgur.com/e47bDQA.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.imgur.com/Dib6V88.png" alt="Dillinger"></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.imgur.com/1DqvTX5.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>
    
    <summary type="html">
    
      工欲善其事,必先利其器,选择一个合适自己的 Markdown 编辑器至关重要
    
    </summary>
    
      <category term="实用教程" scheme="https://trhx.top/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
      <category term="Markdown" scheme="https://trhx.top/tags/Markdown/"/>
    
      <category term="编辑器" scheme="https://trhx.top/tags/%E7%BC%96%E8%BE%91%E5%99%A8/"/>
    
  </entry>
  
  <entry>
    <title>Hexo 博客主题个性化</title>
    <link href="https://trhx.top/2018/08/27/Hexo%20%E5%8D%9A%E5%AE%A2%E4%B8%BB%E9%A2%98%E4%B8%AA%E6%80%A7%E5%8C%96/"/>
    <id>https://trhx.top/2018/08/27/Hexo 博客主题个性化/</id>
    <published>2018-08-27T13:25:24.452Z</published>
T
TRHX 已提交
280
    <updated>2018-12-31T09:34:44.845Z</updated>
T
TRHX 已提交
281
    
T
TRHX 已提交
282
    <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" size="4"><br><strong>本文将讲述一些博客主题的美化、实用功能的添加,不同主题可能方法有些不同(本文以作者 luuman 的 <a href="https://github.com/luuman/hexo-theme-spfk" target="_blank" rel="noopener">spfk</a> 主题为例)</strong><br></font><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.imgur.com/mNjUFeP.png" alt="">  </p><p>注册完毕之后,登录,进入安装页面,选择 City 免费版安装,安装之后你会得到一段代码<br><img src="https://i.imgur.com/I3DXQMC.png" alt=""><br><img src="https://i.imgur.com/GUROoY0.png" alt=""><br><img src="https://i.imgur.com/sCi7KKc.png" alt="">  </p><p>我们打开主题文件下的 <font color="#FF0000">_config.yml</font> 文件,添加如下代码:<br><img src="https://i.imgur.com/Lwfd9pZ.png" alt="">  </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.imgur.com/OgKwuQY.png" alt="">  </p><p>完成以上操作之后,我们就可以使用来必力评论系统了<br><img src="https://i.imgur.com/9oCg3Gx.png" alt="">  </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.imgur.com/LI7iFxx.png" alt=""></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.imgur.com/ss300YU.png" alt=""></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.imgur.com/fNVHjBi.png" alt="添加鼠标点击显示字体效果"></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.imgur.com/vWhZElo.png" alt=""></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.imgur.com/gqs8NKL.png" alt=""></p><p><img src="https://i.imgur.com/om8pIL9.png" alt=""></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>然后将此代码放到你想要放的地方,比如放在博客的左侧,则打开 <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.imgur.com/7Cv1iFZ.png" alt=""></p><p>最后效果如下:<br><img src="https://i.imgur.com/JPh5epQ.png" alt=""></p><h1 id="–-添加网站运行时间"><a href="#–-添加网站运行时间" class="headerlink" title=" – 添加网站运行时间 "></a><font color="#FF0000"> – 添加网站运行时间 </font></h1><p>一个比较好的小功能,可以看见自己的博客运行多久了,时间一天天的增加,成就感也会一天天增加的<br>在 \themes\hexo-theme-spfk\layout\_partial\footer.ejs 文件下添加以下代码:</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.imgur.com/pDR4xYb.png" alt=""></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.imgur.com/3PNwlKW.png" alt=""></p><p>接着点击代码获取,复制该代码<br><img src="https://i.imgur.com/s2nPQnM.png" alt=""></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.imgur.com/5kSpJCG.png" alt=""></p><p>修改主题文件夹下的 <font color="#FF0000">_config.yml</font> 文件,将你的key(图中涂掉部分)填写进去:<br><img src="https://i.imgur.com/3LFy0LV.png" alt=""></p><p>所有操作完成后可以在百度统计管理页面检查代码是否安装成功,如果代码安装正确,一般20分钟后,可以查看网站分析数据<br><img src="https://i.imgur.com/bLOwfen.png" alt=""></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.imgur.com/qSu48Xl.png" alt=""><br><img src="https://i.imgur.com/XFE8dTM.png" alt=""></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.imgur.com/VTzCNSP.png" alt="动态线条背景"></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.imgur.com/1ZqCbgo.png" alt=""></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.imgur.com/zWEpK41.png" alt="样式一"><br><img src="https://i.imgur.com/3hO2ncJ.png" alt="样式二"></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><hr><h1 id="未完待续……"><a href="#未完待续……" class="headerlink" title="未完待续……"></a><center><font color="#FF0000">未完待续……</font></center></h1><hr>]]></content>
T
TRHX 已提交
283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371
    
    <summary type="html">
    
      Hexo 博客主题的美化,添加一些实用功能,定制你的专属博客【持续更新】
    
    </summary>
    
      <category term="实用教程" scheme="https://trhx.top/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
      <category term="主题个性化" scheme="https://trhx.top/tags/%E4%B8%BB%E9%A2%98%E4%B8%AA%E6%80%A7%E5%8C%96/"/>
    
      <category term="Hexo" scheme="https://trhx.top/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>Markdown 语法&amp;技巧总结</title>
    <link href="https://trhx.top/2018/08/25/Markdown%20%E8%AF%AD%E6%B3%95&amp;%E6%8A%80%E5%B7%A7%E6%80%BB%E7%BB%93/"/>
    <id>https://trhx.top/2018/08/25/Markdown 语法&amp;技巧总结/</id>
    <published>2018-08-25T09:57:16.879Z</published>
    <updated>2018-10-19T14:44:25.481Z</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><font color="#4094C7" size="4"><br><strong>在写博客的时候,我们不希望都是千篇一律的没有色彩,多了解一些 Markdown 语法技巧有利于丰富我们的博客,看起来更有 feel !</strong><br></font><hr><h1 id="–-插入图片"><a href="#–-插入图片" class="headerlink" title=" – 插入图片 "></a><font color="#FF0000"> – 插入图片 </font></h1><p><img src="https://i.imgur.com/UyEXrBi.jpg" alt="车"></p><p>如果你使用 MarkdownPad 的话就比较方便,可以直接选择插入本地图片或者是网络图片,实质是通过以下代码实现的,小括号里面就是你的图片地址,中括号里面是图片的替代文字,比如上面的图片代码如下:</p><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.imgur.com/UyEXrBi.jpg</span>)</span><br></pre></td></tr></table></figure><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代码</p><p><img src="https://i.imgur.com/6E1kQzO.png" alt=""></p><p><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.imgur.com/YOAVLsm.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">"1040"</span>  <span class="attr">height</span>=<span class="string">"700"</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="1040" height="700" src="https://v.qq.com/txp/iframe/player.html?vid=x0643zvgtf7" allowfullscreen="true"></iframe><hr><center><br><font color="#FF0000"><br><br># 未完待续…… #<br><br></font><br></center><hr>]]></content>
    
    <summary type="html">
    
      在写博客的时候遇到的 Markdown 各种方法技巧或者语法记录下来,方便查阅【持续更新】
    
    </summary>
    
      <category term="实用教程" scheme="https://trhx.top/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
      <category term="Markdown" scheme="https://trhx.top/tags/Markdown/"/>
    
      <category term="技巧" scheme="https://trhx.top/tags/%E6%8A%80%E5%B7%A7/"/>
    
  </entry>
  
  <entry>
    <title>如何使用 Github Pages 和 Hexo 搭建自己的独立博客</title>
    <link href="https://trhx.top/2018/08/15/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Github%20Pages%E5%92%8CHexo%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%8B%AC%E7%AB%8B%E5%8D%9A%E5%AE%A2/"/>
    <id>https://trhx.top/2018/08/15/如何使用Github Pages和Hexo搭建自己独立博客/</id>
    <published>2018-08-15T13:34:58.325Z</published>
    <updated>2018-08-29T15:17:51.644Z</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><iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="http://music.163.com/outchain/player?type=2&id=534066497&auto=0&height=66"><br></iframe></center><h1 id="–-前言"><a href="#–-前言" class="headerlink" title="– 前言"></a><font color="#FF000">– 前言</font></h1><p>首先感谢您能访问我的博客:<a href="http://trhx.github.io" target="_blank" rel="noopener">TRHX’Blog</a> <br></p><p>这是一篇有关如何使用 <font color="#DC143C">Github Pages</font> 和 <font color="#DC143C">Hexo</font> 搭建属于自己独立博客的详尽教程,本人是软件工程专业本科生,目前只学习了C和C++编程语言,对网站开发的有关知识几乎为零,这也是我搭建好自己的博客之后写的第一篇博客,刚开始搭建博客的时候自己也是网上各种百度,由于自己属于<font color="#DC143C">小白</font>那种,历经了千辛万苦才弄好,所以借这个机会写一篇小白真正能看懂的博客搭建教程,教你一步一步走向成功的彼岸! <br></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>访问官网,按需下载相应版本,默认安装可以了</p><p><img src="https://i.imgur.com/l9qbq4X.png" alt=""></p><p><br><br>注:本人在安装过程中出现了Warning 1909,无法创建快捷方式,这种情况很少出现,如果在安装过程中也有这种情况请参考百度文库(win10系统实测可行):<a href="https://wenku.baidu.com/view/4ad59110964bcf84b9d57ba5.html" target="_blank" rel="noopener">《Win7安装程序警告1909无法创建快捷方式》</a><br><br></p><p><img src="https://i.imgur.com/qzNCltv.png" alt=""></p><p><br></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><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><p><br></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>  </p><pre><code>$ git --version  $ node -v  $ npm -v   </code></pre><p><img src="https://i.imgur.com/MrqA2oy.png" alt=""></p><p><img src="https://i.imgur.com/EdKdq8c.png" alt=""></p><p><br></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,如图所示即为安装成功  </p><pre><code>$ npm install hexo-cli -g  $ npm install hexo-deployer-git --save  </code></pre><p><img src="https://i.imgur.com/D4jX96g.png" alt=""></p><p><br></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>,输入以下命令,如图所示则安装成功</p><pre><code>$ hexo init</code></pre><p><img src="https://i.imgur.com/RL60g7o.png" alt=""></p><p><br><br>Hexo 安装完成后,将会在指定文件夹中新建所需要的文件,Hexo 文件夹下的目录如下:</p><p><br><br><img src="https://i.imgur.com/x7h42wm.png" alt=""></p><p><br></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> 查看效果  </p><pre><code>$ hexo generate  $ hexo server  </code></pre><p>显示以下信息说明操作成功:</p><pre><code>INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.</code></pre><p>登录 <a href="http://localhost:4000/" target="_blank" rel="noopener">http://localhost:4000/</a> 查看效果:</p><p><img src="https://i.imgur.com/RnrEl8h.png" alt=""></p><p><br></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上<br></p><p>一、注册 Github 账户:<a href="https://github.com" target="_blank" rel="noopener">点击此处</a>访问 Github 官网,点击 Sign Up 注册账户<br></p><p>二、创建项目代码库:点击 <font color="#DC143C">New repository</font> 开始创建,步骤及注意事项见图:</p><p><img src="https://i.imgur.com/0FqXlSu.png" alt=""></p><p><br><br>三、配置 <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> 输入以下命令:  </p><pre><code>$ ssh-keygen -t rsa -C &quot;your email@example.com&quot; //引号里面填写你的邮箱地址,比如我的是tanrenhou@126.com</code></pre><p>之后会出现:  </p><pre><code>Generating public/private rsa key pair.  Enter file in which to save the key (/c/Users/you/.ssh/id_rsa):  //到这里可以直接回车将密钥按默认文件进行存储</code></pre><p>然后会出现:  </p><pre><code>Enter passphrase (empty for no passphrase):  //这里是要你输入密码,其实不需要输什么密码,直接回车就行 Enter same passphrase again:  </code></pre><p>接下来屏幕会显示:  </p><pre><code>Your identification has been saved in /c/Users/you/.ssh/id_rsa.  Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.  The key fingerprint is:  这里是各种字母数字组成的字符串,结尾是你的邮箱  The key&apos;s randomart image is:  这里也是各种字母数字符号组成的字符串  </code></pre><p>运行以下命令,将公钥的内容复制到系统粘贴板上</p><pre><code>$ clip &lt; ~/.ssh/id_rsa.pub</code></pre><p>四、在 GitHub 账户中添加你的公钥</p><p>1.登陆 GitHub,进入 <font color="#DC143C">Settings</font>:</p><p><img src="https://i.imgur.com/jzyEME2.png" alt=""></p><p><br><br>2.点击 <font color="#DC143C">SSH and GPG Keys</font>:</p><p><br><br><img src="https://i.imgur.com/4PAjGms.png" alt=""></p><p><br><br>3.选择 <font color="#DC143C">New SSH key</font>:</p><p><br><br><img src="https://i.imgur.com/CYnhV4W.png" alt=""></p><p><br><br>4.粘贴密钥:</p><p><br><br><img src="https://i.imgur.com/vnTjW4z.png" alt=""></p><p><br><br>五、测试</p><p>输入以下命令:<font color="#DC143C">注意:<a href="mailto:git@github.com" target="_blank" rel="noopener">git@github.com</a>不要做任何更改!</font></p><pre><code>$ ssh -T git@github.com</code></pre><p>之后会显示:</p><p><img src="https://i.imgur.com/NLHp4nz.png" alt=""></p><p>输入 <font color="#DC143C">yes</font> 后会显示:</p><p><img src="https://i.imgur.com/UJt5utl.png" alt=""></p><p>此时表示设置正确</p><p>六、配置 Git 个人信息</p><p>Git 会根据用户的名字和邮箱来记录提交,GitHub 也是用这些信息来做权限的处理,输入以下命令进行个人信息的设置,把名称和邮箱替换成你自己的,名字可以不是 GitHub 的昵称,但为了方便记忆,建议与 GitHub  一致</p><pre><code>$ git config --global user.name &quot;此处填你的用户名&quot;  $ git config --global user.email  &quot;此处填你的邮箱&quot;</code></pre><p>到此为止 SSH Key 配置成功,本机已成功连接到 Github</p><p><br></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">your name.github.io</font></p><p><img src="https://i.imgur.com/KWeHGF1.png" alt=""></p><p><br><br>二、鼠标移到 <font color="#DC143C">Clone or download</font> 按钮,选择 <font color="#DC143C">Use SSH</font></p><p><br><br><img src="https://i.imgur.com/nNRZVDQ.png" alt=""></p><p><br><br>三、一键复制地址</p><p><br><br><img src="https://i.imgur.com/ulwSVjM.png" alt=""></p><p><br><br>四、打开你创建的 <font color="#DC143C">Hexo</font> 文件夹(如:<font color="#DC143C">E:\TRHX_Blog\Hexo</font>),右键用记事本(或者Notepad++)打开该文件夹下的 <font color="#DC143C">_config.yml</font> 文件</p><p><br><br><img src="https://i.imgur.com/DtH87DK.png" alt=""></p><p><br><br>五、按下图修改 <font color="#DC143C">_config.yml</font> 文件并保存</p><p><br><br><img src="https://i.imgur.com/7vbeY3N.png" alt=""></p><p><br><br>六、在 <font color="#DC143C">Hexo</font> 文件夹下分别执行以下命令</p><pre><code>$ hexo g  $ hexo d</code></pre><p>或者直接执行</p><pre><code>$ hexo g -d</code></pre><p>执行完之后会让你输入你的 Github 的账号和密码,如果此时报以下错误,说明你的 deployer 没有安装成功</p><pre><code>ERROR Deployer not found: git</code></pre><p>需要执行以下命令再安装一次:</p><pre><code>npm install hexo-deployer-git --save</code></pre><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><p><br></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> 文件,文章标题根据需要命名</p><pre><code>$ hexo n &quot;文章标题&quot;</code></pre><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 语法的编辑器编辑,然后保存文件到 <font color="#DC143C">\Hexo\source\_posts</font> 文件夹下即可<br><br>推荐 Windows 上使用 <font color="#DC143C">MarkdownPad2</font> 编辑器,macOS 上使用 <font color="#DC143C">Mou</font> 编辑器,Linux 上使用 <font color="#DC143C">Remarkable</font>编辑器,Web 端上使用<font color="#DC143C">简书</font> <p>当我们用编辑器写好文章后,可以使用以下命令将其推送到服务器上</p><pre><code>$ hexo g  $ hexo d</code></pre><p>或者将两个命令合二为一输入以下命令:</p><pre><code>$ hexo d -g </code></pre><p>现在访问你的博客就可以看见写好的文章啦!</p><p>参考资料:<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><br></p><h1 id="–-如何为博客更换自己喜欢的主题"><a href="#–-如何为博客更换自己喜欢的主题" class="headerlink" title="– 如何为博客更换自己喜欢的主题"></a><font color="#FF000">– 如何为博客更换自己喜欢的主题</font></h1><p>博客也搭建好了,文章也会写了,但是!!!默认的主题并不喜欢怎么办?现在,我们就来为自己的博客更换自己喜欢的主题</p><p><a href="https://hexo.io/themes/" target="_blank" rel="noopener">点击此处</a>进入 Hexo 官网的主题专栏,我们可以看见有许多的主题供我们选择</p><p><img src="https://i.imgur.com/t3aGEQ2.png" alt=""></p><p><br><br>我们要做的就是把主题克隆过来,在此我们以主题 <font color="#DC143C">Aero-Dual</font> 为例,点进去我们就可以看见该主题作者的博客,鼠标滑到底,我们可以看见 <font color="#DC143C">Theme By Levblanc</font> 的字样(其他主题类似),点击作者 <font color="#DC143C">Levblanc</font> ,页面就会跳转到该主题所有的相关文件在 Github 上的地址,复制该地址</p><p><br><br><img src="https://i.imgur.com/tzpNdzk.png" alt=""></p><p><br><br><img src="https://i.imgur.com/ECHuTS9.png" alt=""></p><p><br><br><img src="https://i.imgur.com/qBFXpOL.png" alt=""></p><p><br><br>再打开 <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>,输入以下命令:</p><pre><code>$ git clone 此处填写你刚才复制的主题地址</code></pre><p>比如要安装 <font color="#DC143C">Aero-Dual</font> 主题,则输入命令:</p><pre><code>$ git clone https://github.com/levblanc/hexo-theme-aero-dual</code></pre><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> (其他主题修改成相应名称即可),再次注意冒号后面有一个空格!</p><p><br><br><img src="https://i.imgur.com/2lUYsjZ.png" alt=""></p><p><br><br>返回 <font color="#DC143C">Hexo</font> 目录,右键 <font color="#DC143C">Git Bash Here</font> ,输入以下命令开始部署主题:</p><pre><code>$ hexo g   $ hexo s</code></pre><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> ,输入以下命令:</p><pre><code>$ hexo clean  //该命令的作用是清除缓存,若不输入此命令,服务器有可能更新不了主题$ hexo g -d</code></pre><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><p><br></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="http://trhx.top">trhx.top</a>,购买过程就不赘述了,选择阿里云的解析平台,来到阿里云的管理控制台,点击进入域名解析列表或者直接点击域名后面的解析</p><p><img src="https://i.imgur.com/WNzFja7.png" alt=""></p><p><br><br>点击添加记录,需要添加两个记录,两个记录类型都是 <font color="#DC143C">CNAME</font> ,记录值都是填你自己的博客地址(比如我的是:<font color="#DC143C"><a href="http://trhx.github.io" target="_blank" rel="noopener">trhx.github.io</a></font>),第一个主机记录为 <font color="#DC143C">@</font> ,第二个主机记录为 <font color="#DC143C">www</font> ,保存之后域名解析就完成了!</p><p>【注:百度大多数方法是这样的:两个记录类型为 <font color="#DC143C">A</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>),但我尝试这种方法并没有成功,目前也不知道具体原因,强调一下,我还是这方面<font color="#DC143C">小白!小白!小白!</font>所以不太懂,欢迎大佬来指点!】</p><p><br><br><img src="https://i.imgur.com/hf7od2h.png" alt=""></p><p><br><br>为了使 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">trhx.top</font>,经过以上操作,别人就可以通过 <a href="http://www.trhx.top" target="_blank" rel="noopener">www.trhx.top</a> 、<a href="http://trhx.top">trhx.top</a> 、<a href="http://trhx.github.io" target="_blank" rel="noopener">trhx.github.io</a> 三个当中任意一个访问我的博客了!你的也一样!</p><p><br><br><img src="https://i.imgur.com/FeUbvsS.png" alt=""></p><p><br><br>如果你在其他平台购买域名,或者选择 <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>
    
    <summary type="html">
    
      这是一篇有关如何使用 Github Pages 和 Hexo 搭建属于自己独立博客的详尽教程!
    
    </summary>
    
      <category term="实用教程" scheme="https://trhx.top/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
      <category term="Hexo" scheme="https://trhx.top/tags/Hexo/"/>
    
      <category term="Github Pages" scheme="https://trhx.top/tags/Github-Pages/"/>
    
  </entry>
  
  <entry>
    <title>Hello World!</title>
    <link href="https://trhx.top/2018/08/10/Hello%20World/"/>
    <id>https://trhx.top/2018/08/10/Hello World/</id>
    <published>2018-08-10T09:38:00.000Z</published>
    <updated>2018-10-27T11:20:27.019Z</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><strong><font color="#FF0000" face="华文楷体" size="6"><br>人类的幸福和欢乐在于奋斗,而最有价值的是为理想而奋斗!<br>                                   ———  苏格拉底<br>Human happiness and joy lie in struggle, and what is most valuable is striving for ideals!<br>                                   ———   Socrates<br></font></strong></p><hr><center><br><iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=m0768lhl5uh" allowfullscreen="true"></iframe><br></center><center><br><iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=a0371nd7kqt" allowfullscreen="true"></iframe><br></center>]]></content>
    
    <summary type="html">
    
      Hello World! Never forget why you started, and your mission can be accomplished!
    
    </summary>
    
      <category term="Hello World" scheme="https://trhx.top/categories/Hello-World/"/>
    
    
      <category term="Life" scheme="https://trhx.top/tags/Life/"/>
    
      <category term="Dream" scheme="https://trhx.top/tags/Dream/"/>
    
  </entry>
  
</feed>