2019年5月29日 星期三

Python 自學方案- Step(五)

python 數值運算,常用的運算符號
  • 加 - 兩個對象相加
  • - 減 - 得到負數或是一個數減去另一個數
  • * 乘 - 兩個數相乘或是返回一個被重複若干次的字串
  • / 除 - x除以y
  • % 餘數 - 返回除法的餘數
  • ** 次方 - x的y次方
  • //  取整除 - 返回商的整數部分
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.
>>> x=400
>>> y=100
>>> z=20
>>> a=8
>>> b=x-y/z*8
>>> print(b)
360.0
>>>
>>> print(6/2*(1+2))
9.0
>>>

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.
>>> a=35
>>> b=20
>>> c=0
>>> c=a+b
>>> print (c)
55
>>> c=a-b
>>> print(c)
15
>>> c=a*b
>>> print(c)
700
>>> c=a/b
>>> print(c)
1.75
>>> c=a%b
>>> print(c)
15
>>> a=3
>>> b=4
>>> c=a**b
>>> print(c)
81
>>> a=32
>>> b=5
>>> c=a//b
>>> print(c)
6
>>>  

文字運算,文字也可以使用運算符號。例如

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.
>>> a="Test"
>>> b=a*2
>>> print (b)
TestTest
>>> b=b+a
>>> print(b)
TestTestTest

也能使用下列運算方式
  • += 加法賦值運算 c += a 等效於 c = c + a
  • -= 減法賦值運算 c -= a 等效於 c = c - a
  • *= 乘法賦值運算 c *= a 等效於 c = c * a
  • /= 除法賦值運算 c /= a 等效於 c = c / a
  • %= 取模賦值運算 c %= a 等效於 c = c % a
  • **= 冪賦值運算符 c **= a 等效於 c = c ** a
  • //= 取整除賦值運算 c //= a 等效於 c = c // a
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.
>>> a=35
>>> b=20
>>> c=0
>>> c=a+b          #C=55
>>> c+=a           #c=c+35 = 90
>>> print(c)
90
>>> c*=a           #c=c*35
>>> print(c)
3150
>>> c/=a           #c=c/a
>>> print(c)
90.0
>>> c=2
>>> c%=a           #c=c%a
>>> print(c)
2
>>> c**=a          #c=c**a = c**35
>>> print(c)
34359738368
>>> c//=a          #c=c//a
>>> print(c)
981706810
>>>

Python比較運算

以下假設變數 a為5,變數 b為6:
  • a==b 等於 - 比較對像是否相等 (a == b) 返回 False。
  • a != b 或是 a <> b 不等於 - 比較兩個對像是否不相等 (a != b) 返回 true.
  • a > b 大於 - 返回x是否大於y (a > b) 返回 False。
  • a < b 小於 - 返回x是否小於y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。 (a < b) 返回 true。
  • a >= b  大於等於 - 返回x是否大於等於y。 (a >= b) 返回 False。
  • a <= b 小於等於 - 返回x是否小於等於y。 (a <= b) 返回 true。
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.
>>> a=5
>>> b=6
>>> print(a==b)
False
>>> print(a!=b)
True
>>> print(a>b)
False
>>> print(a
True
>>> print(a<=b)
True
>>>

Python邏輯運算
Python支持邏輯運算,假設變數 a為5,變數 b為6:
  • and :x and y ,如果 x 為 False,x and y 返回 False。 (a and b) 返回 5。
  • or :x or y ,如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 (a or b) 返回 5。
  • not :not x,如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 not(a and b) 返回 False
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.
>>> a=2
>>> b=5
>>> print(a and b)
5
>>> print(a or b)
2
>>> a=0
>>> print(a and b)
0
>>> print(a or b)
5
>>>

2019年5月27日 星期一

Windows 10 1903 upgrade

眾所期待的半年度更新 Windows 10 1903 終於上線了!Windows 10 使用者現在可以透過 Windows Update 立刻檢查、下載並安裝「May 2019 Update」(即 Windows 10 1903),但是隨便更新有風險,請詳細閱讀微軟說明。
這次更新覺得還好,但是又不得更新,因為微軟將於 2019 年 11 月 12 日終止支援的 Windows 10 1803
下載網址:https://www.microsoft.com/zh-tw/software-download/windows10
安裝後的桌面如下,看起來很清爽
主要是增加一些布景主題
在輸入時 按下 WIN Key + . 會出現 顏文字
增加這個就有點無言....可以增加一些比較有用的功能嗎??

登入選項就增加不少方式

驗明正身,確定是 1903


2019年5月22日 星期三

Python 自學方案- Step(四)

python變數使用無需事先宣告,但是必須先給予值,如果沒事先給值就直接使用變數,就會出現錯誤並告知尚未定義變數,如下:

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.
>>> x # 嘗試使用一個未定義的變數
Traceback (most recent call last):
  File "", line 1, in
NameError: name 'x' is not defined
>>>

Python的字串可以使用雙引號或單引號包覆

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=12
>>> b=12.3
>>> c="Hello World"
>>> d=True
>>> e=a*b

Python內建型態的資料型態有以下幾種

  • 數值型態(Numeric type) - int, float, bool (python 3.7沒有Long型態,由int取代)
  • 字串型態(String type)
  • 容器型態(Container type) - list, set, dict, tuple

可以用type()函數來確認目前變數型態,如上述變數 a~e

>>> type(a)
〈class 'int'〉
>>> type(b)
〈class 'float'〉
>>> type (c)
〈class 'str'〉
>>> type(d)
〈class 'bool'〉
>>> type (e)
〈class 'float'〉
>>> 

有時候,需要對資料內置的類型進行轉換,資料類型的轉換,只需要將資料類型作為函數名即可。

  • int(x) 將x轉換為一個整數。
  • float(x) 將x轉換到一個浮點數。
  • complex(x) 將x轉換到一個複數,實數部分為 x,虛數部分為 0。
  • complex(x, y) 將 x 和 y 轉換到一個複數,實數部分為 x,虛數部分為 y。x 和 y 是數字運算式。

>>> a=12.55
>>> b=int(a) #將a轉成Integer(整數)
>>> print(type(b),"= ",b)
=  12 #轉成整數後小數點會被無條件省略
>>> 
>>> c=float(b) # 將b整數轉為浮點數
>>> print(type(c),"= ",c)
=  12.0 #轉成整數後小數點會自動帶出
>>>

文字轉數字,除非文字本身都是數字型態,否則會出現錯誤訊息,如下

>>> a="0123456789"
>>> b=int(a)
>>> print(b)
123456789
>>> a="abcd"
>>> b=int(a)
Traceback (most recent call last):
  File "", line 1, in
    b=int(a)
ValueError: invalid literal for int() with base 10: 'abcd'
>>> a="1234qwer"
>>> b=int(a)
Traceback (most recent call last):
  File "", line 1, in
    b=int(a)
ValueError: invalid literal for int() with base 10: '1234qwer'
>>>  

0123456789的文字可以正常轉換為整數 123456789
但是 abcd 以及 1234qwer,因帶有文字所以無法轉換,出現錯誤訊息

變數不使用,也可以將其刪除(釋放),使用del()函數

>>> del(a) #將變數a刪除
>>> a
#由於變數a已經刪除,故使用相同變數名稱就會出現錯誤訊息
Traceback (most recent call last):
  File "", line 1, in
    a
NameError: name 'a' is not defined
>>>  

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/