0005-20180422-自動化第六章-python基礎學習筆記

来源:https://www.cnblogs.com/mypython2018/archive/2018/09/16/9658123.html
-Advertisement-
Play Games

0005-20180422-自動化第六章-python基礎學習筆記 ...


day6

內容回顧:
1. 變數
2. 條件
3. while迴圈

4. 數據類型
- int
- bit_length
- bool
- True/False
- str
- upper
- lower
- strip
- split
- replace
- join
- capitalize
- startswith
- endswith
- isdecimal
- list
- append
- insert
- reverse
- tuple
-
- dict
- get
- items
- keys
- values
5. for

6. range

7. 編碼
ascii
unicode
utf-8
gbk

8. else

if xxx:
pass
else:
pass


while True:
pass
else:
pass


for item in xxx:
pass

else:
# 當可迭代對象中的元素,被迴圈完畢後執行一次
pass


例題:

while True:
for k in dic:
if 'k' in k:
del dic[k] #刪除後如果沒有下一行的break跳出此輪的for迴圈則字典會報錯----刪除了迴圈中的字典鍵值
break
else: #for迴圈結束的標誌----使用else
break
print(dic)


while True:
for k in dic:
if 'k' in k:
del dic[k] #刪除後如果沒有下一行的break跳出此輪的for迴圈則字典會報錯----刪除了迴圈中的字典鍵值
break
break
print(dic)

 

今日內容:
1. 數據類型
- bytes -----gbk,utf-8,..編碼
表現形式:name = b"alex"
name = b'\xe6\xb5\xb7\xe5\xa8\x87' #海嬌 #如果有中文表現形式為16進位字元
內部原理:utf-8或gbk...
- upper
***bytes 里的功能同str一樣,只是表現形式不同而已***
- lower
- strip
- split
- replace
- join
- capitalize
- startswith
- endswith
- isdecimal

- int
- bit_length
- to_bytes ,將數字轉換為位元組類型,6表示用多少個位元組表示,little/big用於指定生成位元組的順序
val = 66
#電腦硬體CPU處理的大端,小端
result=val.to_bytes(6,'big')#6控制的是生成多少個位元組的字元,big表示大端,CPU處理時,指示是從後往前讀(big)還是從前往後讀(little)
print(result)
#b'\x00\x00\x00\x00\x00B'


val = 66
#電腦硬體CPU處理的大端,小端
result=val.to_bytes(6,'little')#6控制的是生成多少個位元組的字元,big表示大端,CPU處理時,指示是從後往前讀(big)還是從前往後讀(little)
print(result)
#b'B\x00\x00\x00\x00\x00'#此處顯示3位,大寫的B是assic碼表示66的編碼,與二進位沒有關係



- from_bytes #將位元組再轉換為數字

val = 2
result=val.to_bytes(6,'little')
print(result)

#將位元組再轉換為數字:
data = int.from_bytes(result,'little')
print(data)
#b'\x02\x00\x00\x00\x00\x00'
#2



- bool
- True/False
- str ----unicode編碼 #py3中預設 name = "alex" --->網路傳輸或存硬碟則轉換為位元組:name = b"alex"
表現形式:name = "alex"
name = '海嬌' # 海---占4個位元組的01,嬌---占4個位元組的01
內部原理:unicode

示例:
# a = "alex" 通過gbk編碼在硬碟或網路傳輸中的01查看
a = "alex".encode('gbk')
for i in a:
print(bin(i))

# D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
# 0b1100001
# 0b1101100
# 0b1100101
# 0b1111000


name = "海嬌".encode('gbk')
for i in name:
print(bin(i))

D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
0b10111010
0b10100011
0b10111101
0b10111111


name_str = "海嬌" #預設unicode編碼格式8個位元組
name_tytes = name_str.encode('utf-8') #轉換為utf-8編碼後6個位元組

print(name_tytes)
# D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
# b'\xe6\xb5\xb7\xe5\xa8\x87'


name_str = "海嬌" #預設unicode編碼格式8個位元組
name_tytes = name_str.encode('gbk') #轉換為gbk編碼後4個位元組

print(name_tytes)

# D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
# b'\xba\xa3\xbd\xbf'


