Python全棧學習_day003知識點

BlameKidd發表於2018-10-24

今日大綱:

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)

 

相關文章