今日總結for迴圈、range、、基本資料內建
阿新 • • 發佈:2022-03-08
今日內容
-
while + else 連用
-
死迴圈和while的巢狀
-
for迴圈基本使用
-
range關鍵字
-
for迴圈補充
-
for迴圈的巢狀
-
基本資料型別及內建方法
一、while + else連用
當while沒有關鍵字break主動結束的情況下,結束迴圈體程式碼之後會執行else的子程式碼
'''
while 條件:
執行的迴圈體程式碼
else:
迴圈體程式碼執行結束後會執行該子程式碼快
'''
二、死迴圈與while的巢狀
1、死迴圈 # 死迴圈的執行會極度影響電腦的效能,甚至會造成硬體的損壞 死迴圈就是永遠無法結束的迴圈,它會一直讓cpu工作
2、while的巢狀
在while迴圈中,可以迴圈體子程式碼中再增加一個迴圈體程式碼
三、for 迴圈基本使用
'''
for迴圈可以做到的事情,while迴圈都可以做到。
但是for迴圈語法更簡單,使用效率高
'''
在一般情況下迴圈取值,先考慮for迴圈
"""
語法結構:
for 變數名 in for 迴圈物件
迴圈物件可以是:字串、列表、字典、元組、集合
"""
'''
for迴圈的迴圈體程式碼每次執行都會將迴圈物件中的一個元素賦值給變數名
for迴圈中的變數名可以使用常用的i、j、k、w、num...
'''
1、for迴圈之字串 # 迴圈字串:依次取出每一個字元 # for i in 'hello world': # print(i)
2、for迴圈之字典
迴圈字典(特殊):迴圈字典只能獲取到字典的key value無法直接獲取
userinfo_dict = {'username': "Owen", 'age': 18, 'gender': 'male'}
for i in userinfo_dict:
print(i)
3、for迴圈之元組 迴圈元組:字典與集合內部的元素都是無序的 # for i in (11, 22, 33, 44, 55): # print(i) # for i in {11, 22, 33, 44, 55, 66}: # print(i)
四、range關鍵字
range方法在py2和py3中的區別
# 在python2中range是直接產生一個列表,元素很多的情況下會佔記憶體空間
# python2中的xrange其實就是python3的range
#python3中的range像哆啦A夢的口袋,不佔記憶體空間,但是可以取出很多資料
1、使用while迴圈,列印0-100
count = 0
while count < 101:
print(count)
count += 1
2、使用for迴圈
用法1、括號內只寫一個數字,預設從0開始
顧頭不顧尾
for i in range(101):
print(i)
用法2、括號內寫兩個數字,第一個數字定義起始位置
for i in range(1, 5):
print(i)
用法3、括號內寫三個數字,第三個數字表示的是等差數列的差值,預設為1
for i in range(1, 10, 3):
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迴圈補充
# for+break
break結束本層for迴圈
# for+continue
continue結束本次for迴圈,直接進行下一個
# for+else
for迴圈正常結束之後執行else子程式碼
六、資料型別的內建方法
# 補充:如何檢視資料型別的內建方法
藉助於程式設計軟體的自動提示,採用句點符快速檢視(目前只記帶m開頭的)
int整型
1、型別轉換
res = int('123') # 將int方法執行之後的結果賦值給變數res
print(res, type(res))
'''
int方法只能轉換純數字的字串
'''
2、進位制數轉換
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('13.14')
print(res,type(res))
res = float('55') # 當變數為整數時,它會自動轉化成帶有小數點的元素
print(res,type(res))
七、字串內建方法
1、型別轉換
str可以轉換所以基本資料型別
print(str(11),type(str(11)))
print(str(11.11),type(str(11.11)))
print(str([1,2,3,4,5]),type(str([1,2,3,4,5])))
print(str({1,2,3,4,5}),type(str({1,2,3,4,5})))
print(str(True),type(str(True)))
* 補充
s1 = 'hello world'
1、索引取值
print(s1[0])
2、切片操作
print(s1[2:5]) # 顧頭不顧尾
3、步長
print(s1[3:6:1]) # 第三個引數是步長,預設是1
print(s1[3:6:2]) # 現在就是擱一位取一位
4、統計字串中字元的個數
print(len(s1)) # 11位
5、成員運算
print(' w' in s1 )
6、移除字串首位指定的字元(使用率高)
name = ' owen '
print(len(name))
res = name.strip() # 預設移除字串首尾的空格
print(res,len(res))
age = '???123???'
print(age.strip('?'))
username = input('username>>>:').strip()
if username == 'owen':
print('瑞斯拜')
7、按照指定的字元切割字串
data = '熊大|熊二|光頭強'
print(data.split('|')) # ['熊大', '熊二', '光頭強']
""" split切割完字串之後,是一個列表 """
name1, name2, name3 = data.split('|') # 解壓賦值
print(data.split('|', maxsplit=1)) # ['熊大', '熊二|光頭強']
print(data.rsplit('|', maxsplit=1)) # ['熊大|熊二', '光頭強']