2019年5月21日 星期二

Python 自學方案- Step(三)

另一個迴圈指令 While ,它的基本形式如下

while 判断條件:
    執行命令……

滿足 while 判断條件時,才會執行While回圈內的指令,例如

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=1
>>> while a<5: font="">
...     print(a)
...     a=a+1
...
1
2
3
4
>>>

當a 小於5時才會執行 print(a)  及 a=a+1
上面幾行程式就等於

>>> for i in range(1,5,1):
...     print(i)
...
1
2
3
4
>>>

由for 與while的例子可以發現,for的控制條件:包含初始值、讓迴圈結束的條件、更新值,通常都是寫在同一行裡面的。while則會將這些控制項,分散至迴圈內外。

迴圈有兩個命令來跳過循環:continue 及 break,continue 指令用來告訴Python跳過當前循環,然後繼續進行下一輪迴圈。break 則是用於跳出迴圈

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> i=0
>>> while i<10: font="">
...     i=i+1
...     if i% 2 ==0 or i==5:
...             continue      #如果i是偶數或是5,執行continue
...     print("value= ",i)
...
value=  1
value=  3
value=  7
value=  9
>>>

2019年5月20日 星期一

Python 自學方案- Step(二)

迴圈 For,重複執行某些指令時就可以利用For來實現

「for」和「in」是 Python 的關鍵字,兩者之間可以放置使用者自訂的變數,而「in」後則可接一個序列 (Sequence),串列 (list)、字串 (str)、元組 (tuple) 等皆是序列的一種。表示方式如下

for iterating_var in sequence:
         statements(s)
         break
else:

迴圈會依序從序列取得元素,並將元素指定給前面自訂的變數(此例為iterating_var),再執行迴圈裡的內容,直到序列每一元素都被取出過為止。
break 指令是強制由for迴圈跳出
else : else 中的指令在循環正常執行完(即 for 不是通过 break 跳出而中斷的)的情况下執行
例如下列在Python shell 中輸入下列指令

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(5):    
...     print(i)
...
0
1
2
3
4

上面有使用到range()函数,range()可建立一个整數列表,一般用在 for 循環中
語法:range(start, stop[, step])
start:計數從 start 开始。沒指定數字初始值從 0 開始。例如range(5)等於range(0,5);
stop:計數到 stop 结束,但不包括 stop。例如:range(0,5)是[0, 1, 2, 3, 4]没有5
step:階層,沒指定數字初始值為1。例如:range(0,5)等於 range(0, 5, 1),step 也可以為負值

>>> for i in range(5):
...     print(i)
...     break
...
0

迴圈中出現break,就會強制跳出(結束)迴圈,所以只顯示第一個數字 0



>>> for i in range(5):
...     print(i)
... else:
...     print("Print OK!!")
...
0
1
2
3
4
Print OK!!

迴圈中使用 else: 其實也可以不需要,只要將要執行的指令寫在 迴圈外,也可以達到相同效果

使用雙重迴圈,來寫九九乘法表,如下:

for i in range(1,6):           #把6改成10
  for j in range(2,6):          #把6改成10
x=i*j
print(j , "X" , i , "=", x,end="\t")  #用Tab來區隔,避免擠在一起
  print()


C:\> python test2.py

2 X 1 = 2       3 X 1 = 3       4 X 1 = 4       5 X 1 = 5
2 X 2 = 4       3 X 2 = 6       4 X 2 = 8       5 X 2 = 10
2 X 3 = 6       3 X 3 = 9       4 X 3 = 12      5 X 3 = 15
2 X 4 = 8       3 X 4 = 12      4 X 4 = 16      5 X 4 = 20
2 X 5 = 10      3 X 5 = 15      4 X 5 = 20      5 X 5 = 25

一個階梯程式,每迴圈一次就增加一個 *
y="*"
for i in range(0,10):         #0~9階
print(y," ",i+1)         #顯示 * 及數字
y=y+"*"                   #增加一個* ,放進變數 y

如下:

C:\> python test3.py

*   1
**   2
***   3
****   4
*****   5
******   6
*******   7
********   8
*********   9
**********   10


另一個階梯程式,增加一個縮排階梯
y="*"
for i in range(0,10):         #設定0~9階
print(y)                    #顯示 *
y=y+"*"                  #增加一個* ,放進變數 y

for j in range (9,0,-1):    #設定9~1階,每次-1
print(y[0:j])           #顯示 *


C:\> python test4.py

*
**
***
****
*****
******
*******
********
*********
**********
*********
********
*******
******
*****
****
***
**
*



Python 自學方案- Step(一)

學第一個程式 都是在螢幕上顯示Hello Word,Pythom的指令就是 Print。
Print 顯示結果或是訊息在畫面中
例如
在python shell (命令提示字元) 中輸入 print (“Hello Word!”) 如下
     
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello World!")
Hello World!
>>>

在命令列中輸入 help(print) ,可以得到print的語法,如下:
     
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

>>>

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
value -- 值,表示可以一次輸出多個對象。輸出多個對象時,需要用 , 分隔。
sep -- 用來間隔多個對象,默認值是一個空格。
end -- 用來設定以什麼結尾。默認值是換行符 \n,我們可以換成其他字符串。
file -- 要寫入的文件對象。

Print 換行指令
1. \n : 換行,換行把游標先移到行首然後換到下一行,也就是下一行的行首
2. \r : 返回,不換行,回到本行行首這就會把這一行以前的輸出覆蓋掉
3. \t : 定位,在本行中插入一個定位字元

可以寫一個小程式test.py來測試一下:
找一個寫程式用的文字編輯器: Notepad++、記事本將下列指令存成檔案名為 test.py
在命令提示字元中輸入 python test.py 即可執行程式

