今日大綱:
1. 基礎資料型別 總覽 2. int 3. bool 4. str 5. for迴圈
1. 基礎資料型別 總覽
int: 用於計算,計數等 str:`這些內容`,使用者少量資料的儲存,便於操作 bool:True, False,兩種狀態,機器反饋給使用者的對/錯 list:[1, `k`, True, [], (), {}, ...] 大量的資料,各種資料型別,操作方便 tuple:(1, `k`, True, [], (), {}, ...) 只讀列表 dict:字典. 大量的關聯性資料 {`name`: `alex`, `name_list`: [`司徒`, `李蓮英`, ...], `太白`: {`name`: `太白`, `sex`: `男`}} set:集合. {} 關係測試. 兩種集合之間的並集是什麼等等.
2. int
i = 4 print(i.bit_length()) 查詢十進位制轉化成二進位制佔用的最小位數 結果: 3 十進位制 二進位制 1 0000 0001 2 0000 0010 3 0000 0011 4 0000 0100
3. bool
資料型別之間的轉化 int <--> str str(int); int(str) ****** int <--> bool 非0為True; 0為False True --> 1; False --> 0 str --> bool ``(空字串) --> False; 非空 --> True name = input(`>>>`) if name: print(666) else: print(`無內容`) bool --> str 沒啥意義
4. str
對字串的下面這兩部分操作,形成的都是一個新的字串,與原來的字串沒有關係
第一部分:索引、切片、步長
- 按照索引取值,取出來的都是一個字元形成的字串
s1 = `Python1期_騎士計劃` s2 = s1[0] print(s2) P print(type(s2)) <class `str`> s3 = s1[2] print(s3) t s4 = s1[-1] print(s4) 劃 s5 = s1[-2] print(s5) 計
- 按照切片取值, 顧頭不顧尾
s6 = s1[0:6] print(s6) Python s61 = s1[:6] print(s61) Python s7 = s1[1:7] print(s7) ython1 s8 = s1[6:-1] print(s8) 1期_騎士計 s81 = s1[6:] print(s81) 1期_騎士計劃
- 按照切片+步長
s1 = `Python1期_騎士計劃` s9 = s1[:5:2] print(s9) Pto s91 = s1[1::2] print(s91) yhn期騎計
如果想倒序取值,加一個反向步長(負號)
s10 = s1[-1:-5:-1] print(s10) 劃計士騎 s11 = s1[-1:-6:-2] print(s11) 劃士_
第二部分:字串的常用方法
name = `old boy` print(name.capitalize()) Old boy;首字母大寫 *** print(name.title()) Old Boy s1 = `alex wusir*taibai6nvshen` print(s1.title()) 非字母隔開的每個部分的首字母大寫 **
center: 字串居中,前後填充自定義的字元 **
print(name.center(20, `*`)) ******old boy*******
upper(全部大寫); lower(全部小寫) ******
print(name.upper()) OLD BOY
print(name.lower()) old boy
應用舉例:
username = input(`請輸入使用者名稱:`) code = `ADfeR`.lower() your_code = input(`請輸入驗證碼:`).lower() if username == `alex` and code == your_code: print(`登入成功`) name = `old boy`
startswith: 判斷以什麼為開頭 *****
print(name.startswith(`ol`)) True 判斷第5個位置之後的字串以什麼為開頭 print(name.startswith(`b`, 4)) True 判斷第2個位置到第5個位置的字串以什麼為開頭 print(name.startswith(`ld`, 1, 5)) True
endswith: 判斷以什麼為結尾 *****
與startswith用法一致 print(name.endswith(`o`)) False
swapcase: 大小寫轉換 **
name = `oLd boY` print(name.swapcase()) OlD BOy
find(*****): 通過元素找索引, 找到第一個元素就返回其索引值,沒有此元素則返回-1 *****
print(name.find(`d`)) 2 print(name.find(`Ld`)) 1 print(name.find(`w`)) -1 print(name.find(`o`, 1, -1)) 5; find也可以設定字串的開始和結束位置
index(*****): 通過元素找索引, 找到第一個元素就返回其索引值,沒有此元素則報錯
print(name.index(`w`)) 報錯
strip(*****): 預設去除字串前後的空格,換行符( ),製表符( )
name = ` old boy ` print(name.strip()) 結果: old boy
strip:指定去除的字元
name1 = `*alex**` print(name1.strip(`*`)) alex name2 = `weralexqwe` print(name2.strip(`erw`)) alexq
應用舉例:
username = input(`請輸入使用者名稱:`).strip() if username == `alex`: print(`登入成功`)
lstrip: 去除前面的空格
rstrip: 去除後面的空格
split: 將字串分割成列表(str --> list); 預設按照空格分割
s1 = `alex wusir taibai` l1 = s1.split() print(l1) [`alex`, `wusir`, `taibai`] s2 = `alex,wusir taibai` l2 = s2.split(`,`) print(l2) [`alex`, `wusir taibai`]
注意這三個的區別
s3 = ` alex wusir taibai` print(s3.split()) [`alex`, `wusir`, `taibai`] s31 = ` alex wusir taibai` print(s31.split(` `)) [``, `alex`, `wusir`, `taibai`] s4 = `,alex,wusir,taibai` print(s4.split(`,`)) [``, `alex`, `wusir`, `taibai`]
設定split的分割次數
s5 = `alexlwle` print(s5.split(`l`, 1)) [`a`, `exlwle`] print(s5.rsplit(`l`))
join(**********): 自定製連線符,將可迭代物件中的元素連線起來
str1 = `alex` s2 = `*`.join(str1) print(s2) a*l*e*x
replace(*****): 替換
str2 = `alex 是創始人,alex很牛逼,alex...` s3 = str2.replace(`alex`, `SB`) print(s3) SB 是創始人,SB很牛逼,SB...
可以設定替換次數,但是隻能從前往後開始替換
str2 = `alex 是創始人,alex很牛逼,alex...` s3 = str2.replace(`alex`, `SB`, 1) print(s3) SB 是創始人,alex很牛逼,alex...
格式化輸出: format
三種方式 第一種: s1 = `我叫{}, 今年{}, 性別{}`.format(`太白`, `28`, `男`) print(s1) 我叫太白, 今年28, 性別男 第二種: s2 = `我叫{0}, 今年{1}, 性別{2}, 我還是叫{0}`.format(`太白`, `28`, `男`) print(s2) 我叫太白, 今年28, 性別男, 我還是叫太白 第三種: s3 = `我叫{name}, 今年{age}, 性別{sex}, 我還是叫{name}`.format(age = `28`, name = `太白`, sex = `男`) print(s3) 我叫太白, 今年28, 性別男, 我還是叫太白
is 系列
name = `taibai123` print(name.isalnum()) True; 判斷name是否以字母或者數字組成 print(name.isdigit()) False; 判斷name是否全部以數字組成 print(name.isalpha()) False; 判斷name是否全部以字母組成
公共方法
count: 計數,計算給定字元出現幾次,可以進行切片 name = `alex` print(name.count(`a`)) 1 len: 計算字串有多長,就是元素的個數 print(len(name)) 4
5. for迴圈
先用while迴圈列印每個元素 s1 = `sdkjasgfjgsafkj` index = 0 while index < len(s1): print(s1[index]) index += 1
如果對一個資料型別進行迴圈或者是一個有限迴圈的時候,往往要用到for迴圈
for i in s1: for 變數 in iterable(可迭代物件) print(i) for i in s1: for 迴圈的次數是和可迭代物件的元素的個數有關 print(s1)