📄 node6.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head> <title>4. 更多流程控制的工具</title> <meta name="description" content="4. 更多流程控制的工具 "> <meta name="keywords" content="tut"> <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <link rel="STYLESHEET" href="tut.css"> <link rel="next" href="node7.html"> <link rel="previous" href="node5.html"> <link rel="up" href="tut.html"> <link rel="next" href="node7.html"></head> <body> <div class="navigation"><table align="Center" width="100%" cellpadding="0" cellspacing="2"> <tbody> <tr> <td><a href="node5.html"><img src="../icons/previous.gif" border="0" height="32" alt="Previous Page" width="32"></a></td> <td><a href="tut.html"><img src="../icons/up.gif" border="0" height="32" alt="Up One Level" width="32"></a></td> <td><a href="node7.html"><img src="../icons/next.gif" border="0" height="32" alt="Next Page" width="32"></a></td> <td align="Center" width="100%">Python 教学文件</td> <td><a href="node2.html"><img src="../icons/contents.gif" border="0" height="32" alt="Contents" width="32"></a></td> <td><img src="../icons/blank.gif" border="0" height="32" alt="" width="32"></td> <td><img src="../icons/blank.gif" border="0" height="32" alt="" width="32"></td> </tr> </tbody></table> <b class="navlabel">Previous:</b> <a class="sectref" href="node5.html">3.非正式的Python介绍</a> <b class="navlabel">Up:</b> <a class="sectref" href="tut.html">Python 教学文件</a> <b class="navlabel">Next:</b> <a class="sectref" href="node7.html">5. 资料结构</a> <br><hr></div> <!--End of Navigation Panel--> <!--Table of Child-Links--> <a name="CHILD_LINKS"><strong>小段落 </strong></a> <ul> <li><a name="tex2html261" href="node6.html#SECTION006100000000000000000">4.1 <tt class="keyword">if</tt> 叙述 </a> </li> <li><a name="tex2html262" href="node6.html#SECTION006200000000000000000">4.2 <tt class="keyword">for</tt> 叙述 </a> </li> <li><a name="tex2html263" href="node6.html#SECTION006300000000000000000">4.3 <tt class="function">range()</tt> 函式 </a> </li> <li><a name="tex2html264" href="node6.html#SECTION006400000000000000000">4.4 <tt class="keyword">break</tt> 及 <tt class="keyword">continue</tt> 叙述,以及在回圈中的 <tt class="keyword">else</tt> 子句 </a> </li> <li><a name="tex2html265" href="node6.html#SECTION006500000000000000000">4.5 <tt class="keyword">pass</tt> 叙述 </a> </li> <li><a name="tex2html266" href="node6.html#SECTION006600000000000000000">4.6 定义函式 </a> </li> <li><a name="tex2html267" href="node6.html#SECTION006700000000000000000">4.7 定义函式(续) </a> <ul> <li><a name="tex2html268" href="node6.html#SECTION006710000000000000000">4.7.1 预设参数值</a> </li> <li><a name="tex2html269" href="node6.html#SECTION006720000000000000000">4.7.2 关键字参数 </a> </li> <li><a name="tex2html270" href="node6.html#SECTION006730000000000000000">4.7.3 随意的参数串 </a> </li> <li><a name="tex2html271" href="node6.html#SECTION006740000000000000000">4.7.4 Lambda形式 </a> </li> <li><a name="tex2html272" href="node6.html#SECTION006750000000000000000">4.7.5 注解字串 </a> </li> </ul> </li></ul> <!--End of Table of Child-Links--> <hr> <h1> <br> 4. 更多流程控制的工具 </h1> <p> 除了我们刚刚介绍的 <tt class="keyword">while</tt> 叙述之外,Python也能够使用大部分其他程式语言使用的流程控制形式─ 除了有一些不同之外。 </p><p> </p><h1> <br> 4.1 <tt class="keyword">if</tt> 叙述 </h1> <p> 大概最为人所知的 statement 就是 <tt class="keyword">if</tt> 叙述了,举例如下: </p><p> </p><dl><dd><pre class="verbatim">>>> x = int(raw_input("Please enter a number: "))<br>>>> if x < 0:<br>... x = 0<br>... print 'Negative changed to zero'<br>... elif x == 0:<br>... print 'Zero'<br>... elif x == 1:<br>... print 'Single'<br>... else:<br>... print 'More'<br>...<br></pre> </dd> </dl> <p> <tt class="keyword">elif</tt> 的部份可以没有也可以有很多个, <tt class="keyword">else</tt> 部分可以有一个也可以没有。 `<tt class="keyword">elif</tt>' 这个关键字是`else if'的简化,而且有减少过分缩排的效果。 用 <tt class="keyword">if</tt> ... <tt class="keyword">elif</tt> ... <tt class="keyword">elif</tt> ... 这样的写法可以来取代在其他一些程式语言中常见的 <i>switch</i> 或是 <i>case</i> 的写法。 </p> <p> </p> <h1> <br> 4.2 <tt class="keyword">for</tt> 叙述 </h1> <p> 在Python里的 <tt class="keyword">for</tt> 叙述的用法与在C或是Pascal里的用法有所不同。不像是在Pascal中一定要执行某个数目的回圈,也不像是在C中让使用者决定执行的进度(step)及结束执行的条件,Python的 <tt class="keyword">for</tt> 叙述会将一个系列(sequence,像是list或是string)里所有的成员走遍一次,执行的顺序是依照成员在squence里的顺序。以下是一个例子: </p> <p> </p> <dl> <dd><pre class="verbatim">>>> # Measure some strings:<br>... a = ['cat', 'window', 'defenestrate']<br>>>> for x in a:<br>... print x, len(x)<br>... <br>cat 3<br>window 6<br>defenestrate 12<br></pre> </dd> </dl> <p> 在回圈的执行之中改变sequence的内容是危险的一件事(当然,只有可变的sequence像list才能作更动),如果你真的需要在回圈的执行中改变list的成员值,最好先复制一份这个list的拷贝,然后针对这个拷贝来做回圈。list的切割(slice)提供了一个简便的制作拷贝的方法: </p> <p> </p> <dl> <dd><pre class="verbatim">>>> for x in a[:]: # make a slice copy of the entire list<br>... if len(x) > 6: a.insert(0, x)<br>... <br>>>> a<br>['defenestrate', 'cat', 'window', 'defenestrate']<br></pre> </dd> </dl> <p> </p> <h1> <br> 4.3 <tt class="function">range()</tt> 函式 </h1> <p> 如果你真的需要一个回圈执行一定数目的次数的话,你可以使用内建的 <tt class="function">range()</tt> 函式。这个函式会产生一个含有逐步增加数字的list。如下: </p> <p> </p> <dl> <dd><pre class="verbatim">>>> range(10)<br>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<br></pre> </dd> </dl> <p> 在这个函式中的所传入的参数是代表端点,而且这个端点不在产生的list之中。 <code>range(10)</code>正好产生10个数值,正好是这个list的index是由0到10。我们也可以让这个产生的list从某个数值开始,或者规定其每次增加的数值为多少 (增加值也可以是负数,这个增加值也叫做`step')。 </p> <p> </p> <dl> <dd><pre class="verbatim">>>> range(5, 10)<br>[5, 6, 7, 8, 9]<br>>>> range(0, 10, 3)<br>[0, 3, 6, 9]<br>>>> range(-10, -100, -30)<br>[-10, -40, -70]<br></pre> </dd> </dl> <p> 所以如果我们要循环一次一个sequence的index的话,我们可以用 <tt class="function">range()</tt> 配合上 <tt class="function">len()</tt> 一起使用: </p> <p> </p> <dl> <dd><pre class="verbatim">>>> a = ['Mary', 'had', 'a', 'little', 'lamb']<br>>>> for i in range(len(a)):<br>... print i, a[i]<br>... <br>0 Mary<br>1 had<br>2 a<br>3 little<br>4 lamb<br></pre> </dd> </dl>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -