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必備工具)
'''