第一章-用公式計算(Computing with Formulas)

通過和數學公式有關的例子,介紹變數(variable)、物件(object)、模組(module)和文字格式化(text formatting)相關的概念。

1.1-與程式設計的初遇:一個公式

用Python表達垂直自由落體公式y(t)=v_0t-\frac{1}{2}gt^2

較為完美的表達方式:

v0 = 5
g = 9.81
t = 0.6
y = v0*t - 0.5*g*t**2
print y
  • 加減乘除運算子分別為 + - * / ,冪次為**,比如,t的平方表示為t**2
  • 用程式的語言編寫程式,比如,輸出命令是print,不要寫成write
  • 運用變數,比如,v0、g、t和y,既容易修改引數,又簡潔美觀,便於查錯
  • 變數名區分大小寫,可由英文字母、下劃線和阿拉伯數字組成,但變數名不能用數字開頭
  • 變數名簡明扼要,不要過於冗長,也不要過於隨意,儘量運用待解決問題中自帶的名稱
  • 變數名不能用Python的保留名稱(Reserved Words),這些名稱具有特殊意義,比如:

               and, as,assert, break, class, continue, def, del, elif, else, except,                False, finally, for, from, global, if, import, in, is, lambda, None,                nonlocal, not, or, pass, raise, return, True, try, with, while

initial_velocity = 5
acceleration_of_gravity = 9.81
TIME = 0.6
VerticalPositionOfBall = initial_velocity*TIME - \
0.5*acceleration_of_gravity*TIME**2
print VerticalPositionOfBall
  • 在這段程式碼中,變數名過於冗長了,顯得很亂
  •  \ 表示程式換行,注意, \ 後沒有空白符
  • 註釋可以對程式進行補充說明,以 # 開頭,例如:
    v0 = 5 # initial velocity
  • 若程式出現了非英文字元,需在程式第一行加入以下程式碼,否則會報錯:
  • # -*- coding: utf-8 -*-

    雖然這段程式碼是 # 開頭,但是程式會執行

格式化輸出的兩種表示形式:

print ’At t=%g s, the height of the ball is %.2f m.’ % (t, y)
print ’At t={t:g} s, the height of the ball is {y:.2f} m.’.format(t=t, y=y)
  • 輸出結果的形式為:
At t=0.6 s, the height of the ball is 1.23 m.
  • 第一種表達中, '  ' 內表示要輸出的內容,其間的%是引數標記,會按照順序將最後括號內的變數值依次填入
  • 第二種表達中, '  ' 內表示要輸出的內容,期間由{x:y}替代%開頭的引數標記、
  •  '  ' 單引號可由 "  " 雙引號替代
  • %開頭的引數標記意義如下:
    格式 意義
    %s 一個字串
    %d 一個整數
    %0xd 一個整數,如果長度小於x,則在開頭補0,補足為止
    %f 帶6個小數的十進位制數
    %e 科學計數法,用e表示10的冪次,如,200表示為2e+2
    %E 科學計數法,用E表示10的冪次,如,200表示為2E+2
    %g 長度較長時,則用科學計數法,用e表10的冪次;較短則不用
    %G 長度較長時,則用科學計數法,用E表10的冪次;較短則不用
    %xz 若z的長度小於x,則在開頭補空格,補足為止
    %-xz 若z的長度小於x,則在末尾補空格,補足為止
    %.yz 使z小數點後有y個數
    %x.yz 使z小數點後有y個數,若長度不超過x,則在開頭補空格,不足為止
    %% 表示%本身
  • 若在輸出中需要換行,有兩種表達方式:
print """y(t) is
the position of
our ball."""
print ’y(t) is\nthe position of\nour ball’

1.2-計算機科學術語

待續