while + else 使用,while死迴圈與while的巢狀,for迴圈基本使用,range關鍵字,for的迴圈補充(break、continue、else) ,for迴圈的巢狀,基本資料型別及內建方法

你脫髮嗎發表於2022-03-08

今日內容

內容概要

  • while + else 使用
  • while死迴圈與while的巢狀
  • for迴圈基本使用
  • range關鍵字
  • for的迴圈補充(break、continue、else)
  • for迴圈的巢狀
  • 基本資料型別及內建方法

內容詳細

while+else

'''
語法結構
	while 條件:
		條件成立後執行的程式碼塊
	else:
		迴圈體正常結束後才會執行的程式碼塊
'''

執行流程圖:

image-20220308151037223
# eg:
	count = 1
    while count <10
        print (count)
        count += 1
    else:
        print("while迴圈正常結束了")

該程式碼的的執行結果為:

image-20220308145107163

while死迴圈

死迴圈有時候會極度的影響電腦的效能,甚至會造成硬體的損壞

就是永遠靠自身的控制終止的迴圈,並且一致佔用CPU工作

count = 10
while True:
	count *= 1
#此段程式碼就是一個死迴圈,它沒有結束的條件,只會依靠此段程式碼無限的迴圈運算

while巢狀

將一個while迴圈放入到另一個while迴圈體裡面,就形成了while巢狀,巢狀迴圈就是把內層迴圈,當成了外層迴圈的迴圈體

image-20220308152107123

for迴圈

'''
for迴圈可以做到的事情,while迴圈都可以做到
但for迴圈語法更加簡單,使用頻率更高
一般情況下,涉及到迴圈取值的時候,都會考慮使用for迴圈而不是while迴圈
'''
'''
語法結構
	for 變數名 in for迴圈物件: # 字串、列表、字典、元組、集合
		for迴圈的迴圈體程式碼
	每次執行都會將迴圈物件中的一個元素賦值給變數名
'''
# for迴圈命名要求
# 針對for迴圈語法結構中的變數名,也應該做到見名知意
# 如果真沒有合適的名字可使用常用的變數名i,j,k,v,num,item

# eg:
name_list = ['jason', 'kevin', 'tony', 'tank', 'oscar']
#使用while迴圈列印出列表名字
count = 0
while count < 5:
	print(name_list[count])
	count += 1
#使用for迴圈列印出列表名字
for i in name_list:
	print(i)
這兩種迴圈都可以列印出列表名字,但是for迴圈的程式碼明顯簡潔了很多

迴圈字串

依次取出每一個字元

for i in 'helloword':
	print(i)

執行結果如圖所示:

image-20220308154211327

迴圈字典

迴圈字典比較特殊,迴圈字典只能獲取到字典的key,而value無法直接獲取

# eg
userinfo_dict = {'username':'tuzi','age' = 18, 'gender': 'male'}
for i in userinfo_dict:
    print(i)

執行結果如圖所示:

image-20220308155313484

可以看到輸出結果只列印了字典的K值

迴圈元組

# eg
for i in (1,2,3,4):
    print(i)

執行結果為:

image-20220308155724022

迴圈集合

注:字典與集合內部都是無序的

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

執行結果為:

image-20220308155911367


range關鍵字

python2中 range() 函式可建立一個整數列表,一般用在 for 迴圈中。

range方法在python2和python中有所區分
在python2中range是直接產生一個列表,元素很多的情況下比較佔用空間
在python2中有一個xrange其實就是python3裡面的range
在python3中range相當於哆啦A夢的口袋(迭代器,後面會補充)不佔空間但是可以取出很多資料
在python3中就只有一個range了

區別如下圖

python2中的range

image-20220308160518211

python2中的xrange

image-20220308160558855

python3中的range

image-20220308160637601

range用法

# 用法1
# 括號內只寫一個數字,預設從0開始,顧頭不顧尾
for i in range(10):  
    print (i)