#二進位列印字元串以utf-8編碼的字元------海嬌----在記憶體中的二進位編碼
name_str = "海嬌" #預設unicode編碼格式8個位元組
name_tytes = name_str.encode('utf-8') #轉換為gbk編碼後4個位元組
for i in name_tytes:
print(bin(i))
# b'\xe6\xb5\xb7\xe5\xa8\x87'

# D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
# 0b11100110
# 0b10110101
# 0b10110111
# 0b11100101
# 0b10101000
# 0b10000111


name_str = "查顯忠" #預設unicode編碼格式12個位元組
name_tytes = name_str.encode('utf-8') #轉換為gbk編碼後9個位元組
print(name_tytes)
for i in name_tytes:
print(bin(i))

D:\Install-File\python-work\venv\Scripts\python.exe D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
b'\xe6\x9f\xa5\xe6\x98\xbe\xe5\xbf\xa0'
0b11100110
0b10011111
0b10100101
0b11100110
0b10011000
0b10111110
0b11100101
0b10111111
0b10100000




- upper
- lower
- strip
- split
- replace
- join
- capitalize
- startswith
- endswith
- isdecimal
- encode('utf-8或gbk') #把字元串轉換為位元組
示例:
name = "海嬌"

#把unicode編碼的字元串,轉換為utf-8編碼的位元組:
v1 = name.encode('utf-8')
#把unicode編碼的字元串,轉換為gbk編碼的位元組:
v2 = name.encode('gbk')
print(v1)
print(v2)

# b'\xe6\xb5\xb7\xe5\xa8\x87'
# b'\xba\xa3\xbd\xbf'
#以上utf-8和gbk編碼的海嬌互相不認識
- casefold #可以轉換所有語種的大寫轉小寫


- list
- append
- insert
- reverse
- tuple
-
- dict
- get
- items
- keys
- values

a、位元組和字元串相關:

記憶體:unicode編碼的0101


硬碟:utf-8 gbk gb2312編碼的0101

本質上,記憶體中都是01010101,具體是什麼樣子的01,需要根據編碼來決定。
不同編碼的0101,互相不認識。

a = "alex"

python3:
utf-8 -> 010100101
特殊的:
字元串:
表現上:a = "alex"
# ()本質是unicode編碼的010101
位元組:bytes
表現:a = b"alex"
本質:010101,某種編碼:utf-8,gbk,...


總結:
python3
str --> unicode
bytes --> gbk,utf-8,...



2. 文件操作

=============================腳本==========================

刪除字典中帶K字元的鍵值對腳本:

 1 #刪除字典中帶k字元的鍵值對
 2 """
 3 #方法1:
 4 dic = {
 5     'k1':'v1',
 6     'y2':'v1',
 7     'k11':'v1'
 8 }
 9 #把key重新創建一份
10 key_list = []
11 for k in dic:
12     #print(k)
13     key_list.append(k)
14 #迴圈所有的key
15 for key in key_list:
16     #print(key)
17     if 'k' in key:
18         del dic[key]
19 print(dic)
20 """
21 
22 """
23 #方法2
24 dic = {
25     'k1':'v1',
26     'y2':'v1',
27     'k11':'v1'
28 }
29 
30 while True:
31     for k in dic:
32         if 'k' in k:
33             del dic[k]  #刪除後如果沒有下一行的break跳出此輪的for迴圈則字典會報錯----刪除了迴圈中的字典鍵值
34             break
35     else:   #for迴圈結束的標誌----使用else
36         break
37 print(dic)
38 
39 """
40 
41 
42 """
43 #方法3
44 
45 dic = {
46     'k1':'v1',
47     'y2':'v1',
48     'k11':'v1'
49 }
50 
51 for key in list(dic.keys()):
52     if 'k' in key:
53         del dic[key]
54 print(dic)
55 """

 

設置for迴圈完畢的條件腳本:

1 #設置for迴圈完畢的條件:
2 
3 li = [11,22,33,44,55]
4 for item in li:
5     print(item)
6 else:
7     print('for-迴圈完畢')

 

