段譽比劍:《誰說不能從武俠學程式》選摘(1)

2022-09-08 05:10

? 人氣

誰說不能從武俠學程式?(資料照)

誰說不能從武俠學程式?(資料照)

《天龍八部》第四十二回,段譽和慕容復在少室山上比武。慕容復又是使劍,又是用刀,又是拿出判官筆,連續更換幾種兵器。段譽呢?始終以一雙空手發射劍氣,用無意中學會的段家絕學「六脈神劍」對抗。原文說:

[啟動LINE推播] 每日重大新聞通知

這商陽劍的劍勢不及少商劍宏大,輕靈迅速卻遠有過之, 他食指連動,一劍又一劍的刺出,快速無倫。使劍全仗手腕靈活,但出劍收劍,不論如何迅速,總是有數尺的距離,他以食指運那無形劍氣,卻不過是手指在數寸範圍內轉動,一點一戳,何等方便?何況慕容復被他逼在丈許之外,全無還手餘地。段譽如果和他一招一式的拆解,使不上第二招便給慕容復取了性命,現下只攻不守,任由他運使從天龍寺中學來的商陽劍法,自是占盡了便宜。

段譽沒有正經學過武功,刀劍和拳腳一竅不通,如果一招一式與慕容復對打,很快會死在慕容復手下;如果只攻不守, 自顧自地將六脈神劍練一遍,慕容復反倒會被他的無形劍氣逼得手忙腳亂。段譽明不明白其中道理?當然明白,當時他腦子裡必定形成這種邏輯:

如果見招拆招,那麼結局是輸。

如果不見招拆招,那麼結局是贏。

以上邏輯可用Python 語句表達:

if 見招拆招: 

結局 = 輸

else: 

結局 = 贏

if... else... 句式叫做「判斷語句」,又叫「選擇語句」, 是所有高階程式設計語言都有的句式,也是程式設計時經常用到的句式。

當然,由於使用中文變數「結局」和中文運算式「見招拆招」,上述代碼無法運行,只能用於描述程式設計思路或程式結構。這類描述性代碼在設計程式方案時常常用到,被稱為「虛擬碼」,又稱「偽代碼」。真正動手程式設計時,我們將虛擬碼轉化成符合Python 語法規範的代碼:

if defense == True: 

result = 0 

else: 

result = 1 

defense 是「防守」的英文形式,意思接近於「見招拆招」。result 是「結果」的英文形式,意思接近於「結局」。這四行代碼裡創建defense 和result 兩個變數,且規定defense 是布林型變數,有True 和False 兩個值;result 是整型變數, 有0 和1 兩個值。

defense 的值為True,意思是段譽選擇見招拆招;defense 的值為False,表明段譽回避見招拆招;result 的值為0,表明段譽敗給慕容復;result 的值為1,意思是段譽贏了慕容復。

代碼裡有等號=,還有雙等號==,這兩種等號擁有不一樣的功能。在Python 語言中,= 叫做「賦值符號」,用來給變數賦值;== 叫做「比較符號」,用來比較左右兩邊的變數是否相等。if defense == True,就是讓直譯器或編譯器做比較,比較布林變數defense 是不是等於True。如果等於True, 則result = 0,將整型變數result 賦值為0。否則執行else 下面的語句result = 1,將整型變數result 賦值為1。

關鍵字:
風傳媒歡迎各界分享發聲,來稿請寄至 opinion@storm.mg

本週最多人贊助文章