文章程式碼顯示

2017年8月15日 星期二

一起學 Python - 00 :Python安裝 實現簡單猜數字遊戲



要使用Python , 首要當然是要在官網上下載主程式,版本選用與教學影片相同的Python  3.3.2,點擊右方的Download














點選下方連結可以直接下載windows 64位元版本
Windows X86-64 MSI Installer (3.3.2) [1] (sig) and Visual Studio debug information files (sig)




















安裝時的配置請將Add python.exe to Path選上





















待安裝完成後,點選IDLE(Python GUI)

























進入畫面長這樣(下圖),而這個介面是屬於交談式的,跟MATLAB指令列是一樣的東西(扯遠了)
在這個介面上我們可以直接與電腦溝通,例如輸入 3+5 當成計算機使用等等
(詳細更多的數值運算在一起學 Python - 04 :數值運算、布林運算再說明)














在此我們直接在 >>> 右方輸入以下的程式碼

print("Hello Python")

恭喜你就完成你的第一個Python程式了 !!















我們來理解一下發生了什麼事!
把這一句程式碼拆成兩個部分來看,分別是 print() 以及 "Hello Python" , print() 為 Python 裡面自帶的"函數";"Hello Python"是我們對老闆講的話,所謂的函數我們可以想像成是一個商店,只要我們跟商店裡的老闆點餐後,老闆就會依照格式烹調後出菜。

這裡讓我想到前幾年還在念書時,在校門口有一間賣蔥抓餅的店,老闆是一個退休軍人的阿姨。這阿姨很有趣,由於蔥抓餅店的客群都是學生居多,而且鄰近校門口,所以常常一次會有一大群學生來買,排隊人潮沒有少過。菜單就在招牌上大概有二三十種,所以當客人一多的時候阿姨就需要靠腦袋記住每一個人點了什麼餅,每個餅要不要辣之類的(辣還分 微辣 小辣 中辣 大辣),可想而知,當人一多時阿姨就記不得了。

於是這阿姨很有趣的在招牌菜單下額外加了一片版子




























(我發誓真的有這家蔥抓餅店位在台中靠山的區域,不是為了教學而瞎掰的啊)

假設我今天想要吃一個海鮮口味小辣的蔥抓餅,我就必須一字不漏的跟阿姨說 " 一個海鮮,小辣 " ,然後阿姨什麼反應也不會有,但你內心要相信他聽到了,默默的退後幾步站到後面等你的餅好。

常常會看到不知道該如何點餅的學弟妹們,被阿姨冷冷的說 "不賣" ,不然就是被說 "都讀到大學了看不懂字嗎?" 。我想要不是阿姨的餅真的是料多實在 ... 不然依阿姨這個性可能有點難做生意啊,但過了好幾年大家都知道阿姨的個性後,其實也覺得這是她的一個特色就是。

回到主題,由跟阿姨點蔥抓餅的故事我們知道,必須要一字不漏的依照阿姨訂下來的規矩,你才會得到你想要的東西。而對於所有的程式語言都是如此,你必須按照一定的規矩來進行程式碼的編寫,才可以成功的得到你想要的功能。

而 print 函數,事實上就像一家商店,你必須依照一定的規矩,才可以顯示出你要的文字。

實際要怎麼使用,其實很簡單! 首先我們要知道需要呼叫的函數名稱是什麼(也就是這家商店的名稱是什麼),在此就是 print 。
商店名稱後面的括弧 ( ) 代表我們準備要丟參數給 print() 商鋪了,也就是我們嘴巴(你要跟老闆點餐當然要用嘴巴說了)。
而丟給商鋪的內容,就必須放在括弧 () 裡面,在此我們用雙引號來將要說的話包裹起來 " Hello Python"。
如此一來蔥抓餅阿姨就聽得懂,print() 商鋪的老闆也知道你想要顯示文字 " Hello Python"了




然而在Python 3.3.2 Shell輸入程式碼,這樣的使用方式是存在缺點的

在計算機(電腦)的世界裡,輸入的任何一條指令都會串列執行,白話文就是一次執行一行指令,並且依序執行。

例如輸入3+5並且按Enter
電腦就會接收到這條指令,並且經過計算後回傳8

然而若使用這種交談式的窗口,無法方便的釐清自己的思緒,鳥瞰整個結構
(當然這種交談式窗口在後續還是會有其用處在,但在這為了不要增加負擔,先行略過)

在交談視窗按鍵盤 Ctrl+N 開啟一個完全空白的"腳本"(或稱模組)
在這個視窗中,你可以一次輸入很多行指令
而在執行(F5)這個腳本(模組)檔時,電腦會自動由上到下一條一條執行










從這開始就可以進入Coding的世界了 !
在空白的視窗內複製貼上以下的程式碼
這是一個猜數字的遊戲,做為大家第一個Python程式