數據類型補充知識相關腳本:

 1 """
 2 # a = "alex" 通過gbk編碼在硬碟或網路傳輸中的01查看
 3 a = "alex".encode('gbk')
 4 for i in a:
 5     print(bin(i))
 6 
 7 # D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
 8 # 0b1100001
 9 # 0b1101100
10 # 0b1100101
11 # 0b1111000
12 
13 """
14 
15 """
16 name = "海嬌".encode('gbk')
17 for i in name:
18     print(bin(i))
19 # D: / Install - File / python - work / auto - chapter6 / 3 - data -class -supplement.py
20 # 0b10111010
21 # 0b10100011
22 # 0b10111101
23 # 0b10111111
24     
25 """
26 
27 """
28 name_str = "海嬌" #預設unicode編碼格式8個位元組
29 name_tytes = name_str.encode('utf-8')   #轉換為utf-8編碼後
30 
31 print(name_tytes)
32 # D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
33 # b'\xe6\xb5\xb7\xe5\xa8\x87'
34 """
35 
36 """
37 name_str = "海嬌" #預設unicode編碼格式8個位元組
38 name_tytes = name_str.encode('gbk')   #轉換為gbk編碼後4個位元組
39 
40 print(name_tytes)
41 
42 # D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
43 # b'\xba\xa3\xbd\xbf'
44 """
45 
46 """
47 name_str = "海嬌" #預設unicode編碼格式8個位元組
48 name_tytes = name_str.encode('utf-8')   #轉換為gbk編碼後4個位元組
49 for i in name_tytes:
50     print(bin(i))
51 
52 # D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
53 # 0b11100110
54 # 0b10110101
55 # 0b10110111
56 # 0b11100101
57 # 0b10101000
58 # 0b10000111
59 """
60 
61 """
62 name_str = "查顯忠" #預設unicode編碼格式8個位元組
63 name_tytes = name_str.encode('utf-8')   #轉換為gbk編碼後4個位元組
64 print(name_tytes)
65 for i in name_tytes:
66     print(bin(i))
67 
68 # D:\Install-File\python-work\venv\Scripts\python.exe D:/Install-File/python-work/auto-chapter6/3-data-class-supplement.py
69 # b'\xe6\x9f\xa5\xe6\x98\xbe\xe5\xbf\xa0'
70 # 0b11100110
71 # 0b10011111
72 # 0b10100101
73 # 0b11100110
74 # 0b10011000
75 # 0b10111110
76 # 0b11100101
77 # 0b10111111
78 # 0b10100000
79 
80 """
81 
82 """
83 name = "海嬌"
84 
85 #把unicode編碼的字元串,轉換為utf-8編碼的位元組:
86 v1 = name.encode('utf-8')
87 #把unicode編碼的字元串,轉換為gbk編碼的位元組:
88 v2 = name.encode('gbk')
89 print(v1)
90 print(v2)
91 
92 # b'\xe6\xb5\xb7\xe5\xa8\x87'
93 # b'\xba\xa3\xbd\xbf'
94 #以上utf-8和gbk編碼的海嬌互相不認識
95 """

 

數據類型整數補充相關知識腳本:

 1 ##################int###########
 2 """
 3 val = 9
 4 result = val.bit_length()   #二進位位所占的最大長度
 5 print(result)
 6 """
 7 
 8 """
 9 val = 2
10 result=val.to_bytes(3,'big')
11 print(result)
12 b'\x00\x00\x02'
13 """
14 
15 """
16 val = 2
17 result=val.to_bytes(6,'big')
18 print(result)
19 #b'\x00\x00\x00\x00\x00\x02'
20 """
21 
22 """
23 val = 66
24 #電腦硬體CPU處理的大端,小端
25 result=val.to_bytes(6,'big')#6控制的是生成多少個位元組的字元,big表示大端,CPU處理時,指示是從後往前讀(big)還是從前往後讀(little)
26 print(result)
27 #b'\x00\x00\x00\x00\x00B'#此處顯示3位,大寫的B是assic碼表示66的編碼,與二進位沒有關係
28 
29 #idle測試輸出如下:
30 # >>> bin(66)
31 # '0b1000010'
32 # >>> 
33 
34 """
35 
36 """
37 val = 66
38 #電腦硬體CPU處理的大端,小端
39 result=val.to_bytes(6,'little')#6控制的是生成多少個位元組的字元,big表示大端,CPU處理時,指示是從後往前讀(big)還是從前往後讀(little)
40 print(result)
41 #b'B\x00\x00\x00\x00\x00'#此處顯示3位,大寫的B是assic碼表示66的編碼,與二進位沒有關係
42 """
43 
44 val = 2
45 result=val.to_bytes(6,'little')
46 print(result)
47 
48 #將位元組再轉換為數字:
49 data = int.from_bytes(result,'little')
50 print(data)

 

