Python自我修煉(昇仙中....整數,布林值,字串,for迴圈)
python學習(整數,布林值,字串,for迴圈)
1.整數
在python3中所有的整數都是int型別. 但在python2中如果資料量比較大. 會使用long型別.但是在python3中不存在long型別.
整數可進行的操作 :
bit_length(). 計算整數在記憶體中佔用的二進位制碼的長度.
2.再談布林值
取值只有True,False(bool值沒有操作)
轉換問題:
- str => int int(str)
- int => str str(int)
- int => bool bool(int). 0是False 非0是True
- bool=>int int(bool) True是1, False是0
- str => bool bool(str) 空字串是False,不空是True
- bool => str str(bool) 把bool值轉換成相應的"值"
3.字串
字串用於儲存資料,但儲存資料量比較少,在python中用 ' (單引號) "(雙引號) '''(單引號三三引) """(雙引號三引)引起來的內容被稱為字串.
字串與索引的關係及其操作如下 :
索引(下標)
索引就是下標,下標從0開始,取值時索引所選長度不可以超過其本身.
s1 = "python學習" print(s1[0]) # 獲取第0個索引所對應的的元素. print(s1[1]) # 同上 print(s1[2]) # 同上 print(s1[3]) # 同上 print(s1[4]) # 同上 print(s1[5]) # 同上 print(s1[6]) # 同上 print(s1[7]) # 同上 print(s1[8]) # 同上 print(s1[9]) # 沒有9,越界了會報錯,索引長度不可以超過本身 print(s1[-1]) # -1表示倒數第一個 print(s1[-2]) # 倒數第二個
切片
語法 : str[start:end]
規則 : 顧頭不顧腚,從start開始擷取,擷取到end位置,但不包括end,切片長度可以超出範圍.
用法 : 我們可以使用下標來擷取部分字串的內容
s2 = "python好學習" print(s2[0:3]) # 從0獲取到3,不包含3,結果:pyt print(s2[6:8]) # 結果:好學 print(s2[6:9]) # 最答是8,但根據顧頭不顧腚,想要取到8必須給9 print(s2[6:10]) # 如果右邊已經過了最答值,相當於獲取到最後,切片長度可以超出範圍,索引長度不可以. print(s2[4:]) # 如果想獲取到最後,那麼:後可以不放值. print(s2[-1:-5]) # 從-1獲取到-5這樣是獲取不到任何結果的,從-1向右數,取值方向向右,數不到-5. print(s2[-5:-1]) # 取到學習這個資料了,但是,顧頭不顧尾,取不到最後一個. print(s2[-5:]) # 什麼都不寫就是取值到最後 print(s2[:-1]) # 這個是取到倒數第一個值,但不包含倒數第一的這個值 print(s2[:]) # 取全部
步長
切片語法 : str[start : end : step]
- start : 起始位置
- end : 結束位置
- step : 步長
步長用法 : 如果是整數,則從左往右取,如果是負數,則從右往左取,step預設是1取值方向從左往右.
s2 = "python好學習" print(s2[1:5:2]) # 從索引為1的位置開始取,取到索引為4的位置,每2個取1個,結果:yh print(s2[:5:2]) # 從索引為0的位置開始到索引為4的位置,每兩個取一個 print(s2[4::2]) # 從索引為4的位置開始取到最後,每兩個取一個 print(s2[-5::2]) # 從索引為-5的位置取到最後.每兩個取一個 print(s2[-1:-5]) # 從索引為-1的位置取到索引為-4的位置,但是什麼都沒有,因為取的方向是從左往右 print(s2[-1:-5:-1]) # 從索引為-1的位置取到索引為-4的位置,步長是-1,取的方向這時就從右往左. print(s2[-5::-3]) # 從索引為-5的位置開始取到最開始,每三個取一個,結果:oy
字串常用方法
注意 : 切記,字串是不可變的物件,所以任何操作對原字串是不會有任何影響.
大小寫互相轉換,常應用於校驗使用者輸入的驗證碼是否合法
# 首字母大寫 s1.capitalize() print(s1) # 輸出發現並沒有任何的變化,因為這裡的字串本身是不會發生改變的,需要我們重新賦值後用. ret1 = s1.capitalize() print(ret1) --------------------------------- # 全部轉換成小寫 ret = s1.lower() print(ret) --------------------------------- # 全部轉換成大寫 ret = s1.upper() print(ret) --------------------------------- # 大小寫互相轉換 ret = s1.swapcase() print(ret) --------------------------------- ret = s1.casefold() # 用於轉換成小寫,此方法不常用,和lower的區別:lower()對某些字元支援不夠好. casefold()對所有字母都有效,比如東歐的一些字母 print(ret) s2 = "БBß" # 俄美德 print(s2) print(s2.lower()) # 列印結果比對可以看到lower無法對德語轉化 print(s2.casefold()) --------------------------------- # 每個被特殊字元隔開的字母首字母大寫 s = "eggon,taibai*yinwang" ret = s.title() print(ret)# 列印結果 Eggon,Taibai*Yinwang s = "你好chen你好shuo我是" # 你好Chen你好Shuo我是 中問也算是特殊字元 print(s4.title())
字串的切割
# 居中 s = "周杰倫" ret = s.center(10, "*") # 拉長成10,把原字串放中間,其餘位置補* print(ret) --------------------------------- # 更改tab的長度 s = "alir\teon" print(s) print(s.expandtabs()) # 可以改變\t的長度, 預設長度更改為8 --------------------------------- # 去空格,常用於當用戶登入時,忽略使用者輸入的空格 s = " chen shuo nihao " ret = s.strip() # 去掉左右兩端的空格 print(ret) ret = s.lstrip() # 去掉左邊空格 print(ret) ret = s.rstrip() # 去掉右邊空格 print(ret) --------------------------------- # 字串替換 s = "chen_shuo_nihao" ret = s.replace('chen', 'hehe') # 把chen替換成hehe print(s) # 注意,字串是不可變物件. 所有操作用返回值 print(ret) # hehe_shuo_nihao ret = s.replace('n', 'yy', 2) # 把c替換成yy, 替換2個 print(ret) # 列印結果 cheyy_shuo_yyihao --------------------------------- # 字串切割 s = "chen,shuo,ni,hao" lst = s.split(",") # 字串切割,根據","進行切割 print(lst) # 列印結果是列表形式 ["chen","shuo","ni","hao"] #如果切割符在左右兩端,那麼一定會出現空字串,深坑請留意.
字串的查詢
s = "我叫sylar,我喜歡python,java,c等程式語言." ret1 = s.startswith("sylar") # 判斷是否以sylar開頭 print(ret1) ret2 = s.startswith("我叫sylar") # 判斷是否以我叫sylar開頭 print(ret2) --------------------------------- ret3 = s.endswith("語言") # 是否以'語言'結尾 print(ret3) ret4 = s.endswith("語言.") # 是否以'語言.'結尾 print(ret4) --------------------------------- ret7 = s.count("a") # 查詢"a"出現的次數 print(ret7) --------------------------------- ret5 = s.find("sylar") # 查詢'sylar'出現的位置 print(ret5) ret6 = s.find("tory") # 查詢'tory'的位置,如果沒有返回-1 print(ret6) ret7 = s.find("a", 8, 22) # 切片找 print(ret7) --------------------------------- ret8 = s.index("sylar") # 求索引位置,注意,如果找不到索引,程式會報錯 print(ret8)
is 系列
ret=1234 ret.isdecimal # 判斷是不是十進位制 ret.isalnum # 判斷是不是中文,字母,數字 ret.isalpha # 判斷是不是中文,字母 ret.isdigit # 判斷是否由純數字組成
計算字串的長度
s = "你好我是***" ret = len(s) # 計算字串的長度度 print(ret) # 列印結果為7 # len()是python的內建函式
4.for迴圈
for迴圈用法 : 我們可以使用for迴圈來便利(獲取)字串中的每一個字元.
for語法:
for 變數 in 可迭代物件:
pass
可迭代物件: 可以一個一個往外取值的物件in的用法:
在for中. 是把每一個元素獲取到賦值給前面的變數.
不在for中. 判斷xxx是否出現在str中.
# for迴圈, 把s中的每一個字元拿出來賦值給前面的c s="大家好,我是python學習者" for c in s: print(c) # 注意縮排字元 print(c) # 此時列印結果為for迴圈最後一次c的取值 # in在python中的用法 print('pyt' in s) # 此時打印出的結果是Ture
5.range範圍
語法 : range(start,end,step)
- start : 起始位置
- end : 結束位置
- step : 步長
注意 : 顧頭不顧尾,當range(10)為此形式時,起始位置預設從0開始到9結束,列印10