1. 程式人生 > 其它 >python for迴圈和資料型別的內建方法

python for迴圈和資料型別的內建方法

python for迴圈和資料型別的內建方法

while與else連用

#while與else連用
for/else
僅當for迴圈執行完畢(沒有被break中斷)時執行else塊。
while/else
僅當while因條件為假而退出(即沒有被break中斷)時執行else塊
 """
  while 條件:
  迴圈體程式碼
  else:
迴圈體程式碼正常執行結束 則會執行該子程式碼塊
  """
   
   #程式碼示例:
   count = 1
   while count < 10:
       print(count)
       count += 1
   else:
       print('while迴圈結束輸出')

死迴圈和while巢狀迴圈

#死迴圈:在程式設計中,一個無法靠自身的控制終止的迴圈被稱為死迴圈。

'''死迴圈有些時候會極度的影響電腦的效能 甚至會造成硬體的損壞'''
#程式碼示例:
      count = 10
       while True:
           count *= 10
           
注:break語句是一種很方便的設計,但是,任何演算法都可以使用不包含break語句的其他語句來實現
在程式中是否使用break語句,跟個人程式設計風格有關。
應避免在一個迴圈體內使用過多的break語句。因為當迴圈有多個出口的時候,程式邏輯就顯得不夠清晰了。

   
#while巢狀迴圈
利用while迴圈制作九九乘法表
   #程式碼示例:
   i=1
j=1
while i<10:
   while j<=i:
       print(j, '*', i, '=', i * j, end='')  # end預設不換行
       j+=1
   j=1
   i+=1
   print()

   '''在迴圈體內嵌入其他的迴圈體,如在while迴圈中可以嵌入for迴圈, 反之,你可以在for迴圈中嵌入while迴圈'''

for迴圈

for迴圈可以做到的事情while迴圈都可以做到!!! 
但是for迴圈語法更加簡單 使用頻率更高
一般情況下涉及到迴圈取值的時候 都會考慮使用for迴圈而不是while迴圈

'''語法結構
for 變數名 in for迴圈物件: # 字串、列表、字典、元組、集合
for迴圈的迴圈體程式碼
每次執行都會將迴圈物件中的一個元素賦值給變數名'''

#程式碼示例:
一個簡單的for迴圈
   for i in ['you', 'are', 'hello']:
       print(i)
   
'''輸出結果是依次取出hello world 各個元素'''

# 迴圈字串:依次取出每一個字元
for i in 'hello world':
    print(i)

# 迴圈字典(特殊):迴圈字典只能獲取到字典的key value無法直接獲取
userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'}
for i in userinfo_dict:
    print(i)
       
       '''輸出結果:'''
       username
       age
       gender
'迴圈字典只能獲取到字典的key value無法直接獲取'

# 迴圈元組
    for i in (11, 22, 33, 44, 55):
        print(i)

# 迴圈集合:字典與集合內部的元素都是無序的
   for i in {11, 22, 33, 44, 55, 66}:
       print(i)

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

# for迴圈的巢狀

range關鍵字

range方法在python2和python3中有所區分
python2中range是直接產生一個列表 元素很多的情況下比較佔用空間
   python2中有一個xrange 其實就是python3裡面的range
   
   python3中range 不佔空間但是可以取出很多資料
   python3中就只有一個range了
   
#range()用法  
>>> range(1,5) #代表從1到5(不包含5) 顧頭不顧尾
[1, 2, 3, 4]
>>> range(1,5,2) #代表從1到5,間隔2(不包含5) 顧頭不顧尾
[1, 3]
>>> range(5) #代表從0到5(不包含5) 第三個數字表示的是等差數列的差值 預設情況下是1
[0, 1, 2, 3, 4]

#例
list的操作:
array = [1, 2, 5, 3, 6, 8, 4]
#這裡的順序標識
      [1, 2, 5, 3, 6, 8, 4]
      (0,1,2,3,4,5,6)
      (-7,-6,-5,-4,-3,-2,-1)

>>> array[0:] #列出0以後的
[1, 2, 5, 3, 6, 8, 4]
>>> array[1:] #列出1以後的
[2, 5, 3, 6, 8, 4]
>>> array[:-1] #列出-1之前的
[1, 2, 5, 3, 6, 8]
>>> array[3:-3] #列出3到-3之間的
[3]


'''什麼是爬蟲???
  通過編寫程式碼去網路上爬取我們需要的資料'''

自己找一個具有多頁資料的網址 研究url是否有規律
   有一些網址分頁是用的url
   有一個使用的是內部js指令碼(暫且忽略)
   
   #程式碼示例:
   url_demo = 'https://www.qidian.com/finish/page%s/'
for i in range(0,10):
   real_url = url_demo % i
   print(real_url)

   通過程式碼請求頁面獲取頁面資料
   然後根據業務需求篩選出特定的內容

資料型別的內建方法

1.整型int

int整型
1.型別轉換
2.進位制數轉換
   
# 型別轉換
# res = '123'
# print(type(res))
# res = int(res)
# print(type(res))

   '''int在做型別轉換的時候 只能轉換純數字'''
   # int('123.123') # 報錯 不識別小數點
   # int('dasda123') # 報錯 不識別除數字以外的資料
   '''int其實還可以做進位制數轉換'''
   print(bin(100))  # 將十進位制的100轉換成二進位制 0b1100100
   print(oct(100))  # 將十進位制的100轉換成八進位制 0o144
   print(hex(100))  # 將十進位制的100轉換成十六進位制 0x64
   # 0b開頭為二進位制數 0o開頭為八進位制數 0x開頭為十六進位制數
   print(int('0b1100100', 2))  # 100
   print(int('0o144', 8))  # 100
   print(int('0x64', 16))  # 100
 

2.浮點型float

float浮點型
1.型別轉換
   res = float('11.11')
   print(res, type(res))  # 11.11
   res = float('11')
   print(res, type(res))  # 11.0
   
   float('abc') #報錯

3.字串str

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)



       
# 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方法切割完字串之後是一個列表"""

python strip()方法

Python strip() 方法用於移除字串頭尾指定的字元(預設為空格)或字元序列
#程式碼示例:
username = '   dlrb   '
print(len(username)) #輸出字串長度
res = username.strip()  # 預設移除字串首尾的空格
print(res)

#指定字元
username1 = '^^^^dlrb^^^'
print(username1.strip('^'))

Python split()方法

ython split() 通過指定分隔符對字串進行切片,如果引數 num 有指定值,則分隔 num+1 個子字串
#程式碼示例
data = 'andi$dnana$diwm$wemqem'
print(data.split('$'))

#輸出結果:
['andi', 'dnana', 'diwm', 'wemqem']

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方法切割完字串之後是一個列表"""