數據類型字元串補充相關知識腳本:

 1 ##########str##########
 2 #str
 3 """
 4 name = 'alEx'
 5 result = name.casefold()#β在法語里通通過casefold轉為小寫ss
 6 #casefold可以轉換所有語種的大寫轉小寫
 7 print(result)
 8 result = name.lower()#英文字母的轉小寫
 9 print(result)
10 
11 name = 'β'
12 result = name.casefold()
13 print(result)
14 
15 """
16 #center---在中間的兩側分別插入指定字元,總寬度為指定寬度
17 """
18 name = 'alEx'
19 val = name.center(20,'*')
20 print(val)
21 #********alEx********
22 """
23 """
24 name = 'alE'
25 val = name.center(20,'*')
26 print(val)
27 #********alE*********
28 """
29 
30 #rjust 和 ljust 分別在右側或左側插入指定字元,總寬度為指定字元
31 """
32 name = 'alEx'
33 val = name.ljust(20,'*')
34 print(val)
35 #alEx****************
36 """
37 
38 """
39 name = 'alEx'
40 val = name.rjust(20,'*')
41 print(val)
42 #****************alEx
43 """
44 
45 #count
46 name =''

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、SpringMVC啟動過程 Spring的MVC是基於Servlet功能實現的,每個web工程中都有一個web.xml文件,web容器在啟動的時候會載入這個配置文件,當一個web應用載入到web容器中後,在web應用開始響應客戶端的請求之前,要按照順序執行下麵幾個步驟: 1、實例化部署描述符中的 ...
  • 通用的(泛型)演算法 generic algorithm 總覽 特性: 1,標準庫的順序容器定義了很少的操作,比如添加,刪除等。 2,問題:其實還有很多操作,比如排序,查找特定的元素,替換或刪除一個特定值等,但是標準庫並未給每個容器都定義成員函數來實現這些操作。 3,解決辦法:因為演算法是相同的邏輯,只 ...
  • 做運維的朋友應該知道,公司IDC機房經常有上架、下架、報修和報廢的伺服器。如果伺服器數量很多的時候很容易造成監控遺漏。 大的互聯網公司把監控系統和CMDB(資產管理系統|配置管理資料庫系統)集成在一起,當上架一臺新機器的時候CMDB裡面會記錄相關的信息,Zabbix根據CMDB裡面信息自動Link相 ...
  • 引言 在前幾篇文章中瞭解了ReentrantLock、Semaphore與CountDownLatch後,J.U.C包中基於AQS實現的併發工具類還剩一個比較重要的:讀寫鎖ReentrantReadWriteLock。讀寫鎖在Java面試過程中是一個經常性考的題目,他涉及到的知識點比較多,導致很多人 ...
  • Java學前要點 01 學習 ,有人推薦去培訓,有人說沒用,其實有錢的,不知道如何學,或者逼不得已去的就可以,也有人自己為了不花這些錢,而選擇自學,我覺得也行。 現在大部分人學東西要學的好,都是自學能力強的,我說的是大部分的情況,當然學習都是要花錢的,這一點我有深刻的理解,因為如果沒人教,自己學,就 ...
  • 一、算術運算符 加法:+,減法:-,乘法*,除法/,整除(地板除)//,取餘%,乘方**。 二、邏輯運算符 且:and,或:or,非:not 優先順序:not>and>or 短路原則: 對於and,如果前面的條件為假,那麼這個and前後兩條件組成的表達式的運算結果就一定為假,第二個條件就不會被計算。 ...
  • 00004-20180324-20180517-fahrenheit_converter--華氏溫度到攝氏溫度轉換計算器 ...
  • 0007-20180403-python-自動化基礎學習000--while-if 迴圈實操 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...