好搜客網(wǎng)站優(yōu)勢的seo網(wǎng)站優(yōu)化排名
一、Python介紹
1.1 了解Python語言
? ? Python 是1989 年荷蘭人 Guido van Rossum (簡稱 Guido)在圣誕節(jié)期間為了打發(fā)時間,發(fā)明的一門面向?qū)ο蟮慕忉屝跃幊陶Z言。Python來自Guido所摯愛的電視劇Monty Python's Flying Circus。
Python是一門解釋性語言,使用專門的解釋器對源程序逐行解釋成特定平臺的機器碼并立即執(zhí)行。是代碼在執(zhí)行時才被解釋器一行行動態(tài)翻譯和執(zhí)行,而不是在執(zhí)行之前就完成翻譯。
1.解釋型語言每次運行都需要將源代碼解釋稱機器碼并執(zhí)行,執(zhí)行效率低;
2.只要平臺提供相應(yīng)的解釋器,就可以運行源代碼,所以可以方便源程序移植;
1.2 IDE快捷鍵
快捷鍵 | 作用 |
---|---|
Ctrl + / | 單行注釋 |
Ctrl + Shift + / | 多行注釋 |
Ctrl + D | 復(fù)制當前光標所在行 |
Ctrl + X | 刪除當前光標所在行 |
Ctrl + Alt + L | 格式化代碼 |
Ctrl + Shift + F | 全局查找 |
Ctrl + Alt + left/right | 返回至上次瀏覽的位置 |
Ctrl + W | 快速選中代碼 |
Ctrl + R | 替換 |
二、基礎(chǔ)語法
2.1 變量
2.1.1 Python的標識符規(guī)范
簡單地理解,標識符就是一個名字,就好像我們每個人都有屬于自己的名字,它的主要作用就是作為變量、函數(shù)、類、模塊以及其他對象的名稱。Python中標識符的命名不是隨意的,而是要遵守一定的命令規(guī)則
標識符是由字符(A~Z 和 a~z)、下劃線和數(shù)字組成,但第一個字符不能是數(shù)字。
標識符不能和 Python 中的保留字相同。有關(guān)保留字,后續(xù)章節(jié)會詳細介紹。
Python中的標識符中,不能包含空格、@、% 以及 $ 等特殊字符。
在 Python 中,標識符中的字母是嚴格區(qū)分大小寫
Python 語言中,以下劃線開頭的標識符有特殊含義
Python 允許使用漢字作為標識符(不推薦)
標識符的命名,除了要遵守以上這幾條規(guī)則外,不同場景中的標識符,其名稱也有一定的規(guī)范可循,例如:
- 當標識符用作模塊名時,應(yīng)盡量短小,并且全部使用小寫字母,使用下劃線分割多個字母,例如 game_mian、game_register 等。
- 當標識符用作包的名稱時,應(yīng)盡量短小,也全部使用小寫字母,不推薦使用下劃線,例如 com.mr、com.mr.book 等。
- 當標識符用作類名時,應(yīng)采用單詞首字母大寫的形式。例如,定義一個圖書類,可以命名為 Book。
- 模塊內(nèi)部的類名,可以采用 "下劃線+首字母大寫" 的形式,如 _Book;
- 函數(shù)名、類中的屬性名和方法名,應(yīng)全部使用小寫字母,多個單詞之間可以用下劃線分割;
- 常量命名應(yīng)全部使用大寫字母,單詞之間可以用下劃線分割;
2.1.2 Python中的關(guān)鍵字
and | as | assert | break | class | continue |
---|---|---|---|---|---|
def | del | elif | else | except | finally |
for | from | False | global | if | import |
in | is | lambda | nonlocal | not | None |
or | pass | raise | return | try | True |
while | with | yield |
2.1.2 變量
變量是一段有名字的連續(xù)存儲空間。我們通過定義變量來申請并命名這樣的存儲空間,并通過變量的名字來使用這段存儲空間。在編程語言中,將數(shù)據(jù)放入變量的過程叫做賦值(Assignment)。Python 使用等號=
作為賦值運算符,具體格式為:
變量名 = 任意類型的值
例如:
x ?= 10
y ?= "hello yuan"
z ?= True
x ?= "hello world"
python作為動態(tài)語言的代表,是不同于C語言等靜態(tài)語言的變量存儲原理的
x = 10
print(id(x))
x = 20 # 內(nèi)存變化
print(id(x))
Python的變量可以自己分配內(nèi)存、不需要進行類似于c語言的數(shù)據(jù)類型的分類?
2.2 基本語法
?2.2.1 注釋
注釋就是對代碼的解釋和說明,其目的是讓人們能夠更加輕松地了解代碼。注釋是編寫程序時,寫程序的人給一個語句、程序段、函數(shù)等的解釋或提示,能提高程序代碼的可讀性。一般情況下,合理的代碼注釋應(yīng)該占源代碼的 1/3 左右。
注釋只是為了提高公認閱讀,不會被解釋器執(zhí)行。
Python 支持兩種類型的注釋,分別是單行注釋和多行注釋。
# 單行注釋
"""
這是一個多行注釋
三引號里面的任何內(nèi)容不會被解釋器執(zhí)行
"""
2.2.2 語句分隔符
就像我們寫作文一樣,逗號、句號等語句分隔符是非常重要的,程序也一樣,要想讓解釋器能讀懂,語句和語句之間一定要有分隔符。在C、Java等語言的語法中規(guī)定,必須以分號作為語句結(jié)束的標識。Python也支持分號,同樣用于一條語句的結(jié)束標識。但在Python中分號的作用已經(jīng)不像C、Java中那么重要了,Python中的分號可以省略,主要通過換行來識別語句的結(jié)束。
2.2.3 縮進
和其它程序設(shè)計語言(如 Java、C 語言)采用大括號“{}”分隔代碼塊不同,Python 采用冒號( : )和代碼縮進和來區(qū)分代碼塊之間的層次。在 Python 中,對于類定義、函數(shù)定義、流程控制語句、異常處理語句等,行尾的冒號和下一行的縮進,表示下一個代碼塊的開始,而縮進的結(jié)束則表示此代碼塊的結(jié)束。
注意,Python 中實現(xiàn)對代碼的縮進,可以使用空格或者 Tab 鍵實現(xiàn)。但無論是手動敲空格,還是使用 Tab 鍵,通常情況下都是采用 4 個空格長度作為一個縮進量(默認情況下,一個 Tab 鍵就表示 4 個空格)。
2.2.4?Python的編碼規(guī)則
Python 采用 PEP 8 作為編碼規(guī)范,其中 PEP 是 Python Enhancement Proposal(Python 增強建議書)的縮寫,8 代表的是 Python 代碼的樣式指南。下面僅給大家列出 PEP 8 中初學(xué)者應(yīng)嚴格遵守的一些編碼規(guī)則:
1、不要在行尾添加分號,也不要用分號將兩條命令放在同一行
2、通常情況下,在運算符兩側(cè)、函數(shù)參數(shù)之間以及逗號兩側(cè),都建議使用空格進行分隔。
3、使用必要的空行可以增加代碼的可讀性,通常在頂級定義(如函數(shù)或類的定義)之間空兩行,而方法定義之間空一行,另外在用于分隔某些功能的位置也可以空一行
2.3 基本數(shù)據(jù)類型
2.3.1 整形和浮點型? (整數(shù)和小數(shù))
在python中整數(shù)都屬于整型,不同于C語言會根據(jù)整數(shù)的大小將整型分類為short、int、long、long long 四種類型,python只有一種整型,即int
類型,無論整型數(shù)字多大多小都屬于int
。
x = 10
print(type(x)) # <class 'int'>
在python中小數(shù)都屬于浮點型(float
),有兩種表現(xiàn)形式
# 小數(shù)點形式
f = 3.14
print(f) # 3.14
print(type(f)) # <class 'float'>
2.3.2 布爾類型
布爾型(Boolean)是一種數(shù)據(jù)的類型,這種類型只有兩種值,即"真"與"假"。在python中用 bool
表示布爾類型,"真"用關(guān)鍵字true
表示,"假"用false
表示。
print(4 == 2) # False
print(5 > 1) # Truename = "黎明"
print(name == "李明") # False
print(1 == "1") # False
不光表達式的結(jié)果是布爾值,任意值都有自己的布爾值,這就涉及到布爾的零值。
# 任意數(shù)據(jù)類型都一個具體值的布爾值為False,我們稱為零值。該類型的其他值的布爾值皆為True。
print(bool("")) # 字符串的零值 “”
print(bool(0)) # 整型的零值 0
print(bool(False)) # 布爾類型的零值 False# 下面顯示的都是True
print(bool("0"))
print(bool("-1"))
print(bool("yuan"))
print(bool(-1))
print(bool(0.1))
2.3.3 字符串
字符串是由零個或多個字符組成的有限序列。字符串的內(nèi)容可以包含字母、標點、特殊符號、中文、日文等全世界的所有字符。
在python中字符串是通過單引號''
或者雙引號""
標識的。
s1 = "hi yuan"
print(s1)s2 = ""
print(s2)s3 = 'yuan老師是最帥的老師!'
print(s3)
Python 字符串中的雙引號和單引號沒有任何區(qū)別!
1. 字符串的轉(zhuǎn)義字符?
轉(zhuǎn)義字符 | 說明 |
---|---|
\n | 換行符,將光標位置移到下一行開頭。 |
\r | 回車符,將光標位置移到本行開頭。 |
\t | 水平制表符,也即 Tab 鍵,一般相當于四個空格。 |
\a | 蜂鳴器響鈴。注意不是喇叭發(fā)聲,現(xiàn)在的計算機很多都不帶蜂鳴器了,所以響鈴不一定有效。 |
\b | 退格(Backspace),將光標位置移到前一列。 |
\\ | 反斜線 |
\' | 單引號 |
\" | 雙引號 |
s1 = "hi li ming\nhi,li hua"
print(s1)
"""
輸出結(jié)果如下
hi yuan
hi,alvin
"""s2 = 'I\'m li ming'
print(s2)
"""
輸出結(jié)果如下
I'm li ming
"""s3 = "D:\\nythonProject\\nenv\\Scripts\\python.exe"
print(s3)
"""
輸出結(jié)果如下
D:\nythonProject\nenv\Scripts\python.exe
"""
?2. 格式化輸出
?print()的格式化輸出
name = "李明"
age = 23
print("My name is %s; My age is %d" % (name, age))
print(f"My name is {name}; My age is {age}")
在 print() 函數(shù)中,由引號包圍的是格式化字符串,它相當于一個字符串模板,可以放置一些轉(zhuǎn)換說明符(占位符)。本例的格式化字符串中包含一個
%s
和%d
說明符,它最終會被后面的name和age 變量的值所替代。中間的%
是一個分隔符,它前面是格式化字符串,后面是要輸出的表達式。
3. 序列類型操作?
字符串屬于序列類型,所謂序列,指的是一塊可存放多個值的連續(xù)內(nèi)存空間,這些值按一定順序排列,可通過每個值所在位置的編號(稱為索引)訪問它們。
s= "hello yuan"
print(len(s))
序列類型支持的操作:
# (1)索引取值
s = "hello yuan"
print(s[6])
print(s[-10])# (2)切片取值:序列類型對象[start : end : step]
s = "hello yuan"
print(s[1:4]) # ell :取索引1到索引3(左閉又開)
print(s[:4]) # hell :start缺省,默認從0取
print(s[:]) # ello yuan : end缺省,默認取到最后
print(s[1:-1]) # ello yua# (3)判斷存在:Python 中,可以使用 in 關(guān)鍵字檢查某元素是否為序列的成員。
s = "hello yuan"
print("yuan" in s) # True# (4)支持兩種類型相同的序列使用“+”運算符做相加操作,它會將兩個序列進行連接,但不會去除重復(fù)的元素。
# 使用數(shù)字 n 乘以一個序列會生成新的序列,其內(nèi)容為原來序列被重復(fù) n 次的結(jié)果
s = "hello"+" yuan"
print(s) # hello yuan
s= "*"*10
print(s) # **********
4.內(nèi)置方法(重點重點!!!!)
方法 | 作用 | 示例 | 輸出 |
---|---|---|---|
upper | 全部大寫 | "hello".upper() | "HELLO" |
lower | 全部小寫 | "Hello".lower() | "hello" |
startswith() | 是否以a開頭 | "Yuan".startswith("Yu") | True |
endswith() | 是否以a結(jié)尾 | "Yuan".endswith("a") | False |
isdigit() | 是否全數(shù)字 | '123'.isdigit() | True |
strip() | 去兩邊空格 | " hi yuan \n".strip() | "hi yuan" |
join() | 將多個字符串連接在一起 | "-".join(["yuan","alvin","eric"]) | "yuan-alvin-eric" |
split() | 按某字符分割字符串,默認按空格分隔 | "yuan-alvin-eric".split("-") | ['yuan', 'alvin', 'eric'] |
find() | 搜索指定字符串,沒有返回-1 | "hello world".index("w") | 6 |
index() | 同上,但是找不到會報錯 | "hello world".index("w") | 6 |
count() | 統(tǒng)計指定的字符串出現(xiàn)的次數(shù) | "hello world".count("l") | 3 |
replace() | 替換old為new | 'hello world'.replace(‘world',‘python') | "hello python" |
# 任意數(shù)據(jù)對象.方法()實現(xiàn)對數(shù)據(jù)的某種操作
# 不同數(shù)據(jù)類型對象支持不同方法
# 字符串類型對象支持哪些方法s1 = "yuan"
s2 = "RAIN"
# (1) upper方法和lower方法
s3 = s1.upper()
s4 = s2.lower()
print(s3) # "YUAN"
print(s4) # "rain"s5 = "hello yuan"
s6 = "hi world"
# (2) startswith和endswith:判斷字符串是否以什么開頭和結(jié)尾
print(s5.startswith("hello")) # True
print(s6.startswith("hello")) # False
print(s6.startswith("hi wor")) # True
print(s6.endswith("hi wor")) # False# (3) isdigit(): 判斷字符串是否是一個數(shù)字字符串
s7 = "123"
s8 = "123A"
print(s7.isdigit()) # True
print(s8.isdigit()) # False
s9 = "123SAA%#"
print(s9.isalnum()) # False 不能包含特殊符號# (4) strip(): 去除兩端空格和換行符號s10 = " I am yuan "
print(s10)
print(s10.strip())
name = input("請輸入姓名>>").strip()
print(name)# (5) split分割方法: 將一個字符串分割成一個列表
s11 = "rain-yuan-alvin-eric"
print(s11.split("-")) # ['rain', 'yuan', 'alvin', 'eric']# (6) join方法: 將一個列表中的字符串拼接成一個字符串
names_list = ['rain', 'yuan', 'alvin', 'eric']
s12 = "-".join(names_list) # 用什么分隔符拼接names_list列表
print(s12,type(s12)) # "rain-yuan-alvin-eric"
?2.4 類型轉(zhuǎn)換
i = int("3")
print(i,type(i))
# 3 <class 'int'>
?s = str(3.14)
print(s,type(s))
# 3.14 <class 'str'>
2.4.1 算數(shù)運算符
運算符 | 說明 | 實例 | 結(jié)果 |
---|---|---|---|
+ | 加 | 1+1 | 2 |
- | 減 | 1-1 | 0 |
* | 乘 | 1*3 | 3 |
/ | 除法(和數(shù)學(xué)中的規(guī)則一樣) | 4/2 | 2 |
// | 整除(只保留商的整數(shù)部分) | 7 // 2 | 3 |
% | 取余,即返回除法的余數(shù) | 7 % 2 | 1 |
** | 冪運算/次方運算,即返回 x 的 y 次方 | 2 ** 4 | 16,即 24 |
2.4.2 賦值運算符
運算符 | 說 明 | 用法舉例 | 等價形式 |
---|---|---|---|
= | 最基本的賦值運算 | x = y | x = y |
+= | 加賦值 | x += y | x = x + y |
-= | 減賦值 | x -= y | x = x - y |
*= | 乘賦值 | x *= y | x = x * y |
/= | 除賦值 | x /= y | x = x / y |
%= | 取余數(shù)賦值 | x %= y | x = x % y |
**= | 冪賦值 | x **= y | x = x ** y |
//= | 取整數(shù)賦值 | x //= y | x = x // y |
&= | 按位與賦值 | x &= y | x = x & y |
|= | 按位或賦值 | x |= y | x = x | y |
^= | 按位異或賦值 | x ^= y | x = x ^ y |
<<= | 左移賦值 | x <<= y | x = x << y,這里的 y 指的是左移的位數(shù) |
>>= | 右移賦值 | x >>= y | x = x >> y,這里的 y 指的是右移的位數(shù) |
2.4.3 比較運算符
比較運算符 | 說明 |
---|---|
> | 大于,如果> 前面的值大于后面的值,則返回 True,否則返回 False。 |
< | 小于,如果< 前面的值小于后面的值,則返回 True,否則返回 False。 |
== | 等于,如果== 兩邊的值相等,則返回 True,否則返回 False。 |
>= | 大于等于(等價于數(shù)學(xué)中的 ≥),如果>= 前面的值大于或者等于后面的值,則返回 True,否則返回 False。 |
<= | 小于等于(等價于數(shù)學(xué)中的 ≤),如果<= 前面的值小于或者等于后面的值,則返回 True,否則返回 False。 |
!= | 不等于(等價于數(shù)學(xué)中的 ≠),如果!= 兩邊的值不相等,則返回 True,否則返回 False。 |
is | 判斷兩個變量所引用的對象是否相同,如果相同則返回 True,否則返回 False。 |
is not | 判斷兩個變量所引用的對象是否不相同,如果不相同則返回 True,否則返回 False |
2.4.4 邏輯運算符
邏輯運算符 | 含義 | 基本格式 | 說明 |
---|---|---|---|
and | 邏輯與運算 | a and b | 當 a 和 b 兩個表達式都為真時,a and b 的結(jié)果才為真,否則為假。 |
or | 邏輯或運算 | a or b | 當 a 和 b 兩個表達式都為假時,a or b 的結(jié)果才是假,否則為真。 |
not | 邏輯非運算 | not a | 如果 a 為真,那么 not a 的結(jié)果為假;如果 a 為假,那么 not a 的結(jié)果為真。相當于對 a 取反。 |
print(2>1 and 1==2) # False
print(not 3<5) # False
print(not(4<2) or 1==2) # True
2.5 輸入輸出函數(shù)
2.5.1 print()函數(shù)
print()用于打印輸出,是python中最常見的一個函數(shù)。
2.5.2 input()函數(shù)
以上信息說明input函數(shù)在python中是一個內(nèi)建函數(shù),其從標準輸入中讀入一個字符串,并自動忽略換行符。也就是說所有形式的輸入按字符串處理,如果想要得到其他類型的數(shù)據(jù)進行強制類型轉(zhuǎn)化。
name = input("您的姓名:")
age = input("您的年齡:")
print(name,type(name))
print(age,type(age))