---
# System prepended metadata

title: Python 基本語法
tags: [python]

---

###### tags: `python`
<style>
blue:color='blue';
</style>
# Python 基本語法
最近修改日期20210108
#### 變數:
語法:變數名稱=變數值
Python變數無須宣告及指定資料型態
多個變數有相同值 a=b=c=20
同一列指定鍋的變數值
age,name = 10,"張三" 則 age=18 ,name= "張三"
del 變數名稱  #刪除變數節省記憶體

變數名稱命名規則
*.第一個字母需大小寫英文字母、_、中文。(數字開頭不行)
*.變數只能由大小寫英文字母、_、中文組成。(特殊符號不可以，中間也不可空白)
*.英文大小寫視為不同變數。(區分大小寫)
*.不能與保留字相同。

保留字有
|||||||
|-|-|-|-|-|-|
|acod|and|array|asin|assert|atan|
|break|class|close|continue|cos|Data|
|def|del|e|elif|else|except|
|exec|exp|fabs|float|finally|floor|
|for|from|global|if|import|in|
|input|int|is|lambda|log|log10|
|not|open|or|pass|pi|print|
|raise|range|return|sin|sqrt|tan|
|try|type|while|write|zeros||

\# 為註解符號
\\ 為程式碼過長換行接續符號 

Python 數值資料型態主要有整數、浮點數。
布林資料型態 只有True 與 False
字串可用成對的" 或是 ' 包起來。
若要表示換行或是Tab可用跳脫字元\

|跳脫字元|意義|跳脫字元|意義|
|-|-|-|-|
|\\'|顯示單引號'|\\"|顯示雙引號"|
|\\\ |顯示反斜線|\\n|換行|
|\r|游標移到列首|\t|Tab鍵|
|\v|垂直定位|\a|響鈴|
|\b|後退鍵|\f|換頁|
|\x|以16進位表示字元|\o|以八進位表示字元|

## print語法:
語法:
print(項目1 [,項目2,...,sep=分隔字元,end=結束字元] )

範例:
```python=
print(10,"項目",50)              # 輸出 10 項目 50
print(10,"項目",50,sep="&")      # 輸出 10&項目&50 下次列印於下一列
print(10,"項目",sep="&",end="")  # 輸出 10&項目&50 下次列印於同一列(註:end沒指定，預設為\n)
```
### 整理後的格式化輸出
```python=
# 範例_字串格式化
name='Peter Yang'
errno=50159747054
# 舊式
print('舊式')
print('你好! %s'% name)   # %x 16進位表示法
print('嗨! %s, 這個錯誤代碼是%x'%(name,errno))
print('嗨! %(name)s, 這個錯誤代碼是%(errno)x'%{'name':name,'errno':errno,})
print('嗨! %(name)s, 這個錯誤代碼是%(errno)x'%{'errno':errno,'name':name,})

# 新式
print('新式')
print('Hello,{}'.format(name))
print('嗨! {name}, 這個錯誤代碼是{errno:x}'.format(name=name,errno=errno))

# 進階(格式字串字面值:Formatted String Literal Py3.6+ UP)
print('進階')
print(f'Hello,{name}!')
birthYear=25
print(f'Hello,{name},出生年{birthYear}轉為西元為{birthYear+1911},16進制為{(birthYear+1911):x}')  # 可以進行運算 (可以用x 或是 #x)

# 樣板字串方法(Template String)
from string import Template
t= Template('Hello,$name!')
t.substitute(name=name)
print(t.substitute(name=name))
t1="Hello! $name 有一個錯誤發生 $errno"
t2=Template(t1)
print(t2.substitute(name=name,errno=hex(errno)))  # 樣板無法此用格式指定子，要自行用hex轉換。


```

### 格式化輸出(一)
語法:
print(項目 %(參數)) #%s 表示字串，%d表示整數，%f表示浮點數

可以用%5d 固定列印5位數。數字小於5位，左方填空白，大於5位，全部顯示。
%5s 同上
%8.2f固定列印8的字元(含小數點)，小數點固定兩位。整數若小於5位，左方填空白，整數大於5位，則整數部分全部顯示；若小數小於2位，右方填0，小數大於2位，原則四捨五入(會依據第一位小數奇偶而變化)
n=1222.3350
print("%8.2f" % n) # 1222.34
n=1222.2350
print("%8.2f" % n) % 1222.33
範例:
name="張三"
age = 58
print("%s的年紀為%d歲" % (name,age))

### 格式化輸出(二)
語法:
print(format(item,format-specifier))
item 為數字或是文字,format-specifier:格式指定器。

範例:
```python=
name="張三"
age = 58
print(format(name,'8s'),format(age,'3d')) # 張三   　　58
```
格式指定器:
|指定器|說明|
|-|-|
|d|整數|
|f|浮點數|
|s|字串|
|e|科學記號|
|x|16進位表示|
|o|8進位表示|
|b|2進位表示|
|%|百分比表示|
|<|靠左對齊|
|>|靠右對齊|
指定器前方可以加入數字，表示欄位寬度
範例:
```python=
print(format(100,'8d'))
#     100   由第8格往左排(預設靠右)
print(format(100,'<8d'),end='|')
#100     |靠左對齊空8格
print(format(100,'8x'))
print(format(100,'8o'))
print(format(100,'8b'))
#      64
#     144
# 1100100
print(format(0.2389,'6.2%'))
#23.89% 留6個位置，%小數留2位。
print(format(123.456,'8.2f'))
#  123.46 留8個位置，小數點2位。
```
print(字串.format(參數列)) 

```python=
name="張三"
age = 58
print("{}的年紀為{}歲".format(name,age))   #張三的年紀為58歲
print(format(name,'8s'),format(age,'3d')) # 張三   　　58
```
另外一種寫法
```python=
name='Mike'
func_id='func_A01'
print(f'{name} use the {func_id}')  
#Mike use the func_A01
```



使用type取地目前資料型態
```python=
print(type(56))        # <class 'int'>
print(type("張三"))    # <class 'str'>
print(type(True))     # <class 'bool'>
```



S20200721 By YTC
M20200908 補充與調整, 20201102
M20210108 補充整理後的資料

