1. 程式人生 > 其它 >wlile、 for迴圈和基本資料型別及內建方法

wlile、 for迴圈和基本資料型別及內建方法

while + else

1.while與else連用
	當while沒有被關鍵字break主動結束的情況下
    正常結束迴圈體程式碼之後執行else的子程式碼
    """
    while 條件:
    	迴圈體程式碼
    else:
    	迴圈體程式碼正常結束執行 才會執行子程式碼塊
    """
	count = 1
    while count < 10:
        if count == 4:
            count += 1
            continue
        print(count)
        count += 1
    else:
        print('while迴圈壽終正寢了!!!')

死迴圈與while的巢狀

1.死迴圈有些時候會超級影響電腦效能 造成硬體的損壞
	死迴圈就是會佔用cup工作
    	count = 10
        while True:
            count *= 1
2.while巢狀
	falg = 
    while flag:
        username = input('username:')
        password = input('password:')
        if username == 'jason' and password == '123':
            print('登陸成功')
            while flag:
                cmd = input('請輸入你的指令:')
                if cmd =='q':
                    print('下次再見')
                    flag = False
                print('正在執行您的指令:%s' % cmd')
            else:
                 print("使用者名稱或密碼錯誤")

for迴圈

"""
for迴圈可以做到的事情while迴圈都可以做到!!! 
	但是for迴圈語法更加簡單 使用頻率更高
"""
一般情況下涉及到迴圈取值的時候 都會考慮使用for迴圈而不是while迴圈
"""
語法結構
	for 變數名 in for迴圈物件:  # 字串、列表、字典、元組、集合
		for迴圈的迴圈體程式碼
	每次執行都會將迴圈物件中的一個元素賦值給變數名

ps:針對for迴圈語法結構中的變數名 也應該做到見名知意
	如果真的沒有合適的名字可以使用常用的變數名i、j、k、v、num、item...
"""
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 i in 'hello world':
    print(i)

# 迴圈字典(特殊):迴圈字典只能獲取到字典的key value無法直接獲取
userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'}
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)
range方法在python2和python3中有所區分
	在python2中range是直接產生一個列表 元素很多的情況下比較佔用空間
    	在python2中有一個xrange 其實就是python3裡面的range
    在python3中range相當於哆啦A夢的口袋 不佔空間但是可以取出很多資料
    	在python3中就只有一個range了
 # 迴圈列印0-100
# while迴圈
count = 0
while count < 101:
    print(count)
    count += 1
# for迴圈
for i in range(101):  # 從0開始到100結束的資料集 顧頭不顧尾
    print(i)
"""range其實一個迭代器(後面講) 用於產生一個數據集合 但是節省空間"""


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


"""
什麼是爬蟲???
    通過編寫程式碼去網路上爬取我們需要的資料
    
https://movie.douban.com/top250?start=0&filter=
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=
https://movie.douban.com/top250?start=75&filter=
可以自己找一個具有多頁資料的網址 研究url是否有規律
    有一些網址分頁是用的url
    有一個使用的是內部js指令碼(暫且忽略)
"""
# url_demo = 'https://movie.douban.com/top250?start=%s&filter='
 for i in range(0, 250, 25):
     real_url = url_demo % i
    # 通過程式碼請求頁面獲取頁面資料
    # 然後根據業務需求篩選出特定的內容

for迴圈補充

1.for+break
	break結束本層for迴圈
2.for+continue
	continue結束本次for迴圈 直接開始下一次
3.for+else
	for迴圈正常結束之後執行else子程式碼
"""與while一致"""

# for迴圈的巢狀

如何檢視資料型別的內建方法

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

資料型別的內建方法

int整型
	1.型別轉換
 	2.進位制數轉換
# 型別轉換
res = int('123')  # 將int方法執行之後的結果賦值給變數res
print(res, type(res))  # int
"""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

字串內建方法

1.型別轉換
	str可以轉換所有基本資料型別
    	print(str(11), type(str(11)))
        print(str(11.11), type(str(11.11)))
        print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
        print(str({'name': 'jason'}), type(str({'name': 'jason'})))
        print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))
        print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))
        print(str(True), type(str(True)))
        
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方法切割完字串之後是一個列表"""