"""
  輸出結果為 0
            1
            2
            3
            4
            5
            6
            7
            8
            9
"""
# 用法2
# 括號內寫兩個數字,自定義起始位置,顧頭不顧尾
for i in range(1,10)
	print(i)
"""
輸出結果為
1
2
3
4
5
6
7
8
9
"""
#用法3 括號內寫三個數字,第三個數字表示的是等差數列的差值,預設情況下是1
for i in range(1,10,2):
    print(i)
"""
輸出結果為
1
3
5
7
9
"""

for 迴圈補充

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

image-20220308162735794

image-20220308162905146

image-20220308163056010

如何產看資料型別的內建方法

可以藉助程式設計軟體的自動提示 採用句點符快速檢視

資料型別的內建方法

int整型

  1. 型別轉換
  2. 進位制數轉換
# 型別轉換
res = int(123)  # 將int方法在執行之後的結果賦值給變數res
print(res,type(res))
# 只可以轉換整數,不能轉換其他型別(浮點型,字母)

轉換浮點型和字母會報錯

image-20220308164122167

image-20220308164147594

# 將十進位制轉換成其他進位制
bin 將十進位制轉換成二進位制
oct 將十進位制轉換成八進位制
hex 將十進位制轉換成十六進位制
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浮點型

# 型別轉換
res = float('11.11')
print(res,type(res))
# 需要注意的是,如果你轉換的是一個整型,那麼在轉換完畢後,會給你把這個整數加上小數點。
res = float('11')
print(res, type(res))
    float('abc')  # 結果為11.0

字串內建方法

  1. 型別轉換

    str 可以轉換所有的基本資料型別
    整型、浮點型、列表、字典、集合、元組、布林
    # 轉換方式為:str(轉換的資料,可以是任意資料型別)
    # 使用print(str(資料),type(str(資料)))來檢視轉換結果
    
  2. 索引取值

    s = 'hello world'
    print(s1[0])
    #輸出結果為h
    
  3. 切片操作

    s = 'hello world'
    print(s[2:4])  # 顧頭不顧尾
    輸出結果為ll
    
  4. 步長

    s = 'hello world'
    print(s[0:9:1])  # 第三個引數是步長 預設為1 依次獲取,顧頭不顧尾
    print(s[0:9:2])  # 間隔一個取一個
    # 結果:hlowr
    
    # 索引切片擴充套件
    print(s[-1])  #獲取最後一個字元
    print(s[-1:-8:-2])  # 第三個引數可以控制索引的方向
    # 結果:drwo
    
  5. 統計字串中字元的個數

    s = 'hello world'
    print(len(s))  
    #結果:11
    
  6. 成員運算

    s = 'hello world'
    print('lo'in s)
    # 必須是相連的字串,否則為false
    
  7. 移除字串首位指定的字元(使用頻率較高)

    strip
    # 用法
    name = '   tuzi    '
    print(len(name))  # 結果為11
    res = name.strip()  # 預設移除字串首尾的空格,也可以是其他字元
    print(res,len(res))  #結果為tuzi 4(字串長度)
    '''
    strip還分為lstrip(只移除左邊指定字串)
    		  rstrip(只移除右邊指定字串)
    '''
    
  8. 按照指定的字元切割字串

    split方法切割完之後是一個列表
    rsplit從右往左切
    date = 'tuzi|1234|meitoufa'
    print(date.split('|'))  
    # ['tuzi', '1234', 'meitoufa']
    username, password, hobby = date.split('|')
    print(username,password,hobby)
    # tuzi 1234 meitoufa
    split也可以設定步長,比如說想切一個不切了,也可以實現
    date = 'tuzi|1234|meitoufa'
    print(date.split('|',maxsplit=1))  # 只切一次
    # 輸出結果:['tuzi', '1234|meitoufa']
    print(date.rsplit('|',maxsplit=1))  # rsplit從右往左切
    # 輸出結果:['tuzi|1234','meitoufa']
    

相關文章