返回

Day06 - while循環、for循環、range方法

學習while循環補充知識,for循環使用,range使用,包含練習題4題

目錄

while循環補充說明

1.死循環
    真正的死循環是一旦執行 CPU功耗會急速上升 直到系統採取緊急措施
        盡量不要讓CPU長時間不間斷運算
        
2.嵌套及全局標誌位
    強調:一個break只能結束它所在的那一層循環
    強調:有幾個while的嵌套 想一次性結束 就應該寫幾個break
    強調:如果不想反覆寫break 可以使用全局標誌位
    is_flag = True
	while is_flag:
        username = input('username>>>:')
        password = input('password>>>:')
        if username == 'jimmy' and password == '123':
            while is_flag:
                cmd = input('請輸入您的指令>>>:')
                if cmd == 'q':
                    is_flag = False
                print('正在執行您的指令:%s' % cmd)
        else:
            print('使用者名稱或密碼錯誤')

流程控制之for循環

for循環能夠做到的事情while都可以做到 只不過for循環在一些場景下使用更簡單
主要場景為:循環獲取儲存多個數據的數據內部數據值
實際案例:
    name_list = ['jimmy', 'kevin', 'tony', 'oscar']  # 遍歷
    # 循環列印出列表中每一個數據值(while 索引取值>>>:超出範圍會報錯)
    # count = 0
    # while count < 4:
    #     print(name_list[count])
    #     count += 1
    # for循環
    for i in name_list:
        print(i)
for循環語法結構
    for 變數名 in 待遍歷的數據:
        for循環體代碼
            
for循環特點
    1.擅長遍歷取值
    2.不需要結束條件 自動結束(遍歷完)
    
for循環主要遍歷的數據類型有(常見有 字串列表元組字典集合)
     info = 'hello world'
    for i in info:
        print(i)  # 單個單個字元
    
    d = {'username': 'jimmy', 'password': 123}
    for i in d:
        print(i)  # 只有鍵參與遍歷
    
for循環語法結構中的變數名如何命名
    1.見名知意
    2.如果遍歷出來的數據值沒有具體的含義 可以使用常用的
        i j k item v
        
for循環體代碼中如果執行到break也會直接結束整個for循環

for循環體代碼中如果執行到continue也會結束當前循環直接開始下一次循環

for 變數名 in 待遍歷的數據:
    for循環體代碼
else:
    for循環體代碼沒有被break強制結束的情況下運行完畢之後 運行

range方法

range可以簡單的理解為是幫我們產生一個內部含有多個數字的數據

for i in range(101):  # 起始位置為0 終止位置為100 
    print(i)  # [0,.......100]
 
for i in range(10, 20):  # 第一個為起始位置 第二個終止位置
    print(i)
    
for i in range(1, 20, 2):  # 第三個數為等差值 默認不寫為1
    print(i)

for i in range(3): # 打印100三次  
    print(100)
"""
在python2中
    range()
        直接產生一個列表 內部含有多個數值
    xrange()
        其實就是python3裡面的range
在python3中
    range()
        類似於一個工廠 不會占用太多的記憶體空間 要就生產
"""

chenqingze@chenqingze-MBP Downloads % python2
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 19 2020, 20:48:48)
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

chenqingze@chenqingze-MBP Downloads % python2
Python 2.7.18 (v2.7.18:8d21aa21f2, Apr 19 2020, 20:48:48)
>>> xrange(10)
xrange(10)

chenqingze@chenqingze-MBP Downloads % python3
Python 3.9.13 (v3.9.13:6de2ca5339, May 17 2022, 11:37:23)
>>> range(10)
range(0, 10)

range實戰案例

網路爬蟲
    使用代碼爬取網路上我們需要的數據
項目需求
    爬取所有頁面的數據(部落格園)
找尋規律
    https://www.cnblogs.com/
    https://www.cnblogs.com/#p2
    https://www.cnblogs.com/#p3
    https://www.cnblogs.com/#p4
    
    大膽猜測:第一頁是 https://www.cnblogs.com/#p1
編寫程式碼產生部落格園文章前兩百頁的網址
    
'''
分頁的規律 不同的網址有所區別
    1.在網址裡面有規律
    2.內部js文件動態載入
'''

"""  
https://www.cnblogs.com/  
https://www.cnblogs.com/#p2  
https://www.cnblogs.com/#p3  
https://www.cnblogs.com/#p4  
"""  
  
# 1.先定義網址的模版  
base_url = 'https://www.cnblogs.com/#p%s'  
for i in range(1, 201):  
    print(base_url % i)  
    # 通過代碼朝上述的網址發送請求獲取頁面數據

作業講解

1.計算1-100所有的數之和
2.判斷列表中數字2出現的次數  
 l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]
3.編寫程式碼自動生成所有頁網址(注意總共多少頁)
    https://movie.douban.com/top250
4.編寫程式碼列印出下列圖形(ps:for循環嵌套)  
*****  
*****  
*****  
*****
1.計算1-100所有的數之和
    all_num = 0
    for i in range(1, 101):
        all_num += i
    print(all_num)
    
2.判斷列表中數字2出現的次數  
    l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]
    # 1.先定義一個紀錄數字2出現次數的計數器
    count_num = 0
    # 2.循環獲取列表中每一個數據值判斷是不是數字2
    for i in l1:
        # 3.如果i綁定的數據值是2 則讓計數器自增1
        if i == 2:
            count_num += 1
    # 4.等待for循環運行結束 列印計數器
    print(count_num)
    
3.編寫程式碼自動生成所有頁網址(注意總共多少頁)
    https://movie.douban.com/top250?start=0&filter=
    https://movie.douban.com/top250?start=25&filter=
    https://movie.douban.com/top250?start=50&filter=
    
    base_url = 'https://movie.douban.com/top250?start=%s&filter='
    for i in range(0, 250, 25):
        print(base_url % i)
        
4.編寫程式碼列印出下列圖形(ps:for循環嵌套)  
*****  
*****  
*****  
*****

for i in range(4):  # 0 1 2 3          4次   4行
    for j in range(5):  # 0 1 2 3 4    5次   5列
        print('*', end='')
    print()  # 每次內層循環結束 換行
'''
補充debug除錯模式(程式設計師後期找bug必備工具)
'''
comments powered by Disqus
使用 Hugo 建立
主題 StackJimmy 設計
發表了128篇文章 · 總計63.96k字
本站已運行
·