>編寫python程式的檔案,稱為python的腳本或程式
>要求目前的python腳本的檔案字尾名必須是.py
#### pycharm使用注意
> 需要明确的知道你目前pycharm選擇的python環境
#### 注釋
> 注釋就是一段說明文字,并不會被執行
> 在python的腳本中,開頭的第一個字元如果是 # 那麼就是注釋了
#### print() 輸出函數
> print可以在程式中輸出一些内容,字元串,數字。。。
> 函數就是為了完成一些功能,例如:print就是為了輸出資料
#### 變量
```python
# 什麼是變量?
# 變量就是用一個英文字元串來記錄或标記一些資料,并且這個被标記的資料是可以變化的
# num = 10 的了解
# 就是把資料 10 指派給變量 num使用,之後就可以使用num來代替這個10的資料
```
#### 命名規範
變量的命名要有規範
+ 變量名可以使用字母,數字,下劃線_,
+ 不能以數字開頭
+ 嚴格區分大小寫
+ 不要使用中文
+ 不要使用關鍵字 if else True False print
**另外 變量的命名規範适用于腳本名稱和後期的函數名及其它指令規範**
### 變量的定義方式
> 定義變量時 要注意遵守變量命名規範
```python
#第一種 變量定義方式
a = 10
b = 20
#第二種定義方式
a,b = 30,40
```
#### 思考:如何實作 以下兩個變量的資料互相交換
```python
# 定義兩個變量
a = 10
b = 20
# 交換兩個變量的值
# 。。。
'''
普通方式,完成變量資料的交換
1,把a變量的值 指派給c ,此時 c變量中 就是 10
2,把b變量的值 指派給a , 此時 a變量中 就是 20
3,把c變量的值 指派給b , 此時 b變量中 就是 10
'''
# c = a
# a = b
# b = c
# 利用python定義比變量的文法來實作 變量的資料交換
a,b = b,a
```
## python的資料類型
### 什麼是資料類型?
> 資料類型就是資料的表現形式
>
> 比如 你好 就是一個字元串,200 就是一個數字
>
> 在程式當中除了這種常用的字元和數字外還有很多其它的資料表現形式
#### type() 函數,可以傳回目前的資料類型
```python
s = 'iloveyou'
res = type(s)
print(res) # <class 'str'> str == string
```
### 1. 字元串類型
- 單雙引号都可以定義字元串
- 三引号也可以定義字元串
- 單雙引号定義的字元串不能随意換行,需要在換行時指明換行符
- 字元串中的引号可以互相嵌套,但是不能嵌套自己(例如不能在單引号中嵌套單引号,除非轉義)
- 字元串中可以使用轉義字元,如 \r \n \t ...
- 如果不想在字元串中實作轉義字元可以在字元定義時 加 `love = r'\nihao \shijie'`
```python
# 定義方式就是使用 單引号 或者 雙引号
love = 'iloveyou'
hello = "你好 世界"
# 也可以使用三引号實作大字元串的定義,一般用于大文本字元串的定義,并且大字元串,可以換行
s = '''
比如說這一個
很長很長的文章内容。。。
'''
```
### 2.數字類型
+ int 整型
+ float 浮點類型
+ complex 複數
+ bool 布爾類型(True,False)
```python
# 數字類型 Number
'''
int 整型
float 浮點類型
complex 複數
bool 布爾類型(True,False)
'''
varn = 521
varn = -1111
varn = 3.1415926
varn = 0x10 # 十六進制
varn = b'001100111' # bytes
# 複數
varn = 5+6j # complex
# 布爾類型 bool
varn = True
varn = False
# print(varn,type(varn))
# 數值類型可以參與運算
a = 10
b = 20
print(a+b)
```
### 3.List清單類型
+ 清單用來表示一系列資料,例如: 需要記錄一組數字或其它資料
+ 清單中存儲的資料可以是任意類型的
+ 在需要記錄多個資料時,可以使用中括号進行定義 [],
+ 并且每個資料之間使用逗号分隔 ,
+ 例如以下資料,定義了幾組數字
+ 清單中存儲的每一組資料,稱為元素
+ 清單中存儲的資料,可以通過下标的方式進行擷取
+ 那麼清單中元素的值可不可以存儲一個清單,稱為 二級清單(二維清單) 或者 多級清單 (多元清單)
```python
'''
關于清單中的下标
0 1 2 3 4
['a','b',521,'pai',3.1415926]
-5 -4 -3 -2 -1
'''
```
### 4. tuple 元組類型的定義
+ 在定義多個資料内容時,可以選擇使用List清單類型
+ 還可以使用元組類型來定義,
+ 元組和清單非常像,都時用于存儲多個資料時使用
+ 元組使用小括号進行定義(),清單使用中括号進行定義
+ **元組的最大特點就是值不能被改變**
```python
vart = (1,2,3,'a','b')
# 元組的其它定義方式
vart = 1,2,3
```
##### 注意在定義元組時,如果元組中隻有一個元素,那麼需要加, 不然就不是元組類型了
### 5.Dict字典類型
+ 字典也是用于存儲一組或多組資料時使用,使用大括号 {}來定義
+ 字典是 鍵值對 的存儲方式 name :admin
+ 鍵和值之間使用冒号進行分隔,多組鍵值對之間使用逗号分隔
+ 鍵必須是字元串或數字類型,值可以是任意類型
+ 鍵名不能重複,值可以重複
```python
# 比如需要記錄一本書的相關資料 書名,作者,價格,。。。
vard = {'title':'<<鬼谷子>>','author':'鬼谷子','price':'29.99'}
# print(vard,type(vard))
# {'title': '<<鬼谷子>>', 'author': '鬼谷子', 'price': '29.99'} <class 'dict'>
# 擷取字典中的值
print(vard['title'])
# 字典中的鍵不能重複使用,否則會覆寫
vard = {'a':10,'b':10,'c':20,'a':'aa',1:'abcdef','2':'2222'}
# print(vard)
```
##### tip: 在python之前的版本中,字典是無序的
---
### 6.set集合類型
+ set集合是一個 無序且元素不重複的 集合的資料類型
+ set集合使用 中括号或者set()方法來定義
+ 如果需要定義一個空集合時 隻能使用 set()方法,因為大括号時定義的空字典
+ 集合主要用于運算,交集,差集,并集,對稱集合
```python
a = {1,2,3,'a'}
# 給集合添加元素
# a.add('b')
# 無法擷取集合中的單個元素,但是可以添加和删除
# a.discard('a')
# print(a)
# 檢查目前的元素是否在集合中
# print(1 in a)
# 集合主要用于運算,交集,差集,并集,對稱集合
a = {1,2,3,'a','b'}
b = {1,'a',22,33}
print(a & b) # 交集 {1, 'a'}
print(a - b) # 差集 {'b', 2, 3} a 集合有,b集合沒有的
print(a | b) # 并集 {1, 2, 3, 33, 'a', 'b', 22} 兩個集合,放到一起,并且去重
print(a ^ b) # 對稱差集 {33, 2, 3, 'b', 22}
```
### 總結資料類型
```python
'''
字元串 string
數字類型 Number
整型 int
浮點 float
複數
布爾 bool
清單 list
元組 tuple
字典 dict
集合 set
可變資料類型:清單,字典,集合
不可不資料類型: 字元串,數字,元組
容器類型資料 : 字元串,清單,元組,集合,字典
非容器類型資料: 數字,布爾類型
'''
```
## 資料類型轉換
+ 什麼是資料類型轉換?
+ 把一個資料類型轉換為另一個資料類型,例如 字元串轉為數字
+ 為什麼需要資料類型轉換?
+ 因為不同的資料類型之間不能運算
+ 資料類型轉換的形式?
+ 自動類型轉換
+ 強制類型轉換
#### 自動類型轉換
```python
# 自動類型轉換
# 當兩個不同的值進行運算時,結果會向更高的精度進行計算
# True ==> 整型 ==> 浮點 ==> 複數
a = 123
b = True # 在和數字運算時 True轉為數字1,False轉為數字 0
# print(a+b)
# print(12.5+22)
# print(True+3.14)
```
### 強制類型轉換
> python中的每個資料類型都有對應的方法,可以對資料類型進行轉換
+ str() 可以把所有的其它資料類型轉換為字元串類型
+ int() 字元串轉數字類型時,如果字元串中時純數字,可以轉換
+ 其它容器類型不能轉為數字int類型
+ float() 浮點類型的轉換和int類型一樣,不過轉換的結果是浮點類型
+ bool() 可以把其它類型轉換布爾類型的True或False
+ 總結,哪些情況轉bool的結果是 False
+ `'',0,0.0,False,[],{},(),set()`
+ list() 清單
+ 數字類型是 非容器類型,不能轉換為清單
+ 字元串 轉換為清單時 會把字元串中的每一個字元當做清單的元素
+ 集合 可以轉換為 list清單類型
+ 元組 可以轉換為 list清單類型
+ 字典 可以轉換為 list清單類型,隻保留了字典中的鍵
+ tuple() 元組
+ 數字類型 非容器類型,不能轉換為元組
+ 其它容器類型的資料進行轉換時,和清單一樣
+ set() 集合
+ 數字類型 非容器類型,不能轉換為 集合
+ 字元串,清單,元組 可以轉為 集合 結果是無序的
+ 字典轉換為集合時,隻保留了字典的鍵 key
+ dict() 字典
+ 數字類型 非容器類型,不能轉換為 字典
+ 字元串不能直接轉換為 字典
+ 清單可以轉換為字典,要求是一個二級清單,并且每個二級元素隻能有兩個值
+ 元組可以轉換為字典,要求是一個二級元組,并且每個二級元素隻能有兩個值