本篇將 Python 2 相關內容預設為隱藏,若需在顯示與隱藏間相互切換請點這裡

我們首先來印出固定的少量內容。這在 Python 當中非常簡單,以下範例會在螢幕上印出「Hello World!!」:

print('Hello World!!') # 印出一些東西

要執行這段程式碼,你可以先在 cmd 當中先開啟 Python 後輸入程式碼,再敲下 enter 來執行;或者將這段程式碼存成一個副檔名為 py 的純文字檔,例如 hello.py,然後在 cmd 當中,用「python hello.py」的方式執行。其中:

另外,若是在 Python 2 當中,應該寫成:

print 'OAO'

或者:

from __future__ import print_function
print('OAO')

第一行的 import,主要用於使用外掛功能。較細節的說明,之後會另外介紹

Question:下列程式片段,有哪些語法錯誤?

Print "Hello World!!'

目前為止,已經能輸出大部分的固定內容,而程式中的資料,若要能隨著使用者輸入或者運算結果等狀況改變時,則需要用變數來儲存。變數是記憶體裡面的一塊空間,可以用來存放資料,而變數命名時,必須遵循下列的命名規則:

Question: 下列哪些變數名稱合法?

將資料塞進變數當中的方法,是使用「=」(指派運算子),例如程式敘述「a = 2」的結果,就是讓變數 a 的值為 2。以下範例會計算一些整數相加的結果:

a = 1
b = 2
c = a + b + 3
print(c) # 因為是單純印出變數的內容,所以不用加引號

在上述範例中,運算子左右不一定要加空白;但是為了方便閱讀程式,通常會如同範例顯示那樣的加上空白。

以下將基本的運算子稍做整理:

運算子之間,會遵守優先順序,例如先乘除後加減,以及括號先算等等;而優先層級相同時,則一般來說是由左到右運算。另外要注意的是,變數一旦被指派了新的值,則舊的值會永遠消失。例如先寫了「a = 1」的敘述,而後面又接著「a = 2」,則此時的變數 a 的值,會由 1 變成 2。以下簡單展示幾個使用運算子的範例。

四則運算時,是先乘除後加減,若你希望加減先算,則要明確地加上括號。你可以比較看看以下兩組算式的結果:

print( 12 * (18 - 15) * 17 )
print( 12 * 18 - 15 * 17 )

print( 560 * (1 + 0.3 + 0.2) )
print( 560 * 1 + 0.3 + 0.2 )

優先層級相同時,則一般來說是由左到右運算,若你希望右邊先算,則也要明確地加上括號。你可以比較看看以下兩個算式的結果:

a = 3000
b = 12
c = 15
print( a / (b * c) )
print( a / b * c )

依此類推,例如三個整數取平均的計算,可以寫成如下:

a = 1
b = 2
c = 3
d = (a + b + c) / 3

# 變數跟固定文字混在一起印的方法很多,以下是其中兩種,其中的雙引號皆可換成單引號
print(f"Avg of {a}, {b}, and {c}: {d}")
print("Avg of {}, {}, and {}: {}".format(a, b, c, d))

次方的運算順序不太一樣,在 Python 是依照數學上的定義,從右邊運算;因此若你希望左邊先算,則也要明確地加上括號。你可以比較看看以下幾個算式的結果:

print( 2 ** 2 ** 2 ** 2 ) # 預設順序
print( 2 ** (2 ** (2 ** 2)) ) # 右邊先算
print( ((2 ** 2) ** 2) ** 2 ) # 左邊先算

書寫數學式時,我們習慣省略乘號,但在 Python 中,仍然必須寫出乘號,否則會出現語法錯誤,如下:

a = 3
b = 2
print(2 * a)
print(3b) # 這行會產生語法錯誤

Question: 兩行 print 分別會印出什麼?

a = 1
a = a + 1
print(a)
b = a + 1
a = a + 1
print(a, b)

在前面幾個範例中,除法的結果都恰好是整數,如果在數學上有小數的話,那麼在程式語言中,我們可以利用不同的運算符號,讓程式計算是否捨去小數的結果

a = 8 / 3
b = 8 / 4
c = 8 / 5
print(a, b, c)
a = 8 // 3
b = 8 // 4
c = 8 // 5
print(a, b, c)

在上述範例中,一個斜線會保留小數,兩個斜線會往負的方向取整數;而在 Python 2 當中,則都是往負的方向取整數。但當你在 Python 2 中使用了「from __future__ import division」之後,就又會跟 Python 3 一樣

在 Python 語言中,餘數的正負號會與除數相同,即 a % b 相當於計算 a - a // b * b。以下是用「%」符號求餘數的範例:

print(15 % 4)
print(-15 % 4)
print(15 % -4)
print(-15 % -4)

關於其他一些的 print 使用與其格式控制,範例如下。其中,三個引號是多行字串,但也可以當作多行註解使用:

''' 以下為了讓不同格式間的輸出效果更明顯,
    因此在前後都加上底線來輔助顯示 '''
print('__{:5d}__'.format(123))  # 靠右輸出 5 位整數,前方空白
print('__{:05d}__'.format(123)) # 靠右輸出 5 位整數,前方補 0
print('__{:10.2f}__'.format(12345.678))  # 靠右輸出浮點數,總共 10 位,小數點部分 2 位。輸出結果會被四捨五入

若要接收使用者輸入的變數,則可使用 input 函式(目前,我們只先介紹一次讀取一個數字的方法)。以下是兩個整數相加的範例,為了避免次一行程式被當成這一行的輸入,請存成 py 檔,或者逐行執行:

a = input('Please enter 1st number: ')
b = input('Please enter 2nd number: ')
print(a + b)

你可能會發現結果跟預期的不太一樣,這是因為輸入的內容被當成一般文字,而加號在此種情況下的行為是文字的連接。若要修正,可以進行如下的幾種修改之一:

a = int(input('Please enter 1st number: '))
b = int(input('Please enter 2nd number: '))
print(a + b)

a = input('Please enter 1st number: ')
b = input('Please enter 2nd number: ')
a = int(a)
b = int(b)
print(a + b)

a = input('Please enter 1st number: ')
b = input('Please enter 2nd number: ')
print(int(a) + int(b))

當然,如果你希望輸入小數,並進行小數的運算,則把「int」改為「float」就可以達成目標。另外,若使用 Python 2,則會自動判斷輸入的類型;但是像上述範例這樣明確地寫出要使用整數運算,仍會對釐清程式的運作細節有幫助。

Question: 下列修改方式是否可亦可達到進行整數相加的效果?為什麼?

a = input('Please enter 1st number: ')
b = input('Please enter 2nd number: ')
print(int(a + b))

Question: 如果你想進行小數運算,但是「剛好忘記」把 int 改成 float,會發生什麼事?為什麼?請觀察結果並試著解釋。