一.Python語言基礎入門
第一章
01.初識Python
-
Python的起源:
- 1989年,為了打發圣誕節假期,Gudio van Rossum吉多·范羅蘇姆(龜叔)決心開發一個新的解釋程序(Python維形)
- 1991年,第一個Python解釋器誕生
- Python這個名字來自龜叔所摯愛的電視劇Monty Python’s Flying Circus
-
Python適用范圍:
-
IT從業者:自動化腳本(運維開發、測試開發等)
-
普通白領:自動化辦公
-
后端開發:WEB應用程序
-
科學家:基于Python完成數據計算(生物、化學、物理)
-
人工智能/機器學習:基于Python開發Al程序
-
大數據開發:基于Python完成大數據任務開發(Spark、Flink)
-
02.什么是編程語言
- 以Python為例
- 用于人類和計算機進行交流的一種語言,通過編寫編程語言的代碼,去指揮計算機工作。?它無法直接和計算機溝通,需要翻譯工具(解釋器或編譯器)將代碼翻譯成二進制,從而實現和計算機的暢順溝通
03.Python安裝
想要使用Python語言編寫程序,我們必須下載Python安裝包并配置Python環境,Python目前最新版本是:3.13.3(發布于2025年4月8日)
-
安裝Python開發環境
-
第一步:打開網址:Welcome to Python.org
-
第二步:點擊“Downloads”
-
第三步:進入后,點擊“Download Python 3.13.3”
-
第四步:下載好后,點擊Python安裝包
-
第五步:點擊“Customize installation”,并且勾選“Add python.exe to PATH”
-
第六步:默認是全選的,點擊“Next”
-
第七步:點擊”Browse“,選擇你想要放的位置
-
第八步:然后點擊”Inatall“,開始安裝
-
第九步:安裝成功后,會出現”Setup was successful“,然后點擊”Disable path length limit“關閉路徑長度的限制,最后點擊close就行了
-
第十步:驗證Python是否安裝成功,同時按下”win+r“鍵,然后輸入”cmd“,在命令行中輸入”python“,如果出現如下情況,則證明安裝成功。
-
04.第一個Python程序——”Hello world“
-
同時按下”win+r“鍵,然后輸入”cmd“,在命令行中輸入”python“,出現下面這個界面
-
然后接著輸入“print(“Hello World”)”,然后按下回車,命令行便會打印“Hello World”,如下
需要注意的點:
引號和括號必須要是英文的,不能是中文的,否則會報錯,如下
05.Python解釋器
基本原理:計算機只認識二進制,即0和1
- 計算機并不認識Python代碼,但是Python有解釋器程序。安裝Python環境就是在安裝Python解釋器程序,如下圖:
- Python解釋器就兩個功能:
- 1.翻譯代碼
- 2.提交給計算機運行
- Python解釋器在哪里
- 存放在:<Python安裝目錄>/Python.exe
- 我們在CMD(命令提示符)程序內,執行的python,就是上圖的python.exe程序
- 存放在:<Python安裝目錄>/Python.exe
那么問題來了,當我們在命令行中輸入完一行代碼后,按下回車,程序就直接運行了,有什么辦法可以同時運行多行代碼呢?
-
思路實現
- 我們可以將代碼,寫入一個以”.py”結尾的文件中,使用python命令去運行它。
- 如,在Windows系統的D盤,我們新建一個名為:test.py的文件,并通過記事本程序打開它,輸入如下內容:
- 在“命令提示符”程序內,使用python命令,運行它,如圖:
06.Pycharm開發工具的安裝
Python程序的開發有許多種方式,一般我們常見的有:
安裝步驟
- 第一步:打開網址:https://www.jetbrains.com/zh-cn/pycharm/
- 第二步:點擊“下載”
- 第三步:選擇社區版,點擊“下載”
- 第四步:點擊Pycharm安裝包
- 第五步:點擊“下一步”
- 第六步:先選擇安裝路徑,再點擊下一步
- 第七步:選擇如下按鈕,然后點擊下一步
- 第八步:點擊“安裝”
- 第九步:等待安裝完成
- 第十步:點擊“完成”
- 第十一步:點擊安裝好后的Pycharm
- 第十二步:點擊下一個
- 第十三步:勾選條款,然后點擊“繼續”
- 第十四步:點擊”新建項目“
- 第十五步:按照下圖操作,然后點擊創建
- 第十六步:得到下圖
- 第十七步:新建文件,鼠標右鍵點擊”1“,創建Python文件“test.py”
- 第十八步:在”test.py“文件中寫入”print(“Hello world”)“,然后點擊紅框處的綠色三角形,就會在底部的終端中顯示輸出結果
07.Pycharm開發工具的使用
-
如何修改主題
-
Pycharm的默認主題是黑色
-
第一步:點擊右上角齒輪按鈕,找到”主題“并點擊
-
第二步:選擇主題,有5個常用的主題可以選擇,也可以選擇獲取更多主題
-
-
修改默認字體和大小
-
第一步:點擊右上角齒輪按鈕,找到”設置“并點擊
-
第二步:按照下面的步驟設置字體和字體大小
-
第三步:設置快捷鍵改變字體大小,點擊設置中的”按鍵映射“,然后在右邊的搜索框中輸入”字體“,接著搜索,出現下面的結果
-
第四步:先點擊上圖中的”減少字體大小“,再點擊”添加鼠標快捷方式“,如下圖
-
第五步:出現下圖后,同時點擊”Ctrl+鼠標滾輪下滑“
-
第六步:出現下圖后,就說明設置成功了,然后點擊確定
-
第七步:按照”設置減小字體大小“的方法,設置”增大字體大小“的快捷鍵,如下
-
第八步:都設置完畢后,記住一定要點擊“應用”
-
-
裝一些好用的插件
因為在安裝最新版本的Pycharm時已經捆綁選擇了中文插件,所以就不需要再次安裝中文插件了!!!!
- 安裝翻譯插件 ----------- 碰到不懂的英文,可以快速了解意思
- 第一步:進入設置界面
- 第二步:按照下圖操作
- 第三步:安裝好后,重啟Pycharm
- 第四步:用鼠標選中要翻譯的單詞,然后單擊右鍵,點擊”翻譯“,出現下圖
- 安裝翻譯插件 ----------- 碰到不懂的英文,可以快速了解意思
-
常用快捷鍵
-
ctrl + alt + s:打開軟件設置
-
ctrl + alt + l:一鍵整理代碼
-
ctrl + d:復制當前行代碼
-
shift + alt + 上\下:將當前行代碼上移或下移
-
crtl + shift + f10:運行當前代碼文件
-
shift + f6:重命名文件
如果遇到shift+f6快捷鍵不行的,可以在依次點擊:設置>插件,然后在插件中搜索”Imefix“,然后下載對應的插件即可
-
ctrl + a:全選
-
ctrl + c\v\x:復制、粘貼、剪切
-
ctrl + z:撤回
-
ctrl + f:搜索
-
第二章
01.數據類型
Python中常用的數據類型有六種:數字(Number)、字符串(String)、列表(List)、元組(Tuple)、集合(Set)、字典(Dictionary)。其中數字類型又包括:整數(Int)、浮點數(float)、復數(complex)、布爾(bool),具體如下圖:
-
1.整數
整數是正數或負數,沒有小數點的整數,例如:
age = 23 high = 176
這里,age 和 high 都是整數。你可以對整數執行各種數學運算,例如:加(+)、減(-)、乘(*)、除(/)、地板除(//)、取模(%)、指數(**),詳細的用法會在“運算符小節”講到
-
2.浮點數(小數)
浮點數是有小數點的數字,例如:
pi = 3.14159 gravity = 9.81
浮點數也可以像整數一樣用于計算
-
3.復數
復數有一個實部和虛部,用’j’表示,例如:
complex_number = 3 + 4j
-
4.布爾
布爾表示真值,例如:
is_xiaogudu_gudu = True is_xiaogudu_ugly = False
True和False在代碼中起到決策的重要作用
-
5.字符串(文本)
字符串(string),又稱文本,是由任意數量的字符如中文、英文、各類符號、數字等組成。所以叫做字符的串,如:“小孤獨”,“1314”,“!@#$%^&”
字符串是字符序列,用單引號或雙引號括起來,例如:
# 單行字符串 name = "xiaogudu" message = 'Hello, how are you?'# 多行字符串,使用三引號 long_text = """這是 一個多行 字符串字面量。"""
? 字符串有很多方法,例如:
len()
方法用來計算字符串的長度,upper()
方法用來將字符串中的所有小寫字母轉換為大寫字母,并返回轉換后的新字符串,等等…之后會詳細學習 -
6.列表
列表是有序的、可變的序列,用方括號表示,例如:
friends = ["伊地知虹夏", "喜多郁代", "山田涼"] numbers = [1, 2, 3, 4, 5]
列表是多功能的,允許各種操作:
friends.append("廣井菊里")# 變成['伊地知虹夏', '喜多郁代', '山田涼', '廣井菊里'] friends.remove("喜多郁代") # ['伊地知虹夏', '山田涼', '廣井菊里'] print(friends[0]) # 通過索引訪問:伊地知虹夏 print(friends[-1]) # 最后一個項目:廣井菊里 print(friends[1:3]) # 切片:['山田涼', '廣井菊里']
列表的具體方法之后再詳細解釋
-
7.元組
元組是有序的、不可變的序列,用圓括號表示,例如:
tuple_one = (10, 20, 30) tuple_two = (255, 122, 128)
元組類似于列表,但創建后不能修改:
tuple_one = (10, 20, 30) print(tuple_one[0]) # 通過索引訪問:10 tuple_one[0] = 6 # 這將引發錯誤
元組的具體方法之后再詳細解釋
-
8.集合
集合是無序的唯一元素集合,用花括號表示,例如:
friends = {"伊地知虹夏", "喜多郁代", "山田涼"} numbers = {1, 2, 3, 4, 5}
集合非常適合去除重復項和集合運算
friends = {"伊地知虹夏", "喜多郁代", "山田涼"} friends.add("廣井菊里") friends.remove("喜多郁代") print("山田涼" in friends) # 檢查成員資格:Trueset1 = {1, 2, 3} set2 = {3, 4, 5} print(set1.union(set2)) # 并集:{1, 2, 3, 4, 5} print(set1.intersection(set2)) # 交集:{3}
集合的具體方法之后再詳細解釋
-
9.字典
字典存儲鍵值對,用花括號表示,例如:
person = { "name": "小孤獨", "age": 16, "country": "Japan" }
字典對于結構化數據非常有用:
person = { "name": "小孤獨", "age": 16, "country": "Japan" }print(person["name"]) # 通過鍵訪問:小孤獨 person["job"] = "Band guitarist" # 添加新的鍵值對 del person["age"] # 刪除鍵值對 print(person.keys()) # 獲取所有鍵 print(person.values()) # 獲取所有值
字典的具體方法之后再詳細解釋
02.數據類型的轉換
有時候需要將數據從一種類型轉換為另一種類型。Python為此提供了內置函數:
-
轉換為整數
int()
-
函數:
int(x)
-
適用場景:將字符串、浮點數、布爾值等轉換為整數
-
注意:非數字字符串或非整型浮點字符串會報錯(如
int("3.14")
、int(5.0)
)int("123") # 123(字符串轉整數) int(3.14) # 3(浮點數轉整數,截斷小數,會丟失精度) int(True) # 1(布爾值轉整數) int("1010", 2) # 10(二進制字符串轉十進制)
-
-
轉換為浮點數
float()
-
函數:
float(x)
-
適用場景:將字符串、整數、布爾值等轉換為浮點數
-
函數:
float(x)
float("3.14") # 3.14(字符串轉浮點) float(5) # 5.0(整數轉浮點) float(False) # 0.0(布爾值轉浮點)
-
-
轉換為字符串
str()
-
函數:
str(x)
-
適用場景:任何類型的數據都可以轉換成字符串
-
注意:對復雜結構(如列表)直接轉換可能不符合預期,需使用
json.dumps()
或自定義格式化str(100) # "100"(整數轉字符串) str(3.14) # "3.14"(浮點轉字符串) str([1, 2, 3]) # "[1, 2, 3]"(列表轉字符串)
-
-
轉換為布爾值
bool()
-
轉換為列表
list()
-
函數:
list(x)
-
適用場景:將元組、集合、字符串、字典(僅保留鍵)等轉換為列表
print(list((1, 2, 3))) # [1, 2, 3](元組轉列表) print(list({"1",2,"a"})) # (集合轉列表),輸出順序可能為 ['1', 2, 'a'] 或其他,集合具有無序性 print(list("abc")) # ['a', 'b', 'c'](字符串轉列表) print(list({"a": 1}) ) # ['a'](字典轉鍵列表)
-
-
轉換為元組
tuple()
-
函數:
tuple(x)
-
適用場景:將列表、集合、字符串等轉換為不可變的元組
print(tuple([1, 2, 3])) # (1, 2, 3) (列表轉元組) print(tuple({1,2,3})) # (1, 2, 3) (集合轉元組) print(tuple("abc")) # ('a', 'b', 'c') (字符串轉元組)
-
-
轉換為集合
set()
-
函數:
set(x)
-
適用場景:去重或轉換字符串、列表、元組等為集合
print(set([1, 2, 2, 3])) # {1, 2, 3}(去重,列表轉集合) print(set("hello")) # {'h', 'e', 'l', 'o'} (字符串轉集合) print(set((1, 2, 3))) # {'c', 'b', 'a'} (元組轉集合)
-
-
轉換為字典
dict()
-
函數:
dict(x)
-
適用場景:將鍵值對結構(如列表嵌套元組)轉換為字典
print(dict([(1, 'a'), (2, 'b')])) # {1: 'a', 2: 'b'} ,列表嵌套元組轉字典 print(dict(x=1, y=2)) # {'x': 1, 'y': 2}
-
03.字面量
-
什么是字面量?
-
字面量就是在代碼中,被寫下來固定的值,Python的9種數據類型就是字面量,例如:數字字面量,整數字面量,復數字面量,字典字面量。
-
舉個例子:
print("Hello, World!")
在這行代碼中,“Hello, World!” 就是一個字面量。它是一個固定的值,我們告訴Python去顯示它。
-
-
Python字面量的類型
-
整數字面量
這些是正的或負的整數,沒有小數點。
age = 23 high = 176
這里,23和176是整數字面量。它們表示精確的、整數值
-
浮點數字面量
這些是有小數點的數字。
pi = 3.14159 gravity = 9.81
3.14159和9.81是浮點數字面量。它們允許我們處理更精確的數值。
-
復數字面量
這些數字有實部和虛部。
complex_number = 3 + 4j
這里,3 + 4j是一個復數字面量,3是實部,4是虛部。它在高級數學計算中使用。
-
布爾字面量
布爾字面量表示真值。
is_xiaogudu_gudu = True is_xiaogudu_ugly = False
True和False是布爾字面量,它們 在代碼中用于條件判斷。
-
字符串字面量
字符串是字符序列,用單引號(‘’)或雙引號(“”)括起來。
# 單行字符串 name = "xiaogudu" message = 'Hello, how are you?'# 多行字符串,使用三引號 long_text = """這是 一個多行 字符串字面量。"""
-
列表字面量
列表是有序的項的集合(可以更改)
friends = ["伊地知虹夏", "喜多郁代", "山田涼"] numbers = [1, 2, 3, 4, 5]
方括號[]內的項創建列表字面量。
-
元組字面量
元組類似于列表,但它們是不可變的(不能更改)。
tuple_one = (10, 20, 30) tuple_two = (255, 122, 128)
圓括號()內的項創建元組字面量。
-
集合字面量
集合是無序的唯一項的集合。
friends = {"伊地知虹夏", "喜多郁代", "山田涼"} numbers = {1, 2, 3, 4, 5}
大括號{}內的項(但沒有鍵值對)創建集合字面量。
-
字典字面量
字典存儲鍵值對。
person = {"name": "xiaogudu", "age": 16, "city": "神奈川縣"}
大括號{}內的鍵值對創建字典字面量。
-
04.注釋
-
注釋:在程序代碼中對程序代碼進行解釋說明的文字
-
注釋的作用:
- 注釋不是程序,不能被執行,只是對程序代碼進行解釋說明,讓別人可以看懂程序代碼的作用,能夠大大增強程序的可讀性。
-
注釋的分類:
-
單行注釋:
-
以
#
開頭,#
右邊的所有文字當作說明,而不是真正要執行的程序,起輔助說明作用。 -
單行注釋一般用于對一行或一小部分代碼進行解釋
-
# 我是單行注釋 print("Hello World!!!")
注意:#號和注釋內容一般建議以一個空格隔開
-
-
多行注釋:
-
以 ”一對三個雙引號“ 引起來(“”“注釋內容”“”)來解釋說明一段代碼的作用使用方法
-
多行注釋一般對:Python文件、類或方法進行解釋
-
"""我是多行注釋我是多行注釋我是多行注釋 """ print("Hello World!!!") print("Hello World!!!")
-
-
05.變量
-
變量:在程序運行時,能儲存計算結果或能表示值的抽象概念。簡單來說變量就是在程序運行時,記錄數據用的
-
變量的定義格式:
-
創建變量:
-
刪除變量:
在 Python 中,我們可以使用
del
關鍵字刪除不再需要的變量name = "小孤獨" #創建變量并賦值 print(name) # 輸出“小孤獨” del name # 刪除變量 print(name) # 這將引發一個錯誤,說明變量刪除成功
-
變量地址:
Python 中的每個變量在計算機內存中都有一個唯一的地址,就像街道上的每座房子都有自己的地址一樣。我們可以使用
id()
函數找出變量所在的位置:name = "小孤獨" print("name 的內存地址:", id(name)) #打印語句會輸出“name 的內存地址: 3141631801696”
上述的數字就是變量在計算機內存中的地址
-
變量類型:
Python 允許我們使用·
type()
函數檢查變量所持有的數據類型:age = 16 name = "小孤獨" print(type(age)) # 打印語句輸出“<class 'int'>” print(type(name)) # 打印語句輸出“<class 'str'>”
這告訴我們
age
是一個整數(int),而name
是一個字符串(str) -
變量的類型轉換:
有時,我們需要改變變量的類型。這個過程稱為類型轉換。
age = 16 print(type(age)) # 打印語句輸出“<class 'int'>” age_str = str(age) # 將變量從數字類型轉換成字符串類型 print(type(age_str)) # 打印語句輸出“<class 'str'>”
-
變量命名約定:
-
變量以字母或下劃線開頭
-
變量可以包含字母、數字和下劃線
-
變量區分大小寫
-
變量不能是 Python 關鍵字
-
好名字:
age = 16 name = "小孤獨" hobby = "喜歡彈吉他"
-
壞名字:
2film = "電影" # 不能以數字開頭 my-age = 20 # 不允許使用連字符
-
-
全局變量和局部變量:
-
全局變量:
全局變量就像派對的主持人 ,它們在整個程序中都是已知的:
global_var = "我無處不在!"def use_global():print(global_var) # 打印“我無處不在!”use_global() # 這可以正常工作 print(global_var) # 打印“我無處不在!”
-
局部變量:
在函數內部創建的變量稱為局部變量。它們就像只存在于該函數中的秘密:
def party_planner():local_var = "我只在這個函數中存在"print(local_var)party_planner() print(local_var) # 這將引發一個錯誤
-
-
常量:
常量是值不應該改變的變量。在 Python 中,我們使用全部大寫名稱來表示常量:
PI = 3.14159 MAX_GUESTS = 50print("Pi 總是", PI) print("我們不能有超過", MAX_GUESTS, "個賓客")
06.標識符
-
什么是標識符
- 在Python程序中,我們可以給很多東西起名字,比如:
變量的名字,方法的名字,類的名字,等等 - 這些名字,我們把它統一的稱之為標識符,用來做內容的標識。
所以,標識符就是用戶在編程的時候所使用的一系列名字,用于給變量、類、方法等命名。
- 在Python程序中,我們可以給很多東西起名字,比如:
-
標識符命名規則(需要強制遵守)
Python中,標識符命名的規則主要有3類:
-
內容限定
- 只允許出現:**英文、中文、數字、下劃線(_)**這四類元素
- 注意:1.不推薦使用中文;2.數字不能在開頭
-
大小寫敏感
-
字母的大小寫是完全能夠分開的,例如:
name = "小孤獨1" Name = "小孤獨2" print(name) # 輸出:小孤獨1 print(Name) # 輸出:小孤獨2
-
-
不可使用關鍵字
-
關鍵字的定義:
以下是 Python 3.10 及更高版本的關鍵字列表(共 35 個):
False None True and as assert async await break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield match case
用途分類:
邏輯值:True, False, None邏輯運算:and, or, not流程控制:if, elif, else, for, while, break, continue函數與類:def, return, class, lambda, pass, raise, yield異常處理:try, except, finally, with, assert作用域:global, nonlocal模塊操作:import, from, as異步編程:async, await
-
-
-
標識符命名規范(建議遵守)
不同的標識符有不同的命名規范,但是現在只學到了變量,所以只講變量的命名規范:
變量的命名規范:
07.運算符
-
算數運算符
# 加法 print(5 + 3) # 輸出:8# 減法 print(10 - 4) # 輸出:6# 乘法 print(3 * 4) # 輸出:12# 除法 print(20 / 5) # 輸出:4.0# 整除/地板除(向下取整到最近的整數) print(17 // 3) # 輸出:5# 取模(除法的余數) print(17 % 3) # 輸出:2# 冪運算 print(2 ** 3) # 輸出:8
-
比較運算符
這些運算符就像編程比賽中的評委——它們比較值并返回
True
或False
。# 等于 print(5 == 5) # 輸出:True# 不等于 print(5 != 3) # 輸出:True# 大于 print(7 > 3) # 輸出:True# 小于 print(2 < 8) # 輸出:True# 大于或等于 print(5 >= 5) # 輸出:True# 小于或等于 print(3 <= 1) # 輸出:False
-
邏輯運算符
# and 運算符 print(True and True) # 輸出:True print(True and False) # 輸出:False# or 運算符 print(True or False) # 輸出:True print(False or False) # 輸出:False# not 運算符 print(not True) # 輸出:False print(not False) # 輸出:True
-
賦值運算符
這些運算符就像Python中的搬運工——它們為變量賦值
# 簡單賦值運算符 x = 5 print(x) # 輸出:5# 復合賦值運算符(下面7個都是) # 加法賦值運算符 x += 3 # 等同于 x = x + 3 print(x) # 輸出:8# 減法賦值運算符 x -= 2 # 等同于 x = x - 2 print(x) # 輸出:6# 乘法賦值運算符 x *= 2 # 等同于 x = x * 2 print(x) # 輸出:12# 除法賦值運算符 x /= 3 # 等同于 x = x / 3 print(x) # 輸出:4.0# 取模賦值運算符 x %= 3 # 等同于 x = x % 3 print(x) # 輸出:1.0# 冪賦值運算符 x **= 3 # 等同于 x = x ** 3 = x^3 print(x) # 輸出:1.0# 取整除賦值運算符 x //= 2 # 等同于 x = x // 2 print(x) # 輸出:0.0
-
位運算符
# 1.按位與(&) # 功能:兩個二進制數的對應位都為 1 時,結果位才為 1,否則為 0 a = 5 # 二進制 0000 0101(補碼) b = 3 # 二進制 0000 0011(補碼) result = a & b print(result) # 輸出 1 (二進制 0000 0001)# 2.按位或(|) # 兩個二進制數的對應位有一個為 1,結果位就為 1 a = 5 # 0000 0101(補碼) b = 3 # 0000 0011(補碼) result = a | b print(result) # 輸出 7 (0000 0111)# 3.按位異或(^) # 功能:兩個二進制數的對應位不同時,結果位為 1,否則為 0 a = 5 # 0000 0101(補碼) b = 3 # 0000 0011(補碼) result = a ^ b print(result) # 輸出 6 (0000 0110)# 4.按位取反(~) # 功能:將二進制數的每一位取反(0 變 1,1 變 0) a = 5 # 二進制 0000 0101(補碼) result = ~a print(result) # 輸出 -6(即二進制補碼 1111 1010)# 5.左移(<<) # 功能:將二進制數的所有位向左移動指定位數,右側補 0 a = 5 # 0000 0101(補碼) result = a << 1 # 左移 1 位 print(result) # 輸出 10 (0000 1010)# 6.右移(>>) # 功能:將二進制數的所有位向右移動指定位數,左側補符號位(正數補 0,負數補 1) a = 5 # 0000 0101(補碼) result = a >> 1 # 右移 1 位 print(result) # 輸出 2 (0000 0010)b = -8 # 1111 1000(補碼) result = b >> 2 # 右移 2 位(負數保留符號) print(result) # 輸出 -2
-
身份運算符
身份運算符用于比較兩個對象的內存位置
# is 運算符 x = [1, 2, 3] y = [1, 2, 3] z = xprint(x is z) # 輸出:True print(x is y) # 輸出:False print(x == y) # 輸出:True# is not 運算符 print(x is not y) # 輸出:True
-
成員運算符
這些運算符就像俱樂部門口的保鏢——它們檢查一個值是否是序列的成員
# in 運算符 fruits = ['apple', 'banana', 'cherry'] print('banana' in fruits) # 輸出:True# not in 運算符 print('mango' not in fruits) # 輸出:True
-
運算符的優先級
優先級 運算符 描述 1 () 括號 2 ** 冪運算 3 +x, -x, ~x 一元加,一元減,按位非 4 *, /, //, % 乘法,除法,整除,取模 5 +, - 加法,減法 6 <<, >> 按位左移,按位右移 7 & 按位與 8 ^ 按位異或 9 | 按位或 10 <, >, <=, >=, ==, !=, is, is not, in, not in 比較運算符,身份運算符,成員運算符 11 not 邏輯運算符非 12 and 邏輯運算符與 13 or 邏輯運算符或 14 =, +=, -=, *=, /=, %=, **=, //= 賦值運算符
08.字符串擴展
-
字符串的三種定義方式
-
字符串在Python中有3種定義形式:
-
1.單引號定義法:name = ‘小孤獨’
-
2.雙引號定義法:name = "小孤獨 "
-
3.三引號定義法:name = " " "小孤獨 " " "
需要注意的是,三引號定義法,和多行注釋的寫法一樣,同樣支持換行操作。使用變量接收它,它就是字符串;不使用變量接收它,就可以作為多行注釋使用。
-
-
如何定義本身就包含引號的字符串
-
1.單引號定義法,可以內含雙引號
# 在字符串內包含雙引號 name = '"小孤獨"' print(name) # 輸出:"小孤獨"
-
2.雙引號定義法,可以內含單引號
# 在字符串內包含單引號 name = "'小孤獨'" print(name) # 輸出:'小孤獨'
-
3.可以使用轉移字符(\)來將引號解除效用,變成普通字符串
# 使用轉義字符(\)解除引號的效用 name = " \"小孤獨\" " print(name) # 輸出:"小孤獨" name = ' \'小孤獨\' ' print(name) # 輸出:'小孤獨'
-
-
-
字符串拼接
-
如果我們有兩個字符串(文本)字面量,可以將其拼接成一個字符串,通過+號即可完成,如:
# 字符串字面量之間的拼接 print("小孤獨" + "學Python") # 輸出:小孤獨學Python
-
不過一般,單純的2個字符串字面量進行拼接顯得很呆,一般,字面量和變量或變量和變量之間會使用拼接,如:
# 字符串字面量和字符串變量的拼接 name = "小孤獨" study = "學Python" print("我是:"+name +",我要:"+ study) # 輸出:我是:小孤獨,我要:學Python
-
字符串無法和非字符串類型直接進行拼接
-
-
字符串格式化
-
1.使用
%
運算符-
%s
是一個字符串的占位符,而 “World” 是替換它的值print("Hello, %s!" % "World") # 輸出:Hello, World!
-
你可以使用多個占位符
注意:多個變量占位,變量要用括號括起來,并按照占位的順序填入
name = "小孤獨" age = 16 print("My name is %s and I am %s years old." % (name, age)) # 輸出:My name is 小孤獨 and I am 16 years old.
-
Python中支持非常多的數據類型占位,最常用的如下:
格式符號 轉化 %s 將內容轉換成字符串,放入占位位置 %d 將內容轉換成整數,放入占位位置 %f 將內容轉換成浮點型,放入占位位置 示例:
name ="小孤獨" age = 16 height = 1.56 message ="我是%s,我的年齡是:%d,我的身高是:%f米" %(name, age, height) print(message) # 輸出:我是:小孤獨,我的年齡是:16,我的身高是:1.560000米
-
-
2.
str.format()
方法-
Python 2.6+ 引入的更靈活的格式化方法,使用
{}
作為占位符 -
基本用法:
print("Name: {}, Age: {}".format("小孤獨", 16)) # 位置參數 print("Name: {1}, Age: {0}".format(16, "小孤獨")) # 索引參數 print("Name: {name}, Age: {age}".format(name="小孤獨", age=16)) # 關鍵字參數
-
格式控制:
# 數字格式化 print("PI: {:.2f}".format(3.14159)) # 輸出:PI: 3.14(保留兩位小數) print("Hex: {:x}".format(255)) # 輸出:Hex: ff(十六進制)# 對齊與填充 print("{:>10}".format("Hello")) # 右對齊,寬度10 → ' Hello' print("{:<10}".format("Hello")) # 左對齊,寬度10 → 'Hello ' print("{:*^10}".format("Hi")) # 居中并用*填充 → '****Hi****'# 千位分隔符 print("{:,}".format(1000000)) # 輸出:1,000,000
-
引用對象屬性或元素:
person = {"name": "小孤獨", "age": 16} print("Name: {p[name]}, Age: {p[age]}".format(p=person)) # 輸出:Name: 小孤獨, Age: 16
-
-
3.
f-strings
(格式化字符串字面量)-
Python 3.6+ 引入,語法簡潔高效,在字符串前加
f
或F
,變量直接嵌入{}
。 -
基本用法:
name = "小孤獨" age = 16 print(f"Name: {name}, Age: {age}") # 輸出:Name: 小孤獨, Age: 16
-
表達式和函數調用:
name = "xiaogudu" age = 16 # 直接計算表達式 print(f"Next year's age: {age + 1}") # 輸出:Next year's age: 17# 調用方法或函數 print(f"Name in uppercase: {name.upper()}") # 輸出:Name in uppercase: XIAOGUDU
-
高級格式控制:
pi = 3.14159 print(f"PI: {pi:.2f}") # 輸出:PI: 3.14 print(f"Hex: {255:x}") # 輸出:Hex: ff print(f"Aligned: {'text':>10}") # 輸出:Aligned: text
-
多行字符串:
name = "小孤獨" age = 16 message = (f"Name: {name}\n"f"Age: {age}\n"f"Square of Age: {age ** 2}" ) print(message) # 輸出:Name: 小孤獨 # Age: 16 # Square of Age: 256
-
-
4.模板字符串(
string.Template
)-
Python 標準庫中的簡單模板,通過
$
占位符替換,適合用戶可控的輸入(避免安全風險)from string import Template t = Template("Name: $name, Age: $age") print(t.substitute(name="小孤獨", age=16)) # 輸出:Name: 小孤獨, Age: 16
-
-
5.總結對比:
方法 優點 缺點 適用場景 %
格式化簡單,兼容舊代碼 功能有限,易出錯 舊項目或簡單替換 str.format()
功能強大,支持復雜格式 語法稍冗長 需要兼容 Python 2.6+ f-strings
簡潔高效,支持表達式 僅限 Python 3.6+ 現代 Python 代碼首選 string.Template
安全,適合用戶輸入 功能最少 用戶可控模板
-
-
格式化的精度控制
我們可以使用輔助符號
m.n
來控制數據的寬度和精度-
m
:控制寬度,要求是數字(很少使用),設置的寬度小于數字自身,不生效 -
n
:控制小數點精度,要求是數字,會進行小數的四舍五入示例:
-
1.
%
運算符num1 = 11 num2 = 11.345 num3 = 0.001234 print("數字11寬度限制5,結果是:%5d" % num1) print("數字11.345寬度限制7,小數精度2,結果是:%7.2f" % num2) print("數字11.345不限制,小數精度2,結果是:%.2f" % num2) print("數字11.345不限制,小數精度3,結果是:%.3e" % num2) print("數字0.001234不限制,小數精度2,結果是:%.2g" % num3) # 輸出: # 數字11寬度限制5,結果是: 11 (數前面有3個空格,因為寬度限制為5) # 數字11.345寬度限制7,小數精度2,結果是: 11.35 (數前面有2個空格,保留兩位小數) # 數字11.345不限制,小數精度2,結果是:11.35 (保留兩位小數) # 數字11.345不限制,小數精度3,結果是:1.135e+01 (科學計數法,保留三位小數) # 數字0.001234不限制,小數精度2,結果是:0.0012 (保留兩位有效數字)
-
2.
str.format()
方法num1 = 11 num2 = 11.345 num3 = 0.001234 num4 = 12345678.946 print("數字11寬度限制5,結果是:{:5d}".format(num1)) print("數字11.345寬度限制7,小數精度2,結果是:{:7.2f}".format(num2)) print("數字11.345不限制,小數精度2,結果是:{:.2f}".format(num2)) print("數字11.345不限制,小數精度3,結果是:{:.3e}".format(num2)) print("數字0.001234不限制,小數精度2,結果是:{:.2g}".format(num3)) # 輸出:省略 -------------------以下是%運算符沒有的用法-----------------------print("數字12345678.946不限制,小數精度2,結果是:{:,.2f}".format(num4)) print("數字11.345不限制,小數精度2,結果是:{:*>10.2f}".format(num2)) print("數字0.001234不限制,小數精度2,結果是:{:.2%}".format(num3)) #輸出: # 數字12345678.946不限制,小數精度2,結果是:12,345,678.95 (千分位分隔符) # 數字11.345不限制,小數精度2,結果是:*****11.35 (右對齊,寬度10,填充*) # 數字0.001234不限制,小數精度2,結果是:0.12% (百分比顯示)
-
3.
f-strings
(Python 3.6+)
# 跟str.format() 方法 一樣 num1 = 11 num2 = 11.345 num3 = 0.001234 num4 = 12345678.946 print(f"數字11寬度限制5,結果是:{num1:5d}") print(f"數字11.345寬度限制7,小數精度2,結果是:{num2:7.2f}") print(f"數字11.345不限制,小數精度2,結果是:{num2:.2f}") print(f"數字11.345不限制,小數精度3,結果是:{num2:.3e}") print(f"數字0.001234不限制,小數精度2,結果是:{num3:.2g}") print(f"數字12345678.946不限制,小數精度2,結果是:{num4:,.2f}") print(f"數字11.345不限制,小數精度2,結果是:{num2:*>10.2f}") print(f"數字0.001234不限制,小數精度2,結果是:{num3:.2%}") # 輸出: # 省略
-
關鍵格式說明符
f
:固定小數位數(如.2f
)。e
/E
:科學計數法(小寫/大寫指數符號)。g
/G
:自動選擇f
或e
,控制有效數字(如.3g
)。%
:百分比格式(自動乘100并添加%
)。,
:千分位分隔符(如{:,.2f}
)。- 對齊與填充:
<
(左對齊)、>
(右對齊)、^
(居中),結合寬度和填充字符(如:*>10.2f
)。
-
-
-
對表達式進行格式化
-
表達式的定義:
- 一條具有明確執行結果的代碼語句,例如:1+1、3*4、name = “小孤獨”、age =16 這些都是表達式,因為有具體結果(變量的等號右側為結果),結果是一個數字或者字符串。
-
如何格式化表達式:
print("1*1的結果是:%d" % (1*1)) # %運算符 print("1*2的結果是:{}".format(1*2)) # str.format() print(f"2*3的結果是:{2*3}") # f-strings print("字符串在Python中的類型名是:%s" % type("字符")) # 輸出: # 1*1的結果是:1 # 1*2的結果是:2.00 # 2*3的結果是:6 # 字符串在Python中的類型名是:<class 'str'>
-
09.數據輸入
在Python中,我們使用input()語句
,用來獲取鍵盤輸入:
-
使用
input()語句
可以從鍵盤獲取輸入 -
使用一個變量接收(存儲)
input語句
獲取的鍵盤輸入數據即可
示例:name = input("你是誰?") # 輸入:小孤獨 print(f"我是{name}") # 輸出:我是小孤獨age = input("你多大了?") # 16 print(f"我{age}歲了,類型:{type(age)}") # 輸出:我16歲了,類型:<class 'str'>
從中可以發現:無論鍵盤輸入什么類型的數據,獲取到的數據永遠都是字符串類型
如有不當之處,歡迎指正