-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathintroduction.html
More file actions
597 lines (576 loc) · 58 KB
/
introduction.html
File metadata and controls
597 lines (576 loc) · 58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
280
281
282
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
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_TW">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>3. 一個非正式的 Python 簡介 — Python 3.7.0 說明文件</title>
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/translations.js"></script>
<script type="text/javascript" src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.7.0 說明文件 中搜尋"
href="../_static/opensearch.xml"/>
<link rel="author" title="關於這些文件" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜尋" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="4. 深入了解流程控制" href="controlflow.html" />
<link rel="prev" title="2. 使用 Python 直譯器" href="interpreter.html" />
<link rel="shortcut icon" type="image/png" href="../_static/py.png" />
<link rel="canonical" href="https://docs.python.org/3/tutorial/introduction.html" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/switchers.js"></script>
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>瀏覽</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模組索引"
>模組</a> |</li>
<li class="right" >
<a href="controlflow.html" title="4. 深入了解流程控制"
accesskey="N">下一頁</a> |</li>
<li class="right" >
<a href="interpreter.html" title="2. 使用 Python 直譯器"
accesskey="P">上一頁</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> »</li>
<li>
<span class="language_switcher_placeholder">zh_TW</span>
<span class="version_switcher_placeholder">3.7.0</span>
<a href="../index.html">Documentation </a> »
</li>
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Python 教學</a> »</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="an-informal-introduction-to-python">
<span id="tut-informal"></span><h1>3. 一個非正式的 Python 簡介<a class="headerlink" href="#an-informal-introduction-to-python" title="本標題的永久連結">¶</a></h1>
<p>在下面的例子中,輸入與輸出的區別在於有無提示符(prompt,<a class="reference internal" href="../glossary.html#term"><span class="xref std std-term">>>></span></a> 和 <a class="reference internal" href="../glossary.html#term-1"><span class="xref std std-term">…</span></a>):如果要重做範例,你必須在提示符出現的時候,輸入提示符後方的所有內容;那些非提示符開始的文字行是直譯器的輸出。注意到在範例中,若出現單行只有次提示符時,代表該行你必須直接換行;這被使用在多行指令結束輸入時。</p>
<p>在本手冊中的許多範例中,即便他們為互動式地輸入,仍然包含註解。Python 中的註解 (comments) 由 hash 字元 <code class="docutils literal notranslate"><span class="pre">#</span></code> 開始一直到該行結束。註解可以從該行之首、空白後、或程式碼之後開始,但不會出現在字串之中。hash 字元在字串之中時仍視為一 hash 字元。因為註解只是用來說明程式而不會被 Python 解讀,在練習範例時不一定要輸入。</p>
<p>一些範例如下:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># this is the first comment</span>
<span class="n">spam</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1"># and this is the second comment</span>
<span class="c1"># ... and now a third!</span>
<span class="n">text</span> <span class="o">=</span> <span class="s2">"# This is not a comment because it's inside quotes."</span>
</pre></div>
</div>
<div class="section" id="using-python-as-a-calculator">
<span id="tut-calculator"></span><h2>3.1. 把 Python 當作計算機使用<a class="headerlink" href="#using-python-as-a-calculator" title="本標題的永久連結">¶</a></h2>
<p>讓我們來試試一些簡單的 Python 指令。啟動直譯器並等待第一個主提示符 <code class="docutils literal notranslate"><span class="pre">>>></span></code> 出現。(應該不會等太久)</p>
<div class="section" id="numbers">
<span id="tut-numbers"></span><h3>3.1.1. 數字 (Number)<a class="headerlink" href="#numbers" title="本標題的永久連結">¶</a></h3>
<p>直譯器如同一台簡單的計算機:你可以輸入一個 expression(運算式),它會寫出該式的值。Expression 的語法很使用:運算子 <code class="docutils literal notranslate"><span class="pre">+</span></code>、<code class="docutils literal notranslate"><span class="pre">-</span></code>、<code class="docutils literal notranslate"><span class="pre">*</span></code> 和 <code class="docutils literal notranslate"><span class="pre">/</span></code> 的行為如同大多數的程式語言(例如:Pascal 或 C);括號 <code class="docutils literal notranslate"><span class="pre">()</span></code> 可以用來分群。例如:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span>
<span class="go">4</span>
<span class="gp">>>> </span><span class="mi">50</span> <span class="o">-</span> <span class="mi">5</span><span class="o">*</span><span class="mi">6</span>
<span class="go">20</span>
<span class="gp">>>> </span><span class="p">(</span><span class="mi">50</span> <span class="o">-</span> <span class="mi">5</span><span class="o">*</span><span class="mi">6</span><span class="p">)</span> <span class="o">/</span> <span class="mi">4</span>
<span class="go">5.0</span>
<span class="gp">>>> </span><span class="mi">8</span> <span class="o">/</span> <span class="mi">5</span> <span class="c1"># division always returns a floating point number</span>
<span class="go">1.6</span>
</pre></div>
</div>
<p>整數數字(即 <code class="docutils literal notranslate"><span class="pre">2</span></code>、<code class="docutils literal notranslate"><span class="pre">4</span></code>、<code class="docutils literal notranslate"><span class="pre">20</span></code>)為 <a class="reference internal" href="../library/functions.html#int" title="int"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a> 型態,數字有小數點部份的(即 <code class="docutils literal notranslate"><span class="pre">5.0</span></code>、<code class="docutils literal notranslate"><span class="pre">1.6</span></code>)為 <a class="reference internal" href="../library/functions.html#float" title="float"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a> 型態。我們將在之後的教學中看到更多數字相關的型態。</p>
<p>除法 (<code class="docutils literal notranslate"><span class="pre">/</span></code>) 永遠回傳一個 float。如果要做 <a class="reference internal" href="../glossary.html#term-floor-division"><span class="xref std std-term">floor division</span></a> 並拿到整數的結果(即去除所有小數點的部份),你可以使用 <code class="docutils literal notranslate"><span class="pre">//</span></code> 運算子;計算餘數可以使用 <code class="docutils literal notranslate"><span class="pre">%</span></code>:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">17</span> <span class="o">/</span> <span class="mi">3</span> <span class="c1"># classic division returns a float</span>
<span class="go">5.666666666666667</span>
<span class="go">>>></span>
<span class="gp">>>> </span><span class="mi">17</span> <span class="o">//</span> <span class="mi">3</span> <span class="c1"># floor division discards the fractional part</span>
<span class="go">5</span>
<span class="gp">>>> </span><span class="mi">17</span> <span class="o">%</span> <span class="mi">3</span> <span class="c1"># the % operator returns the remainder of the division</span>
<span class="go">2</span>
<span class="gp">>>> </span><span class="mi">5</span> <span class="o">*</span> <span class="mi">3</span> <span class="o">+</span> <span class="mi">2</span> <span class="c1"># result * divisor + remainder</span>
<span class="go">17</span>
</pre></div>
</div>
<p>在 Python 中,計算冪次 (powers) 可以使用 <code class="docutils literal notranslate"><span class="pre">**</span></code> 運算子 <a class="footnote-reference" href="#id3" id="id1">[1]</a>:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">5</span> <span class="o">**</span> <span class="mi">2</span> <span class="c1"># 5 squared</span>
<span class="go">25</span>
<span class="gp">>>> </span><span class="mi">2</span> <span class="o">**</span> <span class="mi">7</span> <span class="c1"># 2 to the power of 7</span>
<span class="go">128</span>
</pre></div>
</div>
<p>等於符號 (<code class="docutils literal notranslate"><span class="pre">=</span></code>) 可以用於為變數賦值。賦值完之後,在下個指示符前並不會顯示任何結果:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">width</span> <span class="o">=</span> <span class="mi">20</span>
<span class="gp">>>> </span><span class="n">height</span> <span class="o">=</span> <span class="mi">5</span> <span class="o">*</span> <span class="mi">9</span>
<span class="gp">>>> </span><span class="n">width</span> <span class="o">*</span> <span class="n">height</span>
<span class="go">900</span>
</pre></div>
</div>
<p>如果一個變數未被「定義 (defined)」(即變數未被賦值),試著使用它時會出現一個錯誤:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">n</span> <span class="c1"># try to access an undefined variable</span>
<span class="gt">Traceback (most recent call last):</span>
File <span class="nb">"<stdin>"</span>, line <span class="m">1</span>, in <span class="n"><module></span>
<span class="gr">NameError</span>: <span class="n">name 'n' is not defined</span>
</pre></div>
</div>
<p>浮點數的運算有完善的支援,運算子 (operator) 遇上混合的運算元 (operand) 時會把整數的運算元轉換為浮點數:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="mi">4</span> <span class="o">*</span> <span class="mf">3.75</span> <span class="o">-</span> <span class="mi">1</span>
<span class="go">14.0</span>
</pre></div>
</div>
<p>在互動式模式中,最後一個印出的運算式的結果會被指派至變數 <code class="docutils literal notranslate"><span class="pre">_</span></code> 中。這表示當你把 Python 當作桌上計算機使用者,要接續計算變得容易許多:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">tax</span> <span class="o">=</span> <span class="mf">12.5</span> <span class="o">/</span> <span class="mi">100</span>
<span class="gp">>>> </span><span class="n">price</span> <span class="o">=</span> <span class="mf">100.50</span>
<span class="gp">>>> </span><span class="n">price</span> <span class="o">*</span> <span class="n">tax</span>
<span class="go">12.5625</span>
<span class="gp">>>> </span><span class="n">price</span> <span class="o">+</span> <span class="n">_</span>
<span class="go">113.0625</span>
<span class="gp">>>> </span><span class="nb">round</span><span class="p">(</span><span class="n">_</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="go">113.06</span>
</pre></div>
</div>
<p>這個變數應該被使用者視為只能讀取。不應該明確地為它賦值 — 你可以創一個獨立但名稱相同的本地變數來覆蓋掉預設變數和它的神奇行為。</p>
<p>除了 <a class="reference internal" href="../library/functions.html#int" title="int"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a> 和 <a class="reference internal" href="../library/functions.html#float" title="float"><code class="xref py py-class docutils literal notranslate"><span class="pre">float</span></code></a>,Python 還支援了其他的數字型態,包含 <a class="reference internal" href="../library/decimal.html#decimal.Decimal" title="decimal.Decimal"><code class="xref py py-class docutils literal notranslate"><span class="pre">Decimal</span></code></a> 和 <a class="reference internal" href="../library/fractions.html#fractions.Fraction" title="fractions.Fraction"><code class="xref py py-class docutils literal notranslate"><span class="pre">Fraction</span></code></a>。Python 亦內建支援<a class="reference internal" href="../library/stdtypes.html#typesnumeric"><span class="std std-ref">複數 (complex numbers)</span></a>,並使用 <code class="docutils literal notranslate"><span class="pre">j</span></code> 和 <code class="docutils literal notranslate"><span class="pre">J</span></code> 後綴來指定虛數的部份(即 <code class="docutils literal notranslate"><span class="pre">3+5j</span></code>)。</p>
</div>
<div class="section" id="strings">
<span id="tut-strings"></span><h3>3.1.2. 字串 (String)<a class="headerlink" href="#strings" title="本標題的永久連結">¶</a></h3>
<p>除了數字之外,Python 也可以操作字串,而表達字串有數種方式。它們可以用包含在單引號 (<code class="docutils literal notranslate"><span class="pre">'...'</span></code>) 或雙引號 (<code class="docutils literal notranslate"><span class="pre">"..."</span></code>) 之中,兩者會得到相同的結果<a class="footnote-reference" href="#id4" id="id2">[2]</a>。使用 <code class="docutils literal notranslate"><span class="pre">\</span></code> 跳脫出現於字串中的引號:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="s1">'spam eggs'</span> <span class="c1"># single quotes</span>
<span class="go">'spam eggs'</span>
<span class="gp">>>> </span><span class="s1">'doesn</span><span class="se">\'</span><span class="s1">t'</span> <span class="c1"># use \' to escape the single quote...</span>
<span class="go">"doesn't"</span>
<span class="gp">>>> </span><span class="s2">"doesn't"</span> <span class="c1"># ...or use double quotes instead</span>
<span class="go">"doesn't"</span>
<span class="gp">>>> </span><span class="s1">'"Yes," they said.'</span>
<span class="go">'"Yes," they said.'</span>
<span class="gp">>>> </span><span class="s2">"</span><span class="se">\"</span><span class="s2">Yes,</span><span class="se">\"</span><span class="s2"> they said."</span>
<span class="go">'"Yes," they said.'</span>
<span class="gp">>>> </span><span class="s1">'"Isn</span><span class="se">\'</span><span class="s1">t," they said.'</span>
<span class="go">'"Isn\'t," they said.'</span>
</pre></div>
</div>
<p>在互動式的直譯器中,輸出的字串會被引號包圍且特殊符號會使用反斜線 (<code class="docutils literal notranslate"><span class="pre">\</span></code>) 跳脫。雖然這有時會讓它看起來跟輸入的字串不相同(包圍用的引號可能會改變),輸入和輸出兩字串實為相同。一般來說,字串包含單引號而沒有雙引號時,會使用雙引號包圍字串。函式 <a class="reference internal" href="../library/functions.html#print" title="print"><code class="xref py py-func docutils literal notranslate"><span class="pre">print()</span></code></a> 會產生更易讀的輸出,它會去除掉包圍的引號,並且直接印出被跳脫的字元和特殊字元:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="s1">'"Isn</span><span class="se">\'</span><span class="s1">t," they said.'</span>
<span class="go">'"Isn\'t," they said.'</span>
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="s1">'"Isn</span><span class="se">\'</span><span class="s1">t," they said.'</span><span class="p">)</span>
<span class="go">"Isn't," they said.</span>
<span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="s1">'First line.</span><span class="se">\n</span><span class="s1">Second line.'</span> <span class="c1"># \n means newline</span>
<span class="gp">>>> </span><span class="n">s</span> <span class="c1"># without print(), \n is included in the output</span>
<span class="go">'First line.\nSecond line.'</span>
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="c1"># with print(), \n produces a new line</span>
<span class="go">First line.</span>
<span class="go">Second line.</span>
</pre></div>
</div>
<p>如果你不希望字元前出現 <code class="docutils literal notranslate"><span class="pre">\</span></code> 就被當成特殊字元時,可以改使用 <em>raw string</em>,在第一個包圍引號前加上 <code class="docutils literal notranslate"><span class="pre">r</span></code> :</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="s1">'C:\some</span><span class="se">\n</span><span class="s1">ame'</span><span class="p">)</span> <span class="c1"># here \n means newline!</span>
<span class="go">C:\some</span>
<span class="go">ame</span>
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="sa">r</span><span class="s1">'C:\some\name'</span><span class="p">)</span> <span class="c1"># note the r before the quote</span>
<span class="go">C:\some\name</span>
</pre></div>
</div>
<p>字串值可以跨越數行。其中一方式是使用三個重覆引號:<code class="docutils literal notranslate"><span class="pre">"""..."""</span></code> 或 <code class="docutils literal notranslate"><span class="pre">'''...'''</span></code>。此時換行會被自動加入字串值中,但也可以在換行前加入 <code class="docutils literal notranslate"><span class="pre">\</span></code> 來取消這個行為。在以下的例子中:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">"""</span><span class="se">\</span>
<span class="s2">Usage: thingy [OPTIONS]</span>
<span class="s2"> -h Display this usage message</span>
<span class="s2"> -H hostname Hostname to connect to</span>
<span class="s2">"""</span><span class="p">)</span>
</pre></div>
</div>
<p>會產生以下的輸出(注意第一個換行並沒有被包含進字串值中):</p>
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to
</pre></div>
</div>
<p>字串可以使用 <code class="docutils literal notranslate"><span class="pre">+</span></code> 運算子連接 (concatenate),並用 <code class="docutils literal notranslate"><span class="pre">*</span></code> 重覆該字串的內容:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="c1"># 3 times 'un', followed by 'ium'</span>
<span class="gp">>>> </span><span class="mi">3</span> <span class="o">*</span> <span class="s1">'un'</span> <span class="o">+</span> <span class="s1">'ium'</span>
<span class="go">'unununium'</span>
</pre></div>
</div>
<p>兩個以上相鄰的字串值(<em>string literal</em>,即被引號包圍的字串)會被自動連接起來:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="s1">'Py'</span> <span class="s1">'thon'</span>
<span class="go">'Python'</span>
</pre></div>
</div>
<p>當你想要分段一個非常長的字串時,兩相鄰字串值自動連接的特性十分有用:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">text</span> <span class="o">=</span> <span class="p">(</span><span class="s1">'Put several strings within parentheses '</span>
<span class="gp">... </span> <span class="s1">'to have them joined together.'</span><span class="p">)</span>
<span class="gp">>>> </span><span class="n">text</span>
<span class="go">'Put several strings within parentheses to have them joined together.'</span>
</pre></div>
</div>
<p>但這特性只限於兩相鄰的字串值間,而非兩相鄰變數或表達式:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">prefix</span> <span class="o">=</span> <span class="s1">'Py'</span>
<span class="gp">>>> </span><span class="n">prefix</span> <span class="s1">'thon'</span> <span class="c1"># can't concatenate a variable and a string literal</span>
<span class="go"> ...</span>
<span class="go">SyntaxError: invalid syntax</span>
<span class="gp">>>> </span><span class="p">(</span><span class="s1">'un'</span> <span class="o">*</span> <span class="mi">3</span><span class="p">)</span> <span class="s1">'ium'</span>
<span class="go"> ...</span>
<span class="go">SyntaxError: invalid syntax</span>
</pre></div>
</div>
<p>如果要連接變數們或一個變數與一個字串值,使用 <code class="docutils literal notranslate"><span class="pre">+</span></code>:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">prefix</span> <span class="o">+</span> <span class="s1">'thon'</span>
<span class="go">'Python'</span>
</pre></div>
</div>
<p>字串可以被「索引 <em>indexed</em>」(下標,即 subscripted),第一個字元的索引值為 0。沒有獨立表示字元的型別;一個字元就是一個大小為 1 的字串:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">word</span> <span class="o">=</span> <span class="s1">'Python'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># character in position 0</span>
<span class="go">'P'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="c1"># character in position 5</span>
<span class="go">'n'</span>
</pre></div>
</div>
<p>索引值可以是負的,此時改成從右開始計數:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># last character</span>
<span class="go">'n'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># second-last character</span>
<span class="go">'o'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">6</span><span class="p">]</span>
<span class="go">'P'</span>
</pre></div>
</div>
<p>注意到因為 -0 等同於 0,負的索引值由 -1 開始。</p>
<p>除了索引外,字串亦支援「切片 <em>slicing</em>」。索引用來拿到單獨的字元,而切片則可以讓你拿到子字串 (substring):</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># characters from position 0 (included) to 2 (excluded)</span>
<span class="go">'Py'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="c1"># characters from position 2 (included) to 5 (excluded)</span>
<span class="go">'tho'</span>
</pre></div>
</div>
<p>注意到起點永遠被包含,而結尾永遠不被包含。這確保了 <code class="docutils literal notranslate"><span class="pre">s[:i]</span> <span class="pre">+</span> <span class="pre">s[i:]</span></code> 永遠等於 <code class="docutils literal notranslate"><span class="pre">s</span></code>:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span>
<span class="go">'Python'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[:</span><span class="mi">4</span><span class="p">]</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">4</span><span class="p">:]</span>
<span class="go">'Python'</span>
</pre></div>
</div>
<p>切片索引 (slice indices) 有很常用的預設值,省略起點索引值時預設為 0,而省略第二個索引值時預設整個字串被包含在 slice 中:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># character from the beginning to position 2 (excluded)</span>
<span class="go">'Py'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">4</span><span class="p">:]</span> <span class="c1"># characters from position 4 (included) to the end</span>
<span class="go">'on'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">:]</span> <span class="c1"># characters from the second-last (included) to the end</span>
<span class="go">'on'</span>
</pre></div>
</div>
<p>這裡有個簡單記住 slice 是如何運作的方式。想像 slice 的索引值指著字元們之間,其中第一個字元的左側邊緣由 0 計數。則 <em>n</em> 個字元的字串中最後一個字元的右側邊緣會有索引值 <em>n</em>,例如:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span> <span class="o">+---+---+---+---+---+---+</span>
<span class="o">|</span> <span class="n">P</span> <span class="o">|</span> <span class="n">y</span> <span class="o">|</span> <span class="n">t</span> <span class="o">|</span> <span class="n">h</span> <span class="o">|</span> <span class="n">o</span> <span class="o">|</span> <span class="n">n</span> <span class="o">|</span>
<span class="o">+---+---+---+---+---+---+</span>
<span class="mi">0</span> <span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span> <span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span>
<span class="o">-</span><span class="mi">6</span> <span class="o">-</span><span class="mi">5</span> <span class="o">-</span><span class="mi">4</span> <span class="o">-</span><span class="mi">3</span> <span class="o">-</span><span class="mi">2</span> <span class="o">-</span><span class="mi">1</span>
</pre></div>
</div>
<p>第一行數字給定字串索引值為 0…6 的位置;第二行則標示了負索引值的位置。由 <em>i</em> 至 <em>j</em> 的 slice 包含了標示 <em>i</em> 和 <em>j</em> 邊緣間的所有字元。</p>
<p>對非負數的索引值而言,一個 slice 的長度等於其索引值之差,如果索引值落在字串邊界內。例如,<code class="docutils literal notranslate"><span class="pre">word[1:3]</span></code> 的長度是 2。</p>
<p>嘗試使用一個過大的索引值會造成錯誤:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">42</span><span class="p">]</span> <span class="c1"># the word only has 6 characters</span>
<span class="gt">Traceback (most recent call last):</span>
File <span class="nb">"<stdin>"</span>, line <span class="m">1</span>, in <span class="n"><module></span>
<span class="gr">IndexError</span>: <span class="n">string index out of range</span>
</pre></div>
</div>
<p>然而,超出範圍的索引值在 slice 中會被妥善的處理:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">4</span><span class="p">:</span><span class="mi">42</span><span class="p">]</span>
<span class="go">'on'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">42</span><span class="p">:]</span>
<span class="go">''</span>
</pre></div>
</div>
<p>Python 字串無法被改變 — 它們是 <a class="reference internal" href="../glossary.html#term-immutable"><span class="xref std std-term">immutable</span></a>。因此,嘗試對字串中某個索引位置賦值會產生錯誤:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'J'</span>
<span class="go"> ...</span>
<span class="go">TypeError: 'str' object does not support item assignment</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span> <span class="o">=</span> <span class="s1">'py'</span>
<span class="go"> ...</span>
<span class="go">TypeError: 'str' object does not support item assignment</span>
</pre></div>
</div>
<p>如果你需要一個不一樣的字串,你必須建立一個新的:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="s1">'J'</span> <span class="o">+</span> <span class="n">word</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
<span class="go">'Jython'</span>
<span class="gp">>>> </span><span class="n">word</span><span class="p">[:</span><span class="mi">2</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'py'</span>
<span class="go">'Pypy'</span>
</pre></div>
</div>
<p>內建的函式 <a class="reference internal" href="../library/functions.html#len" title="len"><code class="xref py py-func docutils literal notranslate"><span class="pre">len()</span></code></a> 回傳一個字串的長度:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">s</span> <span class="o">=</span> <span class="s1">'supercalifragilisticexpialidocious'</span>
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
<span class="go">34</span>
</pre></div>
</div>
<div class="admonition seealso">
<p class="first admonition-title">也參考</p>
<dl class="last docutils">
<dt><a class="reference internal" href="../library/stdtypes.html#textseq"><span class="std std-ref">Text Sequence Type — str</span></a></dt>
<dd>字串是 <em>sequence 型別</em>的範例之一,並支援該型別常用的操作。</dd>
<dt><a class="reference internal" href="../library/stdtypes.html#string-methods"><span class="std std-ref">String Methods</span></a></dt>
<dd>字串支援非常多種基本轉換和搜尋的方法。</dd>
<dt><a class="reference internal" href="../reference/lexical_analysis.html#f-strings"><span class="std std-ref">Formatted string literals</span></a></dt>
<dd>包含有表示式的字串值。</dd>
<dt><a class="reference internal" href="../library/string.html#formatstrings"><span class="std std-ref">Format String Syntax</span></a></dt>
<dd>關於透過 <a class="reference internal" href="../library/stdtypes.html#str.format" title="str.format"><code class="xref py py-meth docutils literal notranslate"><span class="pre">str.format()</span></code></a> 字串格式化 (string formatting) 的資訊。</dd>
<dt><a class="reference internal" href="../library/stdtypes.html#old-string-formatting"><span class="std std-ref">printf-style String Formatting</span></a></dt>
<dd>在字串為 <code class="docutils literal notranslate"><span class="pre">%</span></code> 的左運算元時,將觸發舊的字串格式化操作,更多的細節在本連結中介紹。</dd>
</dl>
</div>
</div>
<div class="section" id="lists">
<span id="tut-lists"></span><h3>3.1.3. List(串列)<a class="headerlink" href="#lists" title="本標題的永久連結">¶</a></h3>
<p>Python 理解數種複合型資料型別,用來組合不同的數值。當中最多樣變化的型別為 <em>list</em>,可以寫成一系列以逗號分隔的數值(稱之元素,即 item),包含在方括號之中。List 可以包合不同型別的元素,但通常這些元素會有相同的型別:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">squares</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">25</span><span class="p">]</span>
<span class="gp">>>> </span><span class="n">squares</span>
<span class="go">[1, 4, 9, 16, 25]</span>
</pre></div>
</div>
<p>如同字串(以及其他內建的 <a class="reference internal" href="../glossary.html#term-sequence"><span class="xref std std-term">sequence</span></a> 型別),list 可以被索引和切片 (slice):</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">squares</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="c1"># indexing returns the item</span>
<span class="go">1</span>
<span class="gp">>>> </span><span class="n">squares</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
<span class="go">25</span>
<span class="gp">>>> </span><span class="n">squares</span><span class="p">[</span><span class="o">-</span><span class="mi">3</span><span class="p">:]</span> <span class="c1"># slicing returns a new list</span>
<span class="go">[9, 16, 25]</span>
</pre></div>
</div>
<p>所有 slice 操作都會回傳一個新的 list 包含要求的元素。這意謂著以下這個 slice 複製了原本 list(淺複製,即 shallow copy):</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">squares</span><span class="p">[:]</span>
<span class="go">[1, 4, 9, 16, 25]</span>
</pre></div>
</div>
<p>List 對支援如接合 (concatenation) 等操作:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">squares</span> <span class="o">+</span> <span class="p">[</span><span class="mi">36</span><span class="p">,</span> <span class="mi">49</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mi">81</span><span class="p">,</span> <span class="mi">100</span><span class="p">]</span>
<span class="go">[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]</span>
</pre></div>
</div>
<p>不同於字串是 <a class="reference internal" href="../glossary.html#term-immutable"><span class="xref std std-term">immutable</span></a>,list 是 <a class="reference internal" href="../glossary.html#term-mutable"><span class="xref std std-term">mutable</span></a> 型別,即改變 list 的內容是可能的:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">cubes</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">65</span><span class="p">,</span> <span class="mi">125</span><span class="p">]</span> <span class="c1"># something's wrong here</span>
<span class="gp">>>> </span><span class="mi">4</span> <span class="o">**</span> <span class="mi">3</span> <span class="c1"># the cube of 4 is 64, not 65!</span>
<span class="go">64</span>
<span class="gp">>>> </span><span class="n">cubes</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mi">64</span> <span class="c1"># replace the wrong value</span>
<span class="gp">>>> </span><span class="n">cubes</span>
<span class="go">[1, 8, 27, 64, 125]</span>
</pre></div>
</div>
<p>你也可以在 list 的最後加入新元素,透過使用 <code class="xref py py-meth docutils literal notranslate"><span class="pre">append()</span></code> <em>方法</em> (method)(我們稍後會看到更多方法的說明):</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">cubes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">216</span><span class="p">)</span> <span class="c1"># add the cube of 6</span>
<span class="gp">>>> </span><span class="n">cubes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">7</span> <span class="o">**</span> <span class="mi">3</span><span class="p">)</span> <span class="c1"># and the cube of 7</span>
<span class="gp">>>> </span><span class="n">cubes</span>
<span class="go">[1, 8, 27, 64, 125, 216, 343]</span>
</pre></div>
</div>
<p>也可以對 slice 賦值,這能改變 list 的大小,甚至是清空一個 list:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">letters</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">,</span> <span class="s1">'e'</span><span class="p">,</span> <span class="s1">'f'</span><span class="p">,</span> <span class="s1">'g'</span><span class="p">]</span>
<span class="gp">>>> </span><span class="n">letters</span>
<span class="go">['a', 'b', 'c', 'd', 'e', 'f', 'g']</span>
<span class="gp">>>> </span><span class="c1"># replace some values</span>
<span class="gp">>>> </span><span class="n">letters</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'C'</span><span class="p">,</span> <span class="s1">'D'</span><span class="p">,</span> <span class="s1">'E'</span><span class="p">]</span>
<span class="gp">>>> </span><span class="n">letters</span>
<span class="go">['a', 'b', 'C', 'D', 'E', 'f', 'g']</span>
<span class="gp">>>> </span><span class="c1"># now remove them</span>
<span class="gp">>>> </span><span class="n">letters</span><span class="p">[</span><span class="mi">2</span><span class="p">:</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
<span class="gp">>>> </span><span class="n">letters</span>
<span class="go">['a', 'b', 'f', 'g']</span>
<span class="gp">>>> </span><span class="c1"># clear the list by replacing all the elements with an empty list</span>
<span class="gp">>>> </span><span class="n">letters</span><span class="p">[:]</span> <span class="o">=</span> <span class="p">[]</span>
<span class="gp">>>> </span><span class="n">letters</span>
<span class="go">[]</span>
</pre></div>
</div>
<p>內建的函式 <a class="reference internal" href="../library/functions.html#len" title="len"><code class="xref py py-func docutils literal notranslate"><span class="pre">len()</span></code></a> 亦可以作用在 list 上:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">letters</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">,</span> <span class="s1">'d'</span><span class="p">]</span>
<span class="gp">>>> </span><span class="nb">len</span><span class="p">(</span><span class="n">letters</span><span class="p">)</span>
<span class="go">4</span>
</pre></div>
</div>
<p>也可以嵌套多層 list (建立 list 包含其他 list),例如:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'a'</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">]</span>
<span class="gp">>>> </span><span class="n">n</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="p">,</span> <span class="n">n</span><span class="p">]</span>
<span class="gp">>>> </span><span class="n">x</span>
<span class="go">[['a', 'b', 'c'], [1, 2, 3]]</span>
<span class="gp">>>> </span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="go">['a', 'b', 'c']</span>
<span class="gp">>>> </span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
<span class="go">'b'</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="first-steps-towards-programming">
<span id="tut-firststeps"></span><h2>3.2. 初探程式設計的前幾步<a class="headerlink" href="#first-steps-towards-programming" title="本標題的永久連結">¶</a></h2>
<p>當然,我們可以用 Python 來處理比 2 加 2 更複雜的工作。例如,我們可以印出<a class="reference external" href="https://zh.wikipedia.org/zh-tw/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97">費氏數列</a>的首幾項序列:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="c1"># Fibonacci series:</span>
<span class="gp">... </span><span class="c1"># the sum of two elements defines the next</span>
<span class="gp">... </span><span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span>
<span class="gp">>>> </span><span class="k">while</span> <span class="n">a</span> <span class="o"><</span> <span class="mi">10</span><span class="p">:</span>
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="gp">... </span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span>
<span class="gp">...</span>
<span class="go">0</span>
<span class="go">1</span>
<span class="go">1</span>
<span class="go">2</span>
<span class="go">3</span>
<span class="go">5</span>
<span class="go">8</span>
</pre></div>
</div>
<p>這例子引入了許多新的特性。</p>
<ul>
<li><p class="first">第一行出現了多重賦值:變數 <code class="docutils literal notranslate"><span class="pre">a</span></code> 與 <code class="docutils literal notranslate"><span class="pre">b</span></code> 同時得到了新的值 0 與 1。在最後一行同樣的賦值再被使用了一次,示範了等號的右項運算 (expression) 會先被計算 (evaluate),賦值再發生。右項的運算式由左至右依序被計算。</p>
</li>
<li><p class="first">The <a class="reference internal" href="../reference/compound_stmts.html#while"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">while</span></code></a> loop executes as long as the condition (here: <code class="docutils literal notranslate"><span class="pre">a</span> <span class="pre"><</span> <span class="pre">10</span></code>)
remains true. In Python, like in C, any non-zero integer value is true; zero is
false. The condition may also be a string or list value, in fact any sequence;
anything with a non-zero length is true, empty sequences are false. The test
used in the example is a simple comparison. The standard comparison operators
are written the same as in C: <code class="docutils literal notranslate"><span class="pre"><</span></code> (less than), <code class="docutils literal notranslate"><span class="pre">></span></code> (greater than), <code class="docutils literal notranslate"><span class="pre">==</span></code>
(equal to), <code class="docutils literal notranslate"><span class="pre"><=</span></code> (less than or equal to), <code class="docutils literal notranslate"><span class="pre">>=</span></code> (greater than or equal to)
and <code class="docutils literal notranslate"><span class="pre">!=</span></code> (not equal to).</p>
</li>
<li><p class="first">迴圈的主體會<em>縮排</em>:縮排在 Python 中用來關連一群陳述式。在互動式提示符中,你必須在迴圈內的每一行一開始鍵入 tab 或者(數個)空白來維持縮排。實務上,你會先在文字編輯器中準備好比較複雜的輸入;多數編輯器都有自動縮排的功能。當一個複合陳述式以互動地方式輸入,必須在結束時多加一行空行來代表結束(因為語法解析器無法判斷你何時輸入複合陳述的最後一行)。注意在一個縮排段落內的縮排方式與數量必須維持一致。</p>
</li>
<li><p class="first"><a class="reference internal" href="../library/functions.html#print" title="print"><code class="xref py py-func docutils literal notranslate"><span class="pre">print()</span></code></a> 函式印出它接收到引數(們)的值。不同於先前僅我們寫下想要的運算(像是先前的計算機範例),它可以處理複數個引數、浮點數數值和字串。印出的字串將不帶有引號,並且不同項目間會插入一個空白,因此可以讓你容易格式化輸出,例如:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">i</span> <span class="o">=</span> <span class="mi">256</span><span class="o">*</span><span class="mi">256</span>
<span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="s1">'The value of i is'</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
<span class="go">The value of i is 65536</span>
</pre></div>
</div>
<p>關鍵字引數 <em>end</em> 可以被用來避免額外的換行符加入到輸出中,或者以不同的字串結束輸出:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span>
<span class="gp">>>> </span><span class="k">while</span> <span class="n">a</span> <span class="o"><</span> <span class="mi">1000</span><span class="p">:</span>
<span class="gp">... </span> <span class="nb">print</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s1">','</span><span class="p">)</span>
<span class="gp">... </span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="o">+</span><span class="n">b</span>
<span class="gp">...</span>
<span class="go">0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,</span>
</pre></div>
</div>
</li>
</ul>
<p class="rubric">註解</p>
<table class="docutils footnote" frame="void" id="id3" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>因為 <code class="docutils literal notranslate"><span class="pre">**</span></code> 擁有較 <code class="docutils literal notranslate"><span class="pre">-</span></code> 高的優先次序,<code class="docutils literal notranslate"><span class="pre">-3**2</span></code> 會被解釋為 <code class="docutils literal notranslate"><span class="pre">-(3**2)</span></code> 並得到 <code class="docutils literal notranslate"><span class="pre">-9</span></code>。如果要避免這樣的優先順序以得到 <code class="docutils literal notranslate"><span class="pre">9</span></code>,你可以使用 <code class="docutils literal notranslate"><span class="pre">(-3)**2</span></code>。</td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id4" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id2">[2]</a></td><td>不像其他語言,特殊符號如 <code class="docutils literal notranslate"><span class="pre">\n</span></code> 在單 (<code class="docutils literal notranslate"><span class="pre">'...'</span></code>) 和雙 (<code class="docutils literal notranslate"><span class="pre">"..."</span></code>) 括號中有相同的意思。兩種刮號的唯一差別,在於使用單刮號時,不需要跳脫 (escape) <code class="docutils literal notranslate"><span class="pre">"</span></code>(但需要跳脫 <code class="docutils literal notranslate"><span class="pre">\'</span></code>),反之亦同。</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">目錄</a></h3>
<ul>
<li><a class="reference internal" href="#">3. 一個非正式的 Python 簡介</a><ul>
<li><a class="reference internal" href="#using-python-as-a-calculator">3.1. 把 Python 當作計算機使用</a><ul>
<li><a class="reference internal" href="#numbers">3.1.1. 數字 (Number)</a></li>
<li><a class="reference internal" href="#strings">3.1.2. 字串 (String)</a></li>
<li><a class="reference internal" href="#lists">3.1.3. List(串列)</a></li>
</ul>
</li>
<li><a class="reference internal" href="#first-steps-towards-programming">3.2. 初探程式設計的前幾步</a></li>
</ul>
</li>
</ul>
<h4>上個主題</h4>
<p class="topless"><a href="interpreter.html"
title="上一章">2. 使用 Python 直譯器</a></p>
<h4>下個主題</h4>
<p class="topless"><a href="controlflow.html"
title="下一章">4. 深入了解流程控制</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">Report a Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.7/Doc/tutorial/introduction.rst"
rel="nofollow">Show Source
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>瀏覽</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模組索引"
>模組</a> |</li>
<li class="right" >
<a href="controlflow.html" title="4. 深入了解流程控制"
>下一頁</a> |</li>
<li class="right" >
<a href="interpreter.html" title="2. 使用 Python 直譯器"
>上一頁</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> »</li>
<li>
<span class="language_switcher_placeholder">zh_TW</span>
<span class="version_switcher_placeholder">3.7.0</span>
<a href="../index.html">Documentation </a> »
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 教學</a> »</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="footer">
© <a href="../copyright.html">Copyright</a> 2001-2018, Python Software Foundation.
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
Last updated on 8月 22, 2018.
<a href="../bugs.html">Found a bug</a>?
<br />
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.7.7.
</div>
</body>
</html>