今日內容
內容概要
- while + else 使用
- while死迴圈與while的巢狀
- for迴圈基本使用
- range關鍵字
- for的迴圈補充(break、continue、else)
- for迴圈的巢狀
- 基本資料型別及內建方法
內容詳細
while+else
'''
語法結構
while 條件:
條件成立後執行的程式碼塊
else:
迴圈體正常結束後才會執行的程式碼塊
'''
執行流程圖:
# eg:
count = 1
while count <10
print (count)
count += 1
else:
print("while迴圈正常結束了")
該程式碼的的執行結果為:
while死迴圈
死迴圈有時候會極度的影響電腦的效能,甚至會造成硬體的損壞
就是永遠靠自身的控制終止的迴圈,並且一致佔用CPU工作
count = 10
while True:
count *= 1
#此段程式碼就是一個死迴圈,它沒有結束的條件,只會依靠此段程式碼無限的迴圈運算
while巢狀
將一個while迴圈放入到另一個while迴圈體裡面,就形成了while巢狀,巢狀迴圈就是把內層迴圈,當成了外層迴圈的迴圈體
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)
執行結果如圖所示:
迴圈字典
迴圈字典比較特殊,迴圈字典只能獲取到字典的key,而value無法直接獲取
# eg
userinfo_dict = {'username':'tuzi','age' = 18, 'gender': 'male'}
for i in userinfo_dict:
print(i)
執行結果如圖所示:
可以看到輸出結果只列印了字典的K值
迴圈元組
# eg
for i in (1,2,3,4):
print(i)
執行結果為:
迴圈集合
注:字典與集合內部都是無序的
# eg
for i in {11,22,33,44,55}:
print(i)
執行結果為:
range關鍵字
python2中 range() 函式可建立一個整數列表,一般用在 for 迴圈中。
range方法在python2和python中有所區分
在python2中range是直接產生一個列表,元素很多的情況下比較佔用空間
在python2中有一個xrange其實就是python3裡面的range
在python3中range相當於哆啦A夢的口袋(迭代器,後面會補充)不佔空間但是可以取出很多資料
在python3中就只有一個range了
區別如下圖
python2中的range
python2中的xrange
python3中的range
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一致
如何產看資料型別的內建方法
可以藉助程式設計軟體的自動提示 採用句點符快速檢視
資料型別的內建方法
int整型
- 型別轉換
- 進位制數轉換
# 型別轉換
res = int(123) # 將int方法在執行之後的結果賦值給變數res
print(res,type(res))
# 只可以轉換整數,不能轉換其他型別(浮點型,字母)
轉換浮點型和字母會報錯
# 將十進位制轉換成其他進位制
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
字串內建方法
-
型別轉換
str 可以轉換所有的基本資料型別 整型、浮點型、列表、字典、集合、元組、布林 # 轉換方式為:str(轉換的資料,可以是任意資料型別) # 使用print(str(資料),type(str(資料)))來檢視轉換結果
-
索引取值
s = 'hello world' print(s1[0]) #輸出結果為h
-
切片操作
s = 'hello world' print(s[2:4]) # 顧頭不顧尾 輸出結果為ll
-
步長
s = 'hello world' print(s[0:9:1]) # 第三個引數是步長 預設為1 依次獲取,顧頭不顧尾 print(s[0:9:2]) # 間隔一個取一個 # 結果:hlowr # 索引切片擴充套件 print(s[-1]) #獲取最後一個字元 print(s[-1:-8:-2]) # 第三個引數可以控制索引的方向 # 結果:drwo
-
統計字串中字元的個數
s = 'hello world' print(len(s)) #結果:11
-
成員運算
s = 'hello world' print('lo'in s) # 必須是相連的字串,否則為false
-
移除字串首位指定的字元(使用頻率較高)
strip # 用法 name = ' tuzi ' print(len(name)) # 結果為11 res = name.strip() # 預設移除字串首尾的空格,也可以是其他字元 print(res,len(res)) #結果為tuzi 4(字串長度) ''' strip還分為lstrip(只移除左邊指定字串) rstrip(只移除右邊指定字串) '''
-
按照指定的字元切割字串
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']