1. 程式人生 > >Python自我修煉(昇仙中....整數,布林值,字串,for迴圈)

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中用 ' (單引號) "(雙引號) '''(單引號三三引) """(雙引號三引)引起來的內容被稱為字串.

字串與索引的關係及其操作如下 :

  1. 索引(下標)

    索引就是下標,下標從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]) # 倒數第二個
  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[:]) # 取全部
  3. 步長

    切片語法 : 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
  4. 字串常用方法

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

    1. 大小寫互相轉換,常應用於校驗使用者輸入的驗證碼是否合法

      # 首字母大寫
      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())
    2. 字串的切割

      # 居中
      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"]
      #如果切割符在左右兩端,那麼一定會出現空字串,深坑請留意.
    3. 字串的查詢

      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)
    4. is 系列

      ret=1234
      ret.isdecimal # 判斷是不是十進位制
      ret.isalnum # 判斷是不是中文,字母,數字
      ret.isalpha # 判斷是不是中文,字母
      ret.isdigit # 判斷是否由純數字組成
    5. 計算字串的長度

      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