控制流程之while,for和資料型別的內建方法
阿新 • • 發佈:2022-03-08
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方法切割完字串之後是一個列表"""