python必會的知識基礎
一、運算子
-
算術運算
- 加、減、乘
- 除
- 10/3 (得到浮點數)
- 10//3(取整除 - 向下取接近商的整數)
- 冪運算(x**y)
- 冪 - 返回 x 的 y 次冪
- 取餘/取模(%)
print(10%3)
1- 取模 - 返回除法的餘數
-
賦值運算
-
=:簡單的賦值運算子
-
拓展知識
- +=:加法賦值運算子
- -=:減法賦值運算子
- *=:乘法賦值運算子
- /=:除法賦值運算子
- %=:取模賦值運算子
- **=:冪賦值運算子
- //=:取整除賦值運算子
num = 0
num += 1
print(num)
輸出:1
-
-
比較運算子
>
、<、== 、!= 、>=、<=- 讓計算機判斷條是真還是假,是真就返回 True,否則返回 False
-
邏輯運算
- 與 (and)
print('邏輯運算:',num1 == 0 and num2 == 0)
程式碼說明:讓計算機判斷 num1 ==0 和 num2 == 0 兩個條件是真還是假,都是真才返回 True,否則返回 False - 或(or)
print('邏輯運算:',num1 == 0 or num2 == 0)
程式碼說明:讓計算機判斷 num1 ==0 或者 num2 == 0 是真還是假,只要有一個是真的就返回 True,否則返回 False - 非(!)
print('邏輯運算:',num1 != 0)
程式碼說明:讓計算機判斷 num1 !=0 是真還是假,是真的就返回 True,否則返回 False
- 與 (and)
二、字串
-
字串定義
- 定義單行字串
- 單引號
- 雙引號
- 定義多行字串
- 三個單引號
- 三個雙引號
- 空字串
str = ""
- 轉換成字串
str(object)
- 定義單行字串
-
字串操作
-
字串訪問
- 順序索引 0 開始
- 倒序索引負 1 開始
-
字串切片
字串[起始索引,結束索引,步長]
- 常用形式
- 正序切片
- 使用預設步長(1)
string[start_index : stop_index]
- 自定義步長
string[start_index : stop_index : step]
- 反轉
string[::-1]
- 使用預設步長(1)
- 倒序切片
[start_index : stop_index : step]
起,未,步長都為必傳,且都是負數- step>0 正數(或不傳):表示正序切片
- step<0(負數):表示倒序切(索引值也要為負數)
- 正序切片
- 注意點
-
一個空格佔一個索引位置
-
正切預設起始索引 0,預設步長 1
-
倒序切片預設起始索引-1,預設步長 1
-
不寫結束索引預設為字串長度
-
左閉右開(取起始索引的值,不取結束索引的值)
-
start_index : stop_index : step 超過列表索引值,返回空
-
step 引數中"+,-" 只是切片方式的標記,後面數字表示步長
-
正序切片起始索引值必須小於結束索引值(建議記絕對值)
-
正切就用正切的索引方式寫索引(0 開始)
-
倒序切就用倒序的方式寫索引(-1 開始)
-
程式碼演示
"""
起始索引絕對值 > 結束索引絕對值
正序:能取到值
倒序:取不到值str_1[-3:-2]
昨天說正序切片:起始索引絕對值 < 結束索引絕對值
雖然能取到值,但是不好理解,這麼說目的就是讓大家不要用這種方式
"""
str_1='123456789'
str_2=str_1[-3:-2]
str_3=str_1[-3:-2:-1]
str_4=str_1[-1:2:-1]
print('正序切片值:',str_2)
print('倒序切片值:',str_3)
print('倒序切片值:',str_4)
輸出:
正序切片值: 7
倒序切片值:
倒序切片值: 987654
-
- 常用形式
-
字串運算
-
字串拼接
- “+”
-
重複輸出
-
-
字串轉義
\n
-
換行,列印字字串過程中遇到 \n 會換行列印
print('hello\npython')
輸出:
hello
python\ 和 r
- 在非特殊符號前面功能就是【續行符】
- 在運算子或者特殊符號前面就是【關閉轉義】
-
列印\n
print('\n')# r raw
print(r'\n')
\n# 列印引號print(""")
print('"')
輸出:"
-
- 列印空格
print(\000)
-
\\
- 單獨列印一個反斜槓是打印不出“\”的會報錯
-
正確列印方式 # 通過轉義列印
print('\')
\
-
夾在字串中間列印
print('hello\hello')
-
- 單獨列印一個反斜槓是打印不出“\”的會報錯
-
關閉轉義(r)
- 關閉轉義,讓等具有特殊意義的字元失效,按照原本的意思輸出
print(r'hello \n oython')
- 關閉轉義,讓等具有特殊意義的字元失效,按照原本的意思輸出
-
-
字串常用方法
- 單詞大小寫相關
- upper:所有字母大寫
string.upper()
- lower:所有字母小寫
string.lower()
- 其他方法(瞭解)
- capitalize:整個字串首字母大寫
string.capitalize()
new_str='python'
print(new_str.capitalize())
輸出:Python - title:每個單詞首字母大寫
string.title()
new_str='hello python'
print(new_str.title())
輸出:Hello Python - swapcase:大小寫互換
string.swapcase()
new_str='Hello Python' print(new_str.swapcase()) 輸出:hELLO pYTHON
- capitalize:整個字串首字母大寫
- upper:所有字母大寫
- 統計相關
-
count:返回子字串在字串中出現的次數
string.count(sub, start= 0,end=len(string))
- sub:搜尋的子字串
- start:字串開始搜尋的位置。預設為第一個字元,第一個字元索引值為 0
- end:字串中結束搜尋的位置。字元中第一個字元的索引為 0。預設為字串的最後一個位置
str_1='1233333456789' new_str=str_1.count('3',0,len(str_1)) print(new_str) 輸出:5
- sub:搜尋的子字串
-
find:預設只查詢第一個字串,如果包含子字串返回查詢到的第一個字串索引值,否則返回-1
string.find(str, beg=0, end=len(string))
- str:指定檢索的字串
- beg:開始索引,預設為 0
- end:結束索引,預設為字串的長度
str_1='123456789' new_str=str_1.find('5',0,-1) print(new_str) 4
-
rfind:返回字串最後一次出現的位置,如果沒有匹配項則返回 -1
string.rfind(str,beg=0, end=len(string))
- str:指定檢索的字串
- beg:開始索引,預設為 0
- end:結束索引,預設為字串的長度
str_1='hello python' new_str=str_1.rfind('o') print(new_str) 10
-
判斷相關
- string.isupper():判斷字串是否都是大寫,返回布林值
- string.islower ():判斷字串是否都是小寫,返回布林值
- string.isalnum():判斷字串是否由數字字母漢字組成,返回布林值
- string.isalpha():判斷字串是否由字母漢字組成,返回布林值
- string.isspace():判斷是否有空格,返回布林值
- string.title():判斷字串是否每個單詞首字母大寫,返回布林值
-
- 拆分&替換
- string.split(sep=None, maxsplit=-1):字串拆分,預設空格拆分,可以指定字元切
- sep:拆分字元
- maxsplit=-1:最多進行多少次拆分,預設為-1 表示不做限制,0 表示不拆分
- 拆分後的值作為一個 list 返回
- 拆分過程中會丟棄拆分符號
str="aafbbfccfddfee" new_str=str.split('f') ['aa','bb','cc','dd','ee']
- string.join(iterable):將序列中的元素以指定的字元連線生成一個新的字串
- iterable:元組、列表、字典、字串
- string:iterable 內部元組間的連線符號
# 用“-”連線 new_string='-'.join(['I','love','python']) print(new_string) I-love-python
- string.replace(old, new, count=None):替換字串,返回替換後的字串,不會修改原來的字串
- old:需要替換的字元
- new:替換後的字元
- count:需要替換的個數,非必填,如不填,預設全部替換
str_1 = '1233333333456789' # old, new, count=None new_str = str_1.replace('3', 'A', 1) print(new_str) 輸出:12A3333333456789
- 其他方法
- string.splitlines(keepends=None):字串拆分,按換行符進行拆分
- \r:回車、\n:換行
- keeppends(False) 在輸出時是否去掉換行符(\r,\r\n,\n)預設 False,如果改為 True 則保留換行符
- string.zfill(width):將 string 放右邊,返回指定長度的字串,長度不夠在前面填充 0
- width:返回字串的長度
- string.center(width, fillchar=None):將 string 放中間,返回指定長度的字串,長度不夠從字串兩邊一起填充指定字元
- width:返回字串的長度
- fillchar=None:指定填充字元,預設為 None,填充空格
- string.rjust(width, fillchar=None) 返回指定長度的字串,從字串左邊填充指定字元
- width:返回字串的長度
- string.splitlines(keepends=None):字串拆分,按換行符進行拆分
- fillchar=None:指定填充字元,預設為 None,填充空格
- string.split(sep=None, maxsplit=-1):字串拆分,預設空格拆分,可以指定字元切
- string.ljust(width, fillchar=None) 返回指定長度的字串,從字串右邊邊填充指定字元
- width:返回字串的長度
- fillchar=None:指定填充字元,預設為 None,填充空格
- 單詞大小寫相關
-
字串格式化輸出
- %(% 相當於佔位符)
-
%s:格式化字串
# 字串 price = 'the price is %s' %('none') print(price) the price is none # 數值 price = 'the price is %s' %(100) print(price) 輸出:the price is 100
- 注意點
- 當 %('test')中 test 傳的不是 str 型別,是數字的時候,會將數字強制轉換成 str
- 注意點
-
%d:格式化數值
price = 'the price is %d' %(-100) print(price) 輸出:the price is -100
- 注意點
- 當 %(10)括號中傳的不是整數型別,且無法強制轉換成整數型別的時候,會報錯
- 當 %(10)括號中傳的不是整數(int),是小數(float)的時候,會強制轉換成整數,小數部分會被抹掉
- 注意點
-
%f:格式化浮點數
- %f:不指定精度預設保留 6 位小數,無小數位就補 0
price = 'the price is %f' %(100) print(price) 輸出:the price is 100.000000
- %.2f:指定保留兩位小數
price = 'the price is %.2f' %(100) print(price) 輸出:the price is 100.00
- %f:不指定精度預設保留 6 位小數,無小數位就補 0
-
其他用法
- 百分號"%",數字,點"."的用法
-
數字在點前面:表示佔多少個字元位置
- 數字在點後面:表示保留幾位小數
""" 點前面的10表示該字浮點數前面佔10個字元位置 點後面的4表示該浮點數保留4位小數 """ print("this number is %10.4f" %(10.999) 輸出:this number is 10.9990
- 數字在點後面:表示保留幾位小數
-
橫槓“-”的用法
- 佔位符數字前帶槓(-)表示字元左對齊
print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Json",25,1.80)) 輸出:Name:Json Age:25 Height:1.80
- 佔位符數字前不帶槓(-)表示字元右對齊
print ("Name:%10s Age:%8d Height:%8.2f"%("Json",25,1.80))
Name: JSON Age: 25 Height: 1.80
-
- 百分號"%",數字,點"."的用法
-
format()函式
- 按順序取值
print("my name is {} age {}".format('老王',20))
輸出:my name is 老王 age 20 - 按索引取值
print("my name is {1} age {0}".format('老王',20))
輸出:my name is 20 age 老王 - 按關鍵字取值
print("my name is {name} age {age}".format(age=20,name='老王'))
輸出:my name is 老王 age 20 - 調整精度
# .表示在小數點後面進行運算 print('{:.2f}'.format(12.123456)) 輸出:12.12
- 百分比格式化
# . 表示在小數點後面進行運算 print("percent is {:.3%}".format(0.67899)) 輸出:percent is 67.899% print("percent is {:%}".format(0.67899)) 輸出:percent is 67.899000% print("percent is {:3%}".format(0.67899)) 輸出:percent is 67.899000%
- 其他用法
- 進位制轉換
# b:二進位制; o: 八進位制;x:十六進位制) print('{:b}'.format(10)) 輸出:1010
- 千位分隔符
print("{:,}".format(1234536789)) 輸出:1,234,536,789
- 進位制轉換
- 按順序取值
-
f"{}"
name='老王' age=20 print(f"my name is {name} age:{age}") 輸出:my name is 老王 age 20
-
- %(% 相當於佔位符)
作者:haili
連結:http://testingpai.com/article/1617353212847
來源:測試派
協議:CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/