print('我的第一個Python')
temp = input("輸入猜想的數字") #input回傳值至temp,且為字串
guess = int(temp) #將字串強制轉型為整數
if guess == 6 :
    print("猜對了")
else :
    print("猜錯了")











我假定大家都是一張白紙,解說一下程式碼的構成

首先我們需知道,如前所述,電腦在執行程式碼時遵循串列執行的原則,基本上是由第一行、第二行、第三行 ... 等的順序執行

讓我們解析一下上面這段程式碼做了什麼事

首先第一行
print('我的第一個Python')

調用函數print,其功用為印出後方括弧內的文字,加入單引號(或雙引號)將文字包起來

(在小甲魚教學影帶中有說到此為BIF(build-in function),也就是Python內建的函數,然而此處說的函數並不是數學上的f(x)這種函數,而是一個集成的概念。你不必知道他背後是怎樣幫你印出後方刮弧內的文字,只需要知道他可以幫你印出文字就夠了)

第二行
temp = input("輸入猜想的數字")

此處內含兩個概念
1. 調用input函數,其功用為讓使用者可以輸入數字

2. 賦值
將使用者輸入的數字放入等號左方的temp
等號的作用為賦值,也就是說起到連結的作用。將右方的內容丟給左方
一般而言我都將等號讀作"變為(成)",方便記憶

而在這就是將temp變成使用者輸入的數字(由input函數實現)

temp可以任意命名,你愛怎樣命名都可以,但不能以數字為開頭(此為許多程式語言共通的鐵則)

而因為左方的temp可以任意命名,也就是說他被賦予的內容是可變的,故我們會稱其為"變量"(值可以任意給予的量)

第三行
guess = int(temp)

此行為將左方變量guess變為temp且強制轉型為整數類型。
(其牽扯到數據類型的知識在一起學 Python - 01 :數據類型 字串vs整數vs浮點數再說明)

第四五六七行
if guess == 6 :
    print("猜對了")
else :
    print("猜錯了")

此處用到了C語言的條件判斷if ... else函數(如果...或)
事實上這個觀念很容易理解,以生活上口語來說
(此處在一起學 Python - 03 :判斷語句 if ... elif ... else 依學生分數判斷級距有更詳細的說明,剛上手的大家如果看不懂這裡可以先有個概念即可)

如果今天放晴,我們就出門;或(帶有否定意謂,也就是沒放晴),我們就不出門。 
一個判斷條件是否成立,以執行後續程式碼的概念。

將紅字部分轉變為程式碼

if 今天放晴 :
就 出門
else:
就 不出門

很明顯的"今天放晴"是一個條件判斷。else則替代了若沒放晴(在此例中很明顯的知道,放晴不放晴是一個有跟無的概念,也就是要麻有要嘛沒有)

將結構用以下的方式替代

if 條件:
就 結果1
else:
就 結果2

如此一來就簡單明瞭了,如果條件滿足就執行 結果1;反之執行結果2
回到第五行,可見guess == 6是條件。然而guess在第三行的時候被我們賦值了(為使用者輸入的數字)

此處的兩個等號,在程式語言裡面解釋為"等於",也就是說上面的程式碼變成了
(在一起學 Python - 02 :比較運算子、布林數據型態有更詳加的解釋)

if 使用者輸入的數字等於6 :
   print("猜對了")
else
   print("猜錯了")


為了整理思緒,整理一下從頭到尾發生什麼事。
程式開始執行後
1. 顯示出文字"我的第一個Python"
2. 等待使用者輸入數字
3. 判斷使用者輸入的數字是不是等於6
 3.1 若等於 顯示文字"猜對了"
 3.2 若不等於 顯示文字"猜錯了"


到此第一個程式的程式碼就理解完成了,按F5就可以執行腳本內的程式碼。














覺得稍有複雜的同學請別灰心,在文章中可以看到我在此教學系列上的編排,完全是依序排列。在此篇文章中有任何不懂的地方,耐心的依著順序一篇一篇慢慢來,跟上腳步一定可以學好的。

但在這想提醒大家,程式碼的部分雖然可以藉由複製貼上很容易的執行。但學程式就像畫畫或是算數學題一樣,用看的都覺得自己很能理解,但要自己從完全空白的腳本開始打一個完整的程式時卻腦筋一片空白,這是很多人到最後挫敗的點,務必自己動手打一次程式,就算是打一模一樣的照著打也無坊。

當然,如果可以藉由看完教學完全憑記憶打出來程式碼是在好不過的,不過一開始相信很多人做不到,這時不用太過勉強,開心學習放輕鬆。

↓↓↓ 連結到部落格方針與索引 ↓↓↓

Blog 使用方針與索引