一、寫代碼思想
1.1 可讀性(首選)
2.1 簡潔性
二、python文法的萬能法則
2.1 是什麼
2.2 存在的意義
2.3 怎麼用
三、變量與基本資料類型
1. 變量
是什麼?
變量: 可以變化的量, 量指的是事物的狀态
存在的意義?
記憶事物的某種狀态, 且狀态可以發生變化(程式的本質是一系列狀态的變化)
使用:
原則: 先定義後引用
變量的定義: 變量名 = 值
變量的記憶體管理:
垃圾回收機制: 垃圾指的是變量值被綁定的變量名為0時, 變量值無法被通路到
引用計數增加
x = 10
y = x
引用計數減少
del x # 解除變量名x與值10的綁定關系, 10的引用計數減1
變量名的命名:
I: 變量名
命名原則: 見名知意
命名規則:
隻能是數字、字母、下劃線;
不能以數字開頭;
不能使用python關鍵字
ps: 在見名知意的前提下盡可能短
命名風格: 純小寫+下劃線
II: =
III: 變量值
id: 是變量值的記憶體位址, 記憶體位址不同則id不同
type: 不同類型的值用來記錄不同的狀态
value: 值本身
IV: is 與 ==
is: 比較id是否相等
==: 比較兩個值是否相等
小整數池: python解釋器啟動 —> 記憶體中存放一系列整數(-5 ~ 256)
目的: 減少IO操作, 提高效率
2. 常量(不變的量)
python中沒有常量的概念, 約定變量名全為大寫, 代表常量
3.基本資料類型
1. 數字類型
1.1 整型(int)
定義: age = 18 ===> age = int(10)
作用:
進制轉換: bin() oct() hex ()
### 1.2 浮點型(float)
定義:
作用:
int與float可以相加
2. 字元串(str)
作用: 記錄描述性質的狀态
定義: 必須加 ‘ 字元串 ’, “ 字元串 ”, ‘’’ 字元串 ‘’’, “”" 字元串 “”"
字元串相加: ‘123’ + ‘abc’ (效率低, 不推薦)
#### 字元串内置方法:
掌握(**): 索引取值 切片(索引) 切分:split() join() strip() len() 成員運算:in/not in
了解: find() rfind() index() rindex() count()
center() ljust() rjust() zfill()
設定制表符代表的空格數:expandtabs()
第一個單詞首字母大寫: captalize() 大小寫翻轉: swapcase() 每個單詞首字母大寫: title()
islower() isupper() istitle() 字母或數字組成: isalnum() 字母組成: isalpha() 空格組成: isspace() 判斷辨別符是否合法: isdentifier()
num1 = b’4’ num2 = u’4’ num3 =‘四’ num4 = ‘IV’
isdigit() —> True: num1 num2
isnumeric() —> True: num2 num3 num4
isdecimal() —> True: num2
字元串格式化輸出:
方法一:
% 速度最慢
‘’’
name: %s
age: %d
weight: %f
‘’’ % (‘xxx’, 18, 52.8)
‘’’
name: %(name)s
age: %(age)d
weight: %(wg)f
‘’’ % (‘name’: xxx’, ‘age’ = 18, ‘wg’ = 52.8)
%f: 浮點型
%d: 整型
%s: 字元串, 可以接收任意類型
方法二:
str.format() —> 2.6引入, 相容性好, 速度比%快, 比f-str慢
‘’’
name: {}
age: {}
weight: {}
‘’’.format(‘王二’, 18, 50.5)
‘’’
name: {0}
age: {1}
weight: {2}
‘’’.format(‘王二’, 18, 50.5)
‘’’
name: {name}
age: {age}
weight: {wg}
‘’’.format(name=‘王二’, age=18, wg=50.5)
方法三:
f-str —> 3.5後引入, 速度最快
f’’’
name: {‘王二’}
age: {18}
weight: {50.5}
‘’’
方法四:
标準庫模闆
3. 清單
定義: 在[]内用逗号’, '分開多個任意類型的值, 一個值稱之為一個元素
作用: 按位置記錄多個值, 并且可以按照索引取出指定位置的值
清單在記憶體中的存儲方式: 開辟一個記憶體空間, 存儲索引對應值的記憶體位址
my_list = [1, 2, ‘3’, [1, 2, 3]]
增:
末尾添加: my_list.append(4)
my_list.extend([9, 8, 7])
任意位置添加: my_list.insert(1, ‘hhh’)
删:
删除最後一個: my_list.pop()
指定位置删除: my_list.pop(2)
通過值删除: my_list.remove([1,2,3])
del my_list(0) —> 0為索引
改:
my_list[0] = ‘1’
查:
my_list[2]
my_list[-1]
可嵌套取值
類型轉換: 能夠被for循環周遊的類型都可以list()轉換成清單(str tuple dict)
内置方法
索引取值 切片 成員運算: in/not in 追加: append() 任意位置插入值: insert() 清單擴充: extend() 删除: pop() remove() 公共的删除方法(沒有傳回值): del 循環: for 長度: len()
了解: count() index() clear() 翻轉: reverse() 排序: sort()
4. 字典
定義: 在{}内用’, '分開多個key: value(字典中元素預設無序)
作用: 用來存儲多個值, 每個值都有唯一與之對應的key, key是唯一不可重複的
字典在記憶體中的存儲方式: 開辟一個記憶體空間, 存儲key對應值的記憶體位址
my_dic = {
‘name’: ‘王二’
‘age’: 18=
‘height’: 1.81
‘weight’: 60.5
}
增:
my_dic[hobby] = ‘read’
删:
del my_dic[‘age’]
改:
my_dic[‘name’] = ‘李四’
查:
my_dic[‘name’]
可嵌套取值
類型轉換:
内置方法:
長度: len() 成員運算: in/not in
删除: del pop():根據key删除元素傳回對應的value值 popitem():随機删除傳回元組(key, value)
keys() values() items() 循環
fromkeys() clear() get():按照key取值(key不存在傳回None, 不報錯) update() setdefault(): key存在pass, key不存在新增key-value鍵值對, 傳回字典key對應的值
5. 布爾
作用: 記錄真假兩種狀态
定義: is_ok = True
is_ok = False
使用: 條件判斷時使用
6. 元組
my_tuple = (1, 2, 3, 4)
查:
my_tuple [0] —> 索引取值
類型轉換:
内置方法:
索引取值 切片 成員運算: in/not 長度:len() 循環 index() count()
7. 集合
my_set = {1, 2, 3, 4}
天生去重
隻能針對不可變類型
無法保證原來的順序
增:
my_set.add(5)
my_set.update({5, 6}) my_set.update([5, 6], [7, 8])
兩個集合的運算(關系運算:):
a = {1,2,3}
b = set(3, 4,5,)
集合a中包含而集合b中不包含的元素(差集) a-b
集合a或b中包含的所有元素(并集) a | b
集合a和b中都包含了的元素 (交集) a & b
不同時包含于a和b的元素(對稱差集) a ^ b
父子集: {1, 2, 3} > {1,2}
内置方法:
intersection():交集 union(): 并集 difference(): 差集 symmetric_difference():對稱差集 issuperset(): 父集 issubset():子集 in/not in len() discard():删除元素 update() pop():随機删除 add() isdisjoint(): 判斷兩個集合是否完全獨立
8.
四、接收使用者輸入
變量名 = input(‘提示資訊’)
五、運算符
運算符優先級:
1. 算數運算
+ - * ** / // %
2. 比較運算
> >= < <= == !=
3. 指派運算
變量的指派: =
增量指派: += -= *= /= //= %= **=
鍊式指派(把一個值指派給三個變量): x = y = z = 10
交叉指派(兩個變量交換值): a, b = b, a
解壓指派(解包): a, b, c = [1, 2, 3]
a, b, *_ = [1, 2, 3, 4, 5] —> _:用下劃線當變量名, 綁定的是被廢棄的值
4. 成員運算
in not in
5. 邏輯運算
not and or
優先級: not > and > or
6. 身份運算
is 判斷id是否相等
六、可變不可變類型
int, float, str 都被設計成了一個不可分割的整體, 不能被改變
可變類型(值改變, id不變): list set dict
不可變類型: tuple bool