1. 程式人生 > 其它 >迴圈與資料型別內建方法

迴圈與資料型別內建方法

一、while+else

# while與else連用
 當while沒有被關鍵字break主動結束的情況下,正常結束迴圈程式碼之後會執行else的子程式碼。
    如:
count = 1
while count < 10:
    print(count)
    count += 1
else:
    print('while迴圈壽終正寢了')
    

二、死迴圈

# 即無限迴圈,永遠不會終止,這就導致了死迴圈會極度的影響電腦的效能,甚至會損壞計算機硬體,並且一直佔用cpu工作。如:
	count = 10
    while true:
        count *= 10
  

三、while的巢狀

# while裡面再套while.
如:
while True:
    username = input('username>>>:')
    password = input('password>>>:')
    if username == 'jason' and password == '123':
        print('登入成功')
        while True:
            cmd = input('請輸入您的指令>>>:')
            print(cmd)
    else:
        print('使用者名稱或密碼錯誤')
# 需要注意的是此程式碼裡面的小while是個死迴圈程式碼

四、for迴圈

前提:for迴圈可以做到的事情while迴圈都可以做到,for迴圈使用頻率要比while迴圈高很多,但是難度卻沒有while迴圈高。

語法結構: 
	'''
	for 變數名  in for迴圈物件:有字串、列表、字典、元組、集合

	'''
 # 迴圈字串:依次取出一個字元,如:
  for i in 'hello wored':
        print(i)
 # 迴圈字典(特殊):迴圈字典只能取到字典裡的K,V無法直接獲取
如:userinfo_dict = {'username': "jason",'age': 18,'gender': 'make'}
for i in userinfo_dict:
    print(i)
 # 迴圈元組
for i in (11,22,33,44,55):
    print(i)
 # 迴圈集合:字典與集合內部的元素都是無序的
for i in {11,22,33,44,55,66}:
    print(i)
# name_list = ['jason','kevin','tony','tank','oscar']
1.使用while迴圈依次打印出列表中所有的元素
count = 0
while count < 5:
    print(name_list[count])
    count += 1
2.使用for迴圈依次打印出列表中所有的元素
for name in name_list:
    print(name)
    
 # 總結以上兩段程式碼,我們可以清楚的發現 for迴圈要比while迴圈簡單得多,所以一般情況下涉及到迴圈取值的時候,都會考慮用for迴圈,而且使用while迴圈的話,前提是你得知道列表中有多少個元素,而for迴圈就不用擔心這個問題。 

五、for迴圈補充

# for+break
	break結束本層for迴圈。
如:for i in range(10):
        if i == 4:
           break
    print(i)
  * 它只會列印到3

# for+continue
	continue結束本次for迴圈,直接開始下一次
如:for i in range(10):
        if i == 4:
            continue
    print(i)
  * 那它就會跳過4,列印0-9  
    
# for+else
	for迴圈正常結束之後執行else子程式碼,與while一致
如:for i in range(10):
        if i == 4:
            continue
        print(i)
    slse:
        print('壽終正寢')
  * 它會先跳過4,然後把if條件迴圈完再執行else的條件

# for迴圈自帶增1

# for迴圈巢狀
for i in range(3):
    for i in rang(5):
        print('*')

六、range關鍵字

# range其實就是一個迭代器,用於產生一個數據集合,但是節省空間
# 用法一:括號內只寫一個數字,預設從0開始,顧頭不顧尾
for i in range(10):
    print(i)
    0,1,2,3,4,5,6,7,8,9,

# 用法二:括號內寫兩個數字,自定義起始位置,顧頭不顧尾
for i in range(1,10):
    print(i)
    1,2,3,4,5,6,7,8,9,
# 用法三:括號內寫三個數字,第三個數表示的是等差數列的差值,預設情況下是1
for i in range(1,10,2):
    print(i)
    1,3,5,7,9,
#range方法在python2和python3中有所區分
在python2中range是直接產生一個列表,元素很多的情況下比較佔空間,在python3中range相當於哆啦A夢的口袋,不佔空間但是可以取出很多資料

七、資料型別內建方法

# 如何檢視資料型別的內建方法?
可以藉助於程式設計軟體的自動提示,採用句點符快速檢視
# int整型
型別轉換
# 將int方法執行之後的結果賦值給變數res
res = int('123')
# int方法只能轉換純數字的字串
# 將十進位制轉換成其它機制
print(bin(100))  # 0b1100100   二進位制(0b開頭)
print(oct(100))  # 0o144       八進位制(0o開頭)
print(hex(100))  # 0x64        十六進位制(0o開頭)
# 將其它機制轉換成十進位制
print(int('0b1100100', 2))
print(int('0o144' 8))
print(int('0x64', 16))
float浮點型
1.型別轉換
# res = float('11,11')
# print(res,type(res))
# 11.11
# 字串內建方法
1.型別轉換
str可以轉換所有的基本資料型別
# s1 = 'hello world'
 1.索引取值
   print(s1[0])
# h
2.切片操作
print(s1[2:4])
# ll   顧頭不顧尾
3.步長
print(s1[2:9:1])  # 第三個引數是步長,預設是1,依次獲取
print(s1[2:9:2])  # 間隔一個取一個
print(s1[-1])     # 獲取最後一個字元
print(s1[-1:-5:-1])  # dlro  第三個引數還可以控制索引的方向
4.統計字串符中的字元個數
# print(len(s1))  # 11
5.成員運算
# print('ll' in s1)
6.移除字串首尾指定的字元(使用率較高)
# name1 = '$$$jas$on$$$$'
print(name1,strip('$'))  # jas$on
7.按照指定的字元切割字串
# data = 'jason|123|jdb'
print(data,split('|')) 
# ['jason','123','jdb']
# split方法切割完字串之後是一個列表
data = 'jason|123|jdb'
print(data,split('|',maxsplit=1)) 
# ['jason','123|jdb']