基本 Python 玩具

熟悉語法請在 ipython 上練習, 效果最好。

類似的工具還有 bpython 跟dreampy 或是開啟了自動完成的 python console,但如果用沒有調整過的的 Python Shell, 那實在不酷了。

pip install ipython

安裝完以後,你在 command line 上就得到 ipython

Python 2.7.6 (default, Sep  9 2014, 15:04:36)
Type "copyright", "credits" or "license" for more information.

IPython 2.3.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]:

這是變數的概念

a = 10
a

請記住上面的語感,建立一個數字物件 10, 把 a 這個標籤貼到 10 這個物件上。

玩一下數學

1+1
a * 2
a ** 3

猜一下怎麼做開根號?

a**0.5

字串是個物件

a = "tim"
a.upper()

list

a = ['1','2','3']
a

"tim" 會建立字串物件,[1, 2, 3] 會建立 list 物件,然後讓初始值有三個數字。有一些類別太常使用,以及為了讓程式碼增加可讀性,會讓某些物件的建立方法不一樣跟上一張講的不一樣。 下面列出相等的寫法:

a = ['1','2','3']
b = list('123')
a == b

更多基本的 tutorial, 請先參考 Django Girls Taipei 的文件

練習題

Recursion 的美妙

def fib(order):
    if order < 2:
        return order
    else:
        return fib(order-1) + fib(order-2)

for i in range(10):
    print fib(i)

#0
#1
#1
#2
#3
#5
#8
#13
#21
#34

請講講看這程式在做什麼?上面化成比較數學的寫法如下:

  • fib(0) = 0
  • fib(1) = 1
  • fib(n) = fib(n-1) + fib(n-2)

那有一個組合數學的公式,請你回憶或是推導一下,用類似的方式做出來。

  • C(n,r) = C(n-1,r-1) + C( n-1, r)
  • C(n,n) = 1
  • C(n,1) = n
  • C(n,r) = 1 if r > n

這裏的 C是 Combination, 組合的意思。從 n 個橘子取 r 個橘子出來有幾種組合。

算一個數是不是質數

請先從基本定義著手

人肉積分

一樣是基本定義

def anonymous(x):
    return x**2 + 1


def integrate(fun, start, end):
    step = 0.1
    intercept = start
    area = 0
    while intercept < end:
        intercept += step
        ''' your work here '''
    return area

print(integrate(anonymous, 0, 10))