print("1. Hello World!!!")
print("2. Hello World!","Hello")
print("3. Hello World!","\n","Hello")
print("4. Hello World!","\nHello")
print("5. Hello World!","\r","Hello!Hi")
print("6. Hello World!","\rHello!Hi")
print("7. Hello World!","\t","Hello")
print("8. Hello Worlf!!!",end='')
print("9. How are you?")

C:\> python test1.py
1. Hello World!!!
2. Hello World! Hello
3. Hello World!
 Hello
4. Hello World!
Hello
 Hello!HiWorld!
Hello!Hi World!
7. Hello World!          Hello
8. Hello Worlf!!!9. How are you?

1. 直接用print 將1. Hello World!!!顯示於螢幕上
2. 用 ',' 將兩個文字合併成一個
3. ,"\n" , 在兩個文字間插入一換行符號,Hello 會顯示在第2行,且前方會多一個空格
4. 將 \n放在Hello字串內,Hello 會顯示在第2行,且前方不會多一個空格
5. ,"\r" , 在兩個文字間插入一Reture符號,Hello!Hi 會將第一行由第一個字元覆蓋,且前方會多一個空格
6. 將 \r放在Hello!Hi字串內,Hello!Hi 會將第一行由第一個字元覆蓋,且前方不會多一個空格
7. ,"\t", 會在Hello World! 與 Hello之間插入一個TAB
8. end=''表示結尾是空白,不帶任何符號,所以 How are you? 會直接接在後面顯示

2019年5月19日 星期日

Python 自學方案- Step(零)

要學Python,當然要先安裝Python
Python 官網網址:https://www.python.org/

安裝完後就是撰寫程式的開始啦,撰寫Python程式有下列幾種方式:
1. Python內建IDE,執行畫面如下
可以利用Options >> Settings 將字型改成等寬字型 (Consolas),這樣程式看起來會比較順眼,每個字都能對齊

2. 使用Windows 或是Linux 內建的 命令提示字元 或是 Terminal (終端機),只要在命令提示字元中執行Python即可,如下 只要看到 >>> 符號,就可以輸入Python 程式碼。
如要離開編輯環境,只要輸入exit() 並按 Enter,以退出 Python shell,回到原本的提示列。
或是 使用編輯軟體 也可編輯Python 程式,只要將副檔名存成.py 即可,例如:test-001.py
編輯軟體可以使用Notepad++來取代記事本
網址:https://notepad-plus-plus.org/zh/
Download 連結:https://notepad-plus-plus.org/repository/7.x/7.6.6/npp.7.6.6.Installer.exe
Notepad++ 支援Python 語法
另外也可以用 Spyder,Spyder是一個使用Python語言的開放原始碼跨平台科學運算整合開發環境,詳細介紹可以參考維基百科:https://zh.wikipedia.org/wiki/Spyder

Spyder官網:https://www.spyder-ide.org/
Download連結:https://www.anaconda.com/distribution/

2017年4月15日 星期六

Ubuntu 17.04 Zesty Zapus Release

Ubuntu 17.04 在2017-04-13正式Release,代號已經到英文字母最後一個字『Z』,代號名稱:Zesty Zapus 熱情的美洲林跳鼠。
ubuntu-17.04-desktop-amd64.iso 下載路徑:http://ftp.ubuntu-tw.org/mirror/ubuntu-releases/17.04/ubuntu-17.04-desktop-amd64.iso

ubuntu-17.04-desktop-i386.iso 下載路徑:http://ftp.ubuntu-tw.org/mirror/ubuntu-releases/17.04/ubuntu-17.04-desktop-i386.iso

安裝步驟如下,每一個發行版本安裝順訊都一樣
依據需求,先選擇語系:中文繁體
直接安裝,後續有需要再自行安裝其他軟體
直接安裝整顆硬碟

選擇地區(時區)
選擇鍵盤排列方式
建立帳號與密碼
正是安裝開始
經過不算短的時間【約30分鐘】
安裝完成,重新開機
萬年不變的Ubuntu桌面與桌布
一樣內建 Python 2 及 Python 3.5
確認 核心版本,使用的是 linux kernel 4.10
$ uname -a
Linux dinohsieh-VirtualBox 4.10.0-19-generic #21-Ubuntu SMP Thu Apr 6 17:03:14 UTC 2017 i686 i686 i686 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 17.04
Release: 17.04
Codename: zesty


$ cat /proc/version
Linux version 4.10.0-19-generic (buildd@lcy01-01) (gcc version 6.3.0 20170321 (Ubuntu 6.3.0-10ubuntu1) ) #21-Ubuntu SMP Thu Apr 6 17:03:14 UTC 2017

FireFox 使用版本:52.0.1
LibreOffice 使用版本是 5.3
Ubuntu軟體市集,可以安裝你想要的軟體

一樣沒有中文輸入法
所以還是要來安裝注音輸入法!!!!

跟Ubuntu 15.04 /15.10一樣採用fcitx做為預設,這時請直接點左欄的齒輪,進入系統設定,點選「語言支援」。
進入「語言支援」後,會提示您要把中文語系相關的套件補齊,就直接補齊吧
-------這段直接照抄借用Ubuntu 15.04 / 15.10
請參閱:http://dinohsieh.blogspot.tw/2015/10/ubuntu-1510-wily-werewolf-release.html
安裝完【語言支援】後,直接登出再登入即可
登入後,再到右上角鍵盤圖案進行數入法設定
這時就可以把自己常用的中文輸入法加進來
這邊是選擇【新酷音】輸入法