命名規范:
標識符:即我們自己在寫代碼的時候取得名字。命名的符號。
例如:項目名 project name? 包名:package name? 模塊名即文件名:? ? .py
取名字(標識符)時的規范:由字母數字下劃線組成,但是不能以數字開頭。
命名時不同字母數字之間最好用下劃線隔開,可提升代碼的可讀性? ?例如:test_0222
命名時不能用關鍵字? ?int? ?if? ?while
a=1? ?a為變量名? , 變量名也是標識符也要符合上述規范。
注釋:
單行注釋: ctrl+/? ?
多行注釋:成對單引號、成對雙引號、成對三個引號? ?' '? " "? ''' '''?
常見報錯:
name ‘a’ is not defined(變量沒有被定義,沒有被賦值)
注:當要使用某個變量的時候要確定它已經被定義和賦值
Can't convert 'int' object to str implicitly(數據類型不一致)
數據類型:
數據類型分為:整型和浮點型
整形:int? ? 例如? ?a=10
浮點數:float? ? 例如? ?a=10.0
可直接進行加減乘除,例如:print(a+20)
布爾值:bool? ?boolean? ? ? ?True和False首字母必須大寫
字符串:str? ? ?成對的單引號、雙引號、三引號都是字符串
s=1是整形? ?str(s)則強制轉化為字符串類型
type(數據)函數是查看數據類型的,例如? ?a=“1”? ? print(type(a))
len(數據)函數是用來統計數據的長度,例如s=‘hello!’? ?print(len(s))
字符串里的元素:單個字母、數字、漢字、單個符號都稱之為元素。
例如:s=‘hello!’? ? 里面有六個元素
字符串取值:字符串名[索引值]? ? 例如:s=‘hello!’? ?字符串s的第5個元素就是“!”,print(s[5])和print(s[-1])打印出來就是‘!’
索引:python索引正序是從0開始標記的(例如:0,1,2,3,4,5),返序是從-1開始的(例如:-1,-2,-3,-4,-5)
字符串取多個值:切片? ?字符串名[索引頭:索引尾:步長]? ? 步長默認為1? 例如:print(s[1:5:1])? ?1 2 3 4 5取頭不取尾即輸出為‘ello’? ?print(s[1:5:2])? ?1 3 5 即輸出為‘el’
print(s[:])這個是從正無窮取到負無窮
將s=hello!輸出為倒序,即print(s[-1:-7:-1])和print(s[::-1])
字符串的分割:字符串.split()? ? 列表里的子元素都是字符串類型? ? ??返回的則是一個列表類型的數據
指定的切割符? 例如 print(s.split('l'))? 則輸出['he','','o!']
指定切割次數? 例如? print(s.sprint('l',1))? l切割1次輸出為[helo!]? ?
print(s.sprint('l',2)) l被切割2次輸出為[heo!]
字符串的替換:? 字符串.replace(指定替換值,新值)
例如:s='hello!'? ? ?new=s.replace('l','@')? ? ? print(new)則輸出he@@o!
字符串去除指定字符:? ?字符串.strip(指定字符)? ?只能去掉頭和尾的指定字符
print(s.strip()) 則默認去掉空格? ?
例如:s='hello!'? ? print(s.strip(‘h’))則輸出ello
字符串拼接:? 用+號拼接? ?要保證 + 號左右兩邊的變量值類型要一致
例如:a=‘張三’? b=‘你好’? print(a+b) 則輸出 張三你好
字符串格式化輸出:? ? % format??
格式化輸出1:format 用{}來占坑
例如:name='張三'? ?age=18? ?print('今年{}{}么?'.format(name,age)) 則輸出為 今年張三18么?
name='張三'? ?age=18? ?print('今年{1}{0}么?'.format(name,age)) 則輸出為 今年18張三么?
格式化輸出2:用%來占坑? ?%s字符串? %d數字? ?%f浮點數
例如:name='張三'? ?age=18? ?print('今年{%s}{%d}么?'%(name,age)) 則輸出為 今年張三18么?
%s可以填任何數據
%d只能填數字? 整型? ?浮點數
%f可以填數字
%d保留整數部分
name='張三'? ?score=99.99? ?print('{%s}考了{%d}分'%(name,score)) 則輸出為 張三考了99分
%f自動補小數點后6位
name='張三'? ?score=99.99? ?print('{%s}考了{%f}分'%(name,score)) 則輸出為 張三考了99.9900分
.幾f則小數點后保留幾位,例.3f
name='張三'? ?score=99.99? ?print('{%s}考了{%.3f}分'%(name,score)) 則輸出為 張三考了99.990分
?列表 list??符號[ ]
a=[ ]? ? 可以存在空列表,列表里面可以包含任何類型的數據,列表里面的元素根據逗號進行分隔
例如:a=[1,0.02,'hello',[1,2,3],True] 列表a一共有5個元素。? ??
如果要存儲的數據是同一個類型的建議用列表
往列表里增加數據:append? ? 添加在末尾,只能添加一個數據? ,可以添加任何類型數據
例如:a[1,2,3]? ? a.append('4')? ? print(a)輸出為[1,2,3,4]
insert? 插入數據? ?要根據索引指定位置插入
例如:a[1,2,3]? ? a.insert('3')? ? print(a)輸出為[1,2,3,4]
刪除? ?pop()根據索引刪除某個元素,什么都不填默認刪除最后一個元素,? ??
例如:a=[1,2,3,4]? ? ?a.pop(2)? ? print(a)輸出為[1,2,4]
a=[1,2,3,4]? ? a.pop()? ? print(a)輸出為[1,2,3]
remove()指定刪除某個值
例如:a[‘張三’,‘李四’,‘王五’]? ? ?a.remove(‘張三’)? ? print(a)輸出為['李四',‘王五’]
res=a.pop()? ? 會返回被刪除的那個元素? ? ? 函數return關鍵字
a=['張三','李四','王五']? ? ? ?b=a.pop(1)? ? ? print(b)? ?則輸出為[‘張三’,[‘王五’]
修改? ? ?a[索引值]=新值
例如:a=['張三','李四','王五']? ? ?a[2]='小明'? ? print(a)輸出為[‘張三’,'李四','小明']
元組tuple? ?符號()? ?可以存在空元組 例如a=()
元組里面可以包含任何類型的數據
元組里面的元素根據逗號來進行分隔
獲取元組里面的單個值:? 元組[索引值]? ? 例如:a=('張三','李四','王五')? ? print(a[2])輸出為王五
元組一般用來操作數據庫的時候會存放條件,元組不支持任何修改
字典 dict? ? 符號{ }? ?大括號,花括號? ?輸出無順序? ?字典里的key必須是唯一的
可以存在空字典a={}
字典里面數據存儲方式:key:value
字典里面的value可以包含任何類型的數據
字典里面的元素? 根據逗號來進行分隔
例如:a={'name':'張三','age':'8歲','class':'3年級'}
字典取值:? ? 字典[key]
例如:print(a['name'])? 輸出為張三
刪除:? ?pop[key]
例如:a.pop('name')? ? print(a)輸出為'age':'8歲','class':'3年級'
b=a.pop('name')? ? print(b)輸出為'張三'
新增:? a[新key]=value
例如:a={'name':'張三','age':'8歲','class':'3年級'}? ?a['體重']='65kg'
print(a)? 輸出為{'name': '張三', 'age': '8歲', 'class': '三年級', '體重': '65kg'}
修改: a[已存在的key]=新value
例如:a={'name':'張三','age':'8歲','class':'3年級'}? ?a['class']='四年級'
print(a)? 輸出為{'name': '張三', 'age': '8歲', 'class': '四年級'}
運算符:5大類
算數運算符:+? -? ?*? ? %
模運算/取余運算:? ? ? 一般用來判斷某個數是奇數還是偶數
例:a=4? ?print(a%2)? 若輸出為0則是偶數,反之是奇數
賦值運算符:? ?=? ? ?+=? ? ?-=
把左邊的值賦值給右邊就叫賦值運算,例如a=5
若a=5? ?a+=5? ?則print(a)輸出為10? ? 相當于a=a+5
若a=5? ? a-=2? ?則print(a)輸出為3? ? ? 相當于a=a-2
比較運算符:>? ?>=? ? <? ? ?<=? ? !=? ? ==? 6種運算符
若a=10? ?b=5? ? ?print(a>b)? ?則輸出True
邏輯運算符: and? ?or? ? ?拓展:not
and的左右兩邊結果都為真才為真,只要有一個為假就為假
or的左右兩邊結果都為假才為假,只要有一個為真就為真
邏輯運算符返回的值也是布爾值????
成員運算符: in? ? ?not in
返回值也是布爾值
例如:s=‘hello’? ?print(‘o’? in? ?s) 則輸出為True
例如:d=[1,2,3]? ?print(‘1’? in? ?d) 則輸出為True
例如:t={'age':'30','name','張三']? ?print(‘age’? in? ?t) 則輸出為True? ? ? 字典的判斷主要是key
控制語句:分支分流
循環語句? for? while
判斷語句? ?if? ?elif? ? else
當if后面的語句滿足條件,運算結果是True ,那么就會執行他的子語句
例如:
age = 20
if? age>18
? ? ? print(“恭喜你,成年了”)
則輸出? ?恭喜你,成年了
if條件語句(比較/邏輯/成員運算? 均可)??
用字符串、元組、列表、字典去控制? ?空數據 ==False? 非空數據==True
例如:? a=[]? ?if? a:print(‘你好’)則不會執行,無輸出
若:?a=[1]? ?if? a:print(‘你好’)則輸出為? 你好
直接用布爾值去控制
例如:if? True:? ?print(‘你好’)? 則輸出為? ? 你好?????
if? ?條件語句? ? ? ? ? ?一個條件語句里面只能有一個if和一個eles? ? ?eles后面不能添加條件語句
? ? ?子語句
eles:
? ? ?子語句
例如:age=20
? ? ? ? ? if? ? ?age>=18:
? ? ? ? ? print('成年')
? ? ? ? ? else:
? ? ? ? ? print(‘未成年’)
if? ?條件語句? ? ? ? ? ?if? ?elif可以加條件語句? ? ?else后面不能添加條件語句
? ? ?子語句
elif? 條件語句
? ? ?子語句
else:
? ? ?子語句
例如:age=20
? ? ? ? ? if? ? ?age>=18:
? ? ? ? ? print('成年')
? ? ? ? ? elif? ?0<age<18:
? ? ? ? ? print('未成年')
? ? ? ? ? else:
? ? ? ? ? print(‘您輸入的年齡有誤’)
Random隨機數
例如:從1-9生成隨機數,然后輸入一個數字跟這個隨機數比較,若大于,則打印bigger,若小于則輸出less
import random
a=random.randint(1,9)
b=int(input('請輸入數字'))
if a
print('bigger')
elif a>b:
print('less')
循環? ?for? ? while
for循環:
for? item? in? ?某個數據類型:(數據類型包含:字符串、列表、元組、字典、集合)
for循環的循環次數由數據的元素個數決定
例如:
a=[1,2,3,4,5]
for? b? in? a:? ? ? for循環遍歷a里面的元素? ? 然后賦值給b
? ? ? print(b)
輸出為:
1
2
3
4
5
如何變量a是字典的話的,則遍歷的是key,返回的也是key
d={‘name’:‘小明’,‘age’:‘20’}
print(d.values())獲取字典里面的所有values值
print(d.keys())獲取字典里面的所有key值
for? item? in? d.values():
? ? ? print(item)遍歷的是字典d里面的所有value值
range函數? 生成整數序列
range(m,n,k)? m頭,默認為0? ?n尾? ? k步長,默認為1,取頭不取尾
例如:a=range(1,5,1)? ?print(list(a))輸出為1,2,3,4
a=range(5)? ?print(list(a))輸出為0,1,2,3,4
while? ?控制循環
while? 條件表達式
? ? ? ? ?代碼塊
首先判斷while后面的條件表達式是否成立,如果是True,那就執行代碼塊。執行完畢后繼續判斷
while后面的條件表達式,直到false為止。為防止代碼進入死循環,需加一個變量來控制次數
例如:a=1
? ? ? ? ? while? ?a<=10:
? ? ? ? ? ? ? ? ? ? ?a=a+1
循環10次
while 與 if 語句搭配使用? break? continue
使用函數可提高代碼的復用性例如:
def Total(b):
a=0
? ? sum=0
? ? while a
a+=1
? ? ? ? sum=a+sum
print(sum)
Total(b=5)
Total(b=10)
動態參數/·不定長參數? ?*args? ?arguments
在函數內部體現為元組
def? make_sandwich(*args):
? ? ? ?print(args)
make_sandwich(‘生菜’、‘雞蛋’、‘培根’、‘牛肉’)
關鍵字參數 key-value? ? **kwargs? ? key? ?word? ?必須加**
在函數內部體現為字典
def? ? kw_function(**kwargs):
? ? ? ? ?print(kwargs)
kw_function(x=1,y=2)
變量作用域、
全局變量? ?和局部變量
1、作用范圍不一樣? ? 全局? 在模塊里面都能調用? ? 函數的局部變量只能用于函數內
2、當全局和局部變量同名且同時存在的時候? ?函數優先調用局部變量
3、當局部變量沒有? ?就優先用全局的
4、global聲明一個全局變量
a=1 全局變量
def? ?add(b)
? ? ? ?a=5? ? 局部變量
? ? ? ?print(a+b)
add(10)
輸出結果為15