1. 程式人生 > >Python學習 day03打卡

Python學習 day03打卡

今天學習的主要內容:

ppython的基本資料型別:

1. python基本資料型別回顧

2.int---數字型別

4.str---字串型別

 

一.python基本資料型別

1. int==>整數.主要用來進行數學運算

2.str==>字串,可以儲存少量資料並進行相應的操作

3.bool==>判斷真假,Ture,False

4.list==>儲存大量資料.用[]來表示

5.tuple==>元組,不可以發生改變,用{}來表示

6.dict==>字典,儲存鍵值對,一樣可以儲存大量資料

5.set==>集合,儲存大量資料.不可以重複.其實就是不儲存value的dict

 

二.整數(int)

在python3中所有的整數都是int型別,但在python2中如果資料量比較大,會使用long型別.在python3中不存在long型別

整數可以進行的操作:

bit_length(),計算整數在記憶體中佔用的二進位制碼的長度

 

三.布林值(bool)

取值只有Ture,False.bool值沒有操作.

轉換問題:

str==>int     int(str)

int==>str    int(str)

int=>bool    bool(int),0是False費0是Ture

bool=>str    str(bool)  True是1, False是0

str=>bool     bool(str) 空字串是False,不空是Ture

bool=>str    str(bool)把bool值轉換成相應的"值"

 

四.字串(str)

把字元連成穿.在python中用',",''',""'引起來的用內被稱為字串.

4.1切片和索引

1.索引.索引就是下標.切記,下標從0開始.0 1 2 3 4 5...

舉例:

s1 = "python最⽜牛B"
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]) # 倒數第⼆二個

2.切片.我們可以使用下表來擷取部分字串的內容

語法:str[start:end]

規則:顧頭不顧尾,從start開始擷取.街渠道end位置.但不包括end

舉例:

s2 = "python最⽜牛B"
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]) # ⽜牛b, 取到資料了了. 但是. 顧頭不不顧腚. 怎麼取最後⼀一個呢?
print(s2[-5:]) # 什什麼都不不寫就是最後了了
print(s2[:-1]) # 這個是取到倒數第⼀一個
print(s2[:]) # 原樣輸出

跳著擷取

舉例:

# 跳著取, 步⻓長
print(s2[1:5:2]) # 從第⼀一個開始取, 取到第5個,每2個取1個, 結果: yh, 分析: 1:5=>
ytho => yh
print(s2[:5:2]) # 從頭開始到第五個. 每兩個取⼀一個
print(s2[4::2]) # 從4開始取到最後. 每兩個取⼀一個
print(s2[-5::2]) # 從-5取到最後.每兩個取⼀一個
print(s2[-1:-5]) # -1:-5什什麼都沒有. 因為是從左往右獲取的.
print(s2[-1:-5:-1]) # 步⻓長是-1. 這時就從右往左取值了了
print(s2[-5::-3]) # 從倒數第5個開始. 到最開始. 每3個取⼀一個, 結果oy

步長:如果是整數,則從左往右取.如果是負數.則從右往左取.預設是1

切片語法:

str[start:end:step]

start:起始位置

end:結束位置

step:步長

 

4.2字串的相關操作方法

切記,字串式不可變的物件,所以任何操作對原字串是不會有任何影響的

1.大小寫的轉換

s1.capitalize()

print(s1) #輸出發現並沒有任何的變化.因為這裡的字串本身是不會發生改變的.需要我們重新獲取

ret1 = s1.capitalize()

printr(ret1)

#大小寫的轉換

ret = s1.lower() # 全部轉換成小寫
print(ret)
ret = s1.upper() # 全部轉換成⼤大寫
print(ret)
# 應⽤, 校驗⽤使用者輸⼊的驗證碼是否合法
verify_code = "abDe"
user_verify_code = input("請輸⼊入驗證碼:")
if verify_code.upper() == user_verify_code.upper():
print("驗證成功")
else:
print("驗證失敗")
ret = s1.swapcase() # ⼤大⼩小寫互相轉換
print(ret)
# 不不常⽤用
ret = s1.casefold() # 轉換成小寫, 和lower的區別: lower()對某些字元⽀支援不夠好.
casefold()對所有字母都有效. 比如東歐的一些字母
print(ret)
s2 = "БBß" # 俄美德
print(s2)
print(s2.lower())
print(s2.casefold())
# 每個被特殊字元隔開的字母首字⺟母⼤大寫
s3 = "alex eggon,taibai*yinwang_麻花藤"
ret = s3.title() # Alex Eggon,Taibai*Yinwang_麻花藤
print(ret)
# 中⽂文也算是特殊字元
s4 = "alex老男孩wusir" # Alex老男孩Wusir
print(s4.title())

 

2.字串的切割

