1. 程式人生 > 其它 >控制流程之while,for和資料型別的內建方法

控制流程之while,for和資料型別的內建方法

while...else組合使用

while和else的連用一般情況下用的較少,原因在於while不被break主動結束迴圈的情況下才會執行else,
只能正常結束迴圈體程式碼之後才會去執行else的子程式碼

'''
語法結構: # else與while同一縮排
    while 條件:
        while的子程式碼,即迴圈體程式碼(可多行)
    else:  
        如迴圈體程式碼正常執行 則執行else的子程式碼(可多行)
'''
  • 用例:
num = 0  # 定義變數num用於計數
while num < 10:   #迴圈10次
    num += 1      #每次加一
    if num == 6:  # if判斷當num==6執行子程式碼
        continue  # 跳過本次迴圈 回到本層while繼續執行迴圈體
    print(num, end=' ')
else:    # 不被break打斷迴圈,迴圈體正常執行完畢 繼續執行以下子程式碼
    print('雞哥牛皮')   # 可正常被執行


#輸出結果:1 2 3 4 5 7 8 9 10 雞哥牛皮
  • 反例

死迴圈與while巢狀

死迴圈

    當while一直滿足條件,且迴圈體不會被中斷和強制結束迴圈體則會一直被cpu執行下去
    # 死迴圈極其佔用電腦資源和考驗其電腦的效能 甚至會造成硬體的損壞
  eg:
    num = 0
    while True:  # 1恆為真
        while num > 10:  # 2為False不執行下面的子程式碼
            if num == 6:
                break
            print(num, end=' ')
            num += 1
        else:  # 3子程式碼會一直列印下去
            print('雞哥牛皮')

while巢狀

    就是再原來while的基礎上再套上一層while就像套娃一樣理論上可以無限巢狀下去,但一般請款下兩到三層就夠用了
    '''
    語法結構:
        while 條件:
            while 條件:
                while 條件:
                      ...
'''

    eg:
      num = 0
      flag = True
      while flag:  # 第一層
          while num < 10:  # 第二層
              num += 1
              while num == 6:  # 第三層
                  flag = False
              print(num)
          else:  
              print('雞哥牛皮')

for迴圈

for迴圈的使用

  for迴圈的作用跟while迴圈差不多,for迴圈能做到的事情用while迴圈也可以做到
  但是我們還是要學習的,因為for迴圈的語法更加簡單 平時的使用頻率更高
  一般情況下涉及到迴圈取值的時候 都會考慮使用for迴圈

'''
    語法結構:
        for 變數名 in for迴圈的物件:  # 字串、列表、字典、元組、集合
            迴圈體程式碼
        #每次執行都會將迴圈物件中的一個元素賦值給變數名
'''

for迴圈作用於列表

    name_list = ['jason', 'kevin', 'tony', 'tank', 'oscar']
    #使用while迴圈依次打印出列表中所有的元素
    count = 0 while count < 5:     
    print(name_list[count])
        count += 1
    #使用for迴圈依次打印出列表中所有的元素
    for name in name_list:
        print(name)
    

for迴圈作用於字串:依次取出每一個字元

    for i in 'hello world':
        print(i, end='')
    # hello world 每個字母和空格都會被列印

for迴圈作用於字典(特殊):迴圈字典只能獲取到字典中的k 無法直接獲取v值

 dct = {'name': "aili", 'age': 18, 'hobby': 'game'}
 for i in dct:
     print(i)

for迴圈作用於元組

    # 跟for迴圈作用列表十分相似
    for i in (11, 22, 33, 44, 55):
        print(i)

for迴圈作用於迴圈集合:字典與集合內部的元素都是無序的

    for i in {11, 22, 33, 44, 55, 66}:
        print(i)

for迴圈補充

 """以下用法與while一致"""
    # for+break
	  break結束本層for迴圈
    # for+continue
	  continue結束本次for迴圈 直接開始下一次
    # for+else
	  for迴圈正常結束之後執行else子程式碼
    # for迴圈的巢狀   

拓展range關鍵字

就相當與一個數據集合,簡單點講就是一個用於放資料的容器 專業術語叫'迭代器' 相比與列表等更加節省空間
   # 用法1  括號內只寫一個數字  預設從0開始  顧頭不顧尾
   for i in range(10):  # 列印數字1~9
       print(i)

   # 用法2  括號內寫兩個數字  自定義起始位置 顧頭不顧尾
   for i in range(1, 10):  # # 列印數字1~9
        print(i)

   # 用法3  括號內寫三個數字  第三個數字表示的是等差數列的差值  預設情況下是1
   for i in range(1, 10, 2):  # 第三個數字2就是步長的意思 相當與等差數列的差值
       print(i)

資料型別的內建方法

  • 在程式設計軟體中 採用句點符快速檢視

整型int的內建方法

    # 型別轉換  
      cunt = '132' # 字串'123'
      print(cunt, type(cunt))
      cunt = int(cunt)  # 將字串'123'轉換為整型123
      print(cunt, type(cunt))
"""int方法只能轉換純數字的字串"""


拓展: 進位制數轉換

    # print(bin(100))  # 0b1100100    二進位制(0b開頭)
    # print(oct(100))  # 0o144        八進位制(0o開頭)
    # print(hex(100))  # 0x64         十六機制(0x開頭)
    # 將其他機制轉換成十進位制
    print(int('0b1100100', 2))
    print(int('0o144', 8))
    print(int('0x64', 16))

浮點型float的內建方法

	1.型別轉換
    res = float('11.11')
    print(res, type(res))  # 11.11
    res = float('11')
    print(res, type(res))  # 11.0
    float('abc')

字串str的內建方法

    #str可以轉換所有的基本資料型別
    str(要轉換的型別)

 s1 = 'hello world'
 1.索引取值
 print(s1[0])
 2.切片操作
 print(s1[2:4])  # 顧頭不顧尾
 3.步長
 print(s1[2:9:1])  # 第三個引數是步長 預設是1 依次獲取
 print(s1[2:9:2])  # 間隔一個取一個
 索引取切片擴充套件
 print(s1[-1])  # 獲取最好一個字元
 print(s1[-1:-5:-1])  # dlro  第三個引數還可以控制索引的方向
 print(s1[-5:-1])  # worl
 4.統計字串中字元的個數
 print(len(s1))  # 11
 5.成員運算
 print('ll' in s1)
 6.移除字串首位指定的字元(使用頻率較高)
 name = '  jason  '
 print(len(name))
 res = name.strip()  # 預設移除字串首尾的空格
 print(res, len(res))
 name1 = '$$$$jas$on$$$$'
 print(name1.strip('$'))
 username = input('username>>>>:').strip()
 if username == 'jason':
     print('我想去幹飯了!!!')
 7.按照指定的字元切割字串
data = 'jason|123|DBJ'
 print(data.split('|'))  # ['jason', '123', 'DBJ']
 name, pwd, hobby = data.split('|')  # 解壓賦值
print(data.split('|', maxsplit=1))  # ['jason', '123|DBJ']
print(data.rsplit('|', maxsplit=1))  # ['jason|123', 'DBJ']
"""split方法切割完字串之後是一個列表"""