Python基礎語法篇#1
註解--寫給自己看和別人看的
註解雖然會出現在程式碼裡面,但是並不會被執行,是個很適合為程式新增說明的手段
也以防萬一金魚腦不記得在寫甚麼。
在Python中,寫在#
後面的文字,都會變成註解。
很重要!很重要!很重要!
變數---絕大多數typeError的問題根源
變數?意思指的是幫資料取個名字,然後再塞資料儲存進去,有點像是資料夾的概念
在程式中,每個變數會有自己的型別。那型別是什麼呢?
簡單來說,型別決定了這個變數可用來儲存什麼樣格式的資料,並且定義了相對應的操作。
簡單舉例,Python中常見的基本型別有:int (整數)
、float (浮點數--小數)
、str (字串)
從上述你大概可以知道,假設儲存年紀,整數會是不錯的選擇
BMI? 浮點數看來不錯
商品名稱? 字串是最佳首選
在Python中,宣告變數並不用事先給定型別,他會依照你給他的初始值來決定變數的型別。
接下來看看範例吧~
變數雖然能儲存資料,但資料有很多種類型、所以就會有資料型態(Type)。
補充的點:
- 我們可用
=
來給定變數初始值 - 我們可用
type
這個函式以及print
來得知變數的型別 - 如果想要確認某變數是否為特定型別的時候,可用
isinstance
這個函式
基礎運算--數學運算的概念
就加減乘除但有多一點東西...,我也說不了甚麼...,直接看範例吧~
運算的禁忌!!!
事實上在程式語言的基本,我們是不能把不同類型的東西拿來做運算的
譬如你寫下圖中程式碼
解決方案很簡單,將其中之一的型態轉換成與另一同一型態
語法: int(), str(), float() ,需注意的是"a is"並不能轉成int或float(換言之就是字元)
貼心小提醒:注意看上面兩張圖片,一個我用","做區隔,另一個則用"+",這是不同的打法
進階運算--平方根、絕對值等等
函數--可拆成三個部分,比喻一下
- 技能名稱:像是 abs() ,就是絕對值,需使用時打上abs()即發動技能
(翻開覆蓋的陷阱卡) - 參數(技能所需之資料--
類似於魔力):像絕對值這種技能是不可能單獨執行的,因為沒傳入東西不知道對誰做絕對值,因此需用()來丟入需要資料 - 回傳值 (回傳答案): 像 abs 做完就會有一個答案,但是像 print 這種技能是沒回傳答案的 (就像印表機,一直印一直印,你不會停下來等答案,因為很麻煩)
補充:
- abs(x) 絕對值
- ceil(x) 比 x 大的最小整數
- floor(x) 比 x 小的最大整數
- pow(x, y) x 的 y 次方
- round(x [,n]) 四捨五入,如果有帶入第二個參數,則會四捨五入到那個位數
- sqrt(x) x的平方根
邏輯運算子
x < y
X是否【小於】Yx <= y
X是否【小於等於】Yx > y
X是否【大於】Yx >= y
X是否【大於等於】Yx == y
X是否【等於】Yx != y
X是否【不等於】Y
布林運算子
- true 真的
- false 假的
- and 且
- or 或
- not 非
If-elif-else 流程控制
別跟我說你看不懂,日常上有用到很多if-else式,
比如說 if 我今天要考試,那我要重新複習筆記,沒有 -- elif 但有作業,我要先寫完作業,還是沒有-- else 那我要去睡覺了
就有點像是這樣,if 後如果有還有那就一直用 elif 直到最後一個才要用 else
白話文 -- 達成條件要做A,未達成要做B。
這時候我們就可以用if...else
來做到這件事情。
上述的例子中,有幾件事需要特別注意:
- 一個
if...else
區塊,只要其中一個條件成立,程式就會離開這個區塊。(像是多選題) - 條件不需要放
()
之中 - 每個條件後面記得要有
:
- 條件成立要做的事情,要以縮排的方式放在條件句底下 -- 很重要
else if
在Python寫作elif
縮排 (indentation) 是 Python 區分程式區塊 (block) 的方式,所謂程式區塊是程式中具有特定功能之處,程式區塊依據條件真或假的結果個別執行。所謂縮排也就是在程式碼開頭的地方多出一些空格數,大多會用 2 到 6 個空格之間,通常縮排的空格數為 4 個。
所以要縮排按(Tab)或按空格,擇一即可,不要tab跟空格混用,可能會報錯。
後期會很常用到喔! 要熟練
input -- 程式與外界使用者溝通的方法
python 3.x 的版本是用input,python2.x 則是raw_input
input的功能是讓使用者所有輸入的資料會被當成字串儲存起來,需要時再作轉型。
#請空格輸入,如1 2後按enter x1,y1 = map(int,input().split()) x2,y2 = map(int,input().split()) time = eval(input()) x3 = (x2-x1)*time+x1 y3 = (y2-y1)*time+y1 print("(",x1,",",y1,")") print("(",x2,",",y2,")") print("predict the coordinates is (%d,%d) in the %d second" %(x3,y3,time))
map(fun,seq)方法簡單的說就是用fun這個功能函數去依次作用於序列seq中的每個元素,然後返回一個可迭代對象。(我知道你還是看不懂)所以把它拆成 input().split()看,這句的意思是可以用空格來輸入多個值進去
應該看懂得了吧,eval(input())講白話點就是將輸入值轉換成合適的型態,以防有時打數字1結果type是str的狀況。上圖最後一行程式碼,遇到的問題,可以用map(int,input().split())強制轉成int,但一樣"a is"這類的都不行,"1"可以。
結束~恭喜看到這邊的你,滿滿的程式碼看得很煩躁,但要撐住,後面會更多、更雜。
寫這種文很耗精力,希望你有認真看完,謝謝你