# 居中
s5 = "周杰倫"
ret = s5.center(10, "*") # 拉⻓長成10, 把原字串串放中間.其餘位置補*
print(ret)
# 更改tab的長度
s6 = "alex wusir\teggon"
print(s6)
print(s6.expandtabs()) # 可以改變\t的長度, 預設長度更更改為8
# 去空格
s7 = " alex wusir haha "
ret = s7.strip() # 去掉左右兩端的空格
print(ret)
ret = s7.lstrip() # 去掉左邊空格
print(ret)
ret = s7.rstrip() # 去掉右邊空格
print(ret)
# 應用, 模擬使用者登入. 忽略使用者輸入的空格
username = input("請輸入使用者名稱:").strip()
password = input("請輸入密碼: ").strip()
if username == 'alex' and password == '123':
print("登入成功")
else:
print("登入失敗")
s7 = "abcdefgabc"
print(s7.strip("abc")) # defg 也可以指定去掉的元素,
# 字元串替換
s8 = "sylar_alex_taibai_wusir_eggon"
ret = s8.replace('alex', '金⻆角⼤大王') # 把alex替換成金角⼤大王
print(s8) # sylar_alex_taibai_wusir_eggon 切記, 字串是不可變物件. 所有操作都
是產生新字元串返回
print(ret) # sylar_金角大王_taibai_wusir_eggon
ret = s8.replace('i', 'SB', 2) # 把i替換成SB, 替換2個
print(ret) # sylar_alex_taSBbaSB_wusir_eggon
# 字串串切割
s9 = "alex,wusir,sylar,taibai,eggon"
lst = s9.split(",") # 字元串切割, 根據,進行切割
print(lst)
s10 = """詩人
學者
感嘆號
渣渣"""
print(s10.split("\n")) # 用\n切割

s11 = "銀王哈哈銀王呵呵銀王吼吼銀王"
lst = s11.split("銀王") # ['', '哈哈', '呵呵', '吼吼', ''] 如果切割符在左右兩端. 那麼一
定會出現空字串.深坑請留留意
print(lst)

3.格式化輸出

# 格式化輸出
s12 = "我叫%s, 今年年%d歲了了, 我喜歡%s" % ('sylar', 18, '周杰倫') # 之前的寫法
print(s12)
s12 = "我叫{}, 今年年{}歲了了, 我喜歡{}".format("周杰倫", 28, "周潤發") # 按位置格式化
print(s12)
s12 = "我叫{0}, 今年年{2}歲了了, 我喜歡{1}".format("周杰倫", "周潤發", 28) # 指定位置
print(s12)
s12 = "我叫{name}, 今年年{age}歲了了, 我喜歡{singer}".format(name="周杰倫", singer="周潤
發", age=28) # 指定關鍵字
print(s12)

4.查詢

s13 = "我叫sylar, 我喜歡python, java, c等程式語言."
ret1 = s13.startswith("sylar") # 判斷是否以sylar開頭
print(ret1)
ret2 = s13.startswith("我叫sylar") # 判斷是否以我叫sylar開頭
print(ret2)
ret3 = s13.endswith("語言") # 是否以'語言'結尾
print(ret3)
ret4 = s13.endswith("語言.") # 是否以'語言.'結尾
print(ret4)
ret7 = s13.count("a") # 查詢"a"出現的次數
print(ret7)
ret5 = s13.find("sylar") # 查詢'sylar'出現的位置
print(ret5)
ret6 = s13.find("tory") # 查詢'tory'的位置, 如果沒有返回-1
print(ret6)
ret7 = s13.find("a", 8, 22) # 切片找
print(ret7)
ret8 = s13.index("sylar") # 求索引位置. 注意. 如果找不不到索引. 程式會報錯
print(ret8)

5.條件判斷

# 條件判斷
s14 = "123.16"
s15 = "abc"
s16 = "[email protected]"
# 是否由字母和數字組成
print(s14.isalnum())
print(s15.isalnum())
print(s16.isalnum())
# 是否由字母組成
print(s14.isalpha())
print(s15.isalpha())
print(s16.isalpha())
# 是否由數字組成, 不包括小數點
print(s14.isdigit())
print(s14.isdecimal())
print(s14.isnumeric()) # 這個比較牛B. 中文都識別.
print(s15.isdigit())
print(s16.isdigit())

練習

用演算法判斷某一個字串是否是小數

s17 = "-123.12"
s17 = s17.replace("-","")
if s17.isdigit():
    print("是整數")
else :
    if s17.count(".") == 1 and not s17.startswith(".") and not s17.endswith("."):
        print("是小數")
    else:
        print("不是小數")

 

6.計算字串的長度

例: 

s18 ="我是你的眼,我也是a"

ret = len(s18)

print(ret)

注意: len()是python的內建函式.所以訪問方式也不一樣.

len()和print()一樣

7.迭代

可以利用for迴圈來便利(獲取)字串中的每一個字元

語法:

for變數in可迭代物件:

  迴圈體

可迭代物件:可以一個一個往外取值的物件

s19 = "大家好, 我是VUE, 前端的小朋友們. 你們好麼?"
# 用while迴圈
index = 0
while index < len(s19):
print(s19[index]) # 利用索引切片來完成字元的查詢
index = index + 1
# for迴圈, 把s19中的每⼀一個字元拿出來賦值給前面的c
for c in s19:
print(c)
'''
in有兩種用法:
1. 在for中. 是把每一個元素獲取到賦值給前面的變量.
2. 不在for中. 判斷xxx是否出現在str中.
'''
print('VUE' in s19)


# 練習, 計算在字元串"I am sylar, I'm 14 years old, I have 2 dogs!"

s20 = "I am sylar, I'm 14 years old, I have 2 dogs!"
count = 0
for c in s20:
    if c.isdigit():
        count = count + 1
print(count)