Python是一門易學(xué)的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,可以輕易地完成界面、文件、封裝等高階需求,可移植性好,有非常多功能強(qiáng)大的庫與包,如Numpy(數(shù)值計(jì)算)、SciPy(數(shù)學(xué)、科學(xué)與工程計(jì)算)、Matplotlib(數(shù)據(jù)繪圖工具)等等
我們從今天開始,以記筆記的方式記錄Python的基礎(chǔ)知識(shí):
本節(jié)知識(shí)框架:

一、程序的結(jié)構(gòu)

1. 程序的入口main函數(shù)
定義了一個(gè)個(gè)函數(shù)后,怎么調(diào)用這些函數(shù)呢?使用main函數(shù)調(diào)用它
# 程序的入口:main函數(shù)
if __name__ == "__main__":
function()# 要調(diào)用的函數(shù)
為了讓程序具有更強(qiáng)的可讀性,需要為程序設(shè)置一個(gè)入口,這個(gè)入口就是main函數(shù)。
print()函數(shù),中間可以使用逗號(hào)隔開;
print("兩數(shù)之和是:",add(1,2))
2. 注釋
(1) Python里單引號(hào)與雙引號(hào)所具有的功能是一樣的,多行注釋通常使用三對(duì)單引號(hào)或者三對(duì)雙引號(hào);
(2)對(duì)與某一句代碼的注釋通常寫在代碼的上一行使用#進(jìn)行注釋;
(3)像下面這種注釋比較規(guī)范
# !/usr/share/pythonprj/
# -*- coding:UTF-8 -*-
'''
模塊介紹:實(shí)現(xiàn)加減乘除運(yùn)算
~~~~~~~~~~~~~~~~~~~~~
兩數(shù)相加:add(num01,num02)
兩束相減:sub(num01,num02)
兩數(shù)相乘:mul(num01,num02)
兩數(shù)相除:del(num01,num02)
'''
def add(num01,num02):
# 返回兩數(shù)之和
return num01 + num02
def sub(num01,num02):
# 返回兩數(shù)之差
return num01-num02
def mul(num01,num02):
# 返回兩數(shù)之乘
return num01*num02
def div(num01,num02):
# 返回兩數(shù)之商
return num01/num02
3. print打印
(1)print("helloworld")其實(shí)系統(tǒng)默認(rèn)隱藏了一個(gè)參數(shù)end,完整的print()語句是print("helloworld",end="\n"),所以print語句打印會(huì)自動(dòng)換行,如果想讓其不換行打印,我們把end參數(shù)的\n去掉即可。
(2)print(a,b)實(shí)際含義是不換行分別打印print(a)和print(b)
(3)一次性打印多個(gè)值
print("tom","jerry","alice","tom")
打印的結(jié)果是
tom jerry alice tom
打印的內(nèi)容直接默認(rèn)是用空格連接,如果我們想打印的內(nèi)容之間使用其它連接符連接可以使用分割符sep參數(shù),如果使用==連接,就可以這樣寫:
print("tom","jerry","alice","tom",sep="==")
這樣打印的結(jié)果就是
tom==jerry==alice==tom
這樣就可以在所有的元素之間加上你想要的分隔符
(4)把打印的內(nèi)容輸出到文件
str01 = "本次消費(fèi)的金額為100元"
f = open("/Users/yushengtan/desktop/sales.txt",'w')
print(str01,file = f)
這樣就能把打印的內(nèi)容輸出到文件中。
4. Input輸入
所有輸入的字符,都會(huì)被系統(tǒng)當(dāng)做字符串
題目:輸入兩個(gè)數(shù),求兩個(gè)數(shù)之和:
# 方法一
num01 = input("請(qǐng)輸入第一個(gè)數(shù):")
num02 = input("請(qǐng)輸入第二個(gè)數(shù):")
print("兩個(gè)數(shù)之和等于:{:d}".format(int(num01)+int(num02)))
# 方法二
num01,num02 = eval(input("請(qǐng)輸入兩個(gè)數(shù),以逗號(hào)分割:"))
print("%d + %d = %d" % (num01,num02,num01+num02))
這里的eval函數(shù)的特點(diǎn):
a. 只能一次輸入多個(gè)整數(shù),不能是字符串
b. 輸入后自動(dòng)轉(zhuǎn)化為int類型
二、變量
1. 什么是變量
變量是一個(gè)什么都能裝的容器,只要是數(shù)據(jù)都能存;
不需要事先聲明變量類型
2. 使用變量
(1)變量名由字母、數(shù)字、下劃線、組成,不能以數(shù)字開頭
(2)區(qū)分大小寫
(3)變量名中不能包含空格
(4)不能使用Python中的關(guān)鍵字
(5)變量命名使用小寫字母,見名知意,多個(gè)單詞用下劃線連接;
(6)一次定義多個(gè)變量,可以寫成一行a=1;a=2;a=3或者a,b,c = 1,2,3
3. 變量如何存儲(chǔ)數(shù)據(jù)
變量是為了方便取出存儲(chǔ)在內(nèi)存中的數(shù)據(jù),對(duì)于數(shù)值類型,相同的值只存儲(chǔ)一份。
三、 數(shù)據(jù)類型
1. 數(shù)據(jù)類型的種類
(1)Python3里整形只有int型,無論多大的數(shù)值都可以存;
(2)浮點(diǎn)型float精度只有17位,超過17位自動(dòng)轉(zhuǎn)化為科學(xué)計(jì)數(shù)法進(jìn)行表示
(3)布爾類型,True和False
(4)字符串型,可以直接通過取字符串中的數(shù)值。
str01 = "xiaoyu"
print(str01[0]) #打印的結(jié)果就是`x`
print(str01[1:3]) #打印的結(jié)果就是`ia`
print(str01[-1]) #打印的結(jié)果就是`u`
2. 數(shù)據(jù)類型轉(zhuǎn)換
方法:要轉(zhuǎn)換的類型(數(shù)據(jù))
要把字符類型x轉(zhuǎn)換為整數(shù)類型 int(x)
把x轉(zhuǎn)化為字符串:str(x)
把整數(shù)x轉(zhuǎn)化為字符:chr(x)
把一個(gè)字符串轉(zhuǎn)化為它的整數(shù)值:ord(x)
將一個(gè)整數(shù)轉(zhuǎn)化為十六進(jìn)制字符串:hex(x)
將一個(gè)整數(shù)轉(zhuǎn)化為八進(jìn)制字符串:oct(x)
將一個(gè)整數(shù)轉(zhuǎn)化為二進(jìn)制字符串:bin(x)
3. 如何獲取變量的數(shù)據(jù)類型?如何判斷變量是不是屬于一個(gè)數(shù)據(jù)類型?
可以通過type(變量名)就可以知道變量的數(shù)據(jù)類型;
可以使用isinstance方法,isinstance(變量名,(數(shù)據(jù)類型))
if isinstance(str01,(str)):
print("字符型")
4. 數(shù)值類型
(1)如何查看變量占用多少內(nèi)存空間?
要導(dǎo)入模塊sys,調(diào)用方法sys.getsizeof(變量名)
num01 = 1000
print("num01占用的空間:",sys.getsizeof(num01))
(2)八進(jìn)制0o開頭,十六進(jìn)制0x開頭
(3)整形數(shù)值常見方法:
- abs() 絕對(duì)值
- math.fabs() 絕對(duì)值
- math.sqrt() 平方根
- math.pow(a,b) a的b次方
- max() 返回最大值
- min() 返回最小值
(4)獲取整數(shù)位,保留指定位數(shù)有效數(shù)字
使用round方法:
print(round(12.3456)) #輸出結(jié)果只會(huì)打印12
print(round(12.3456,2)) #輸出結(jié)果為12.35
使用math.ceil()方法,返回?cái)?shù)字的上入;
使用math.floor()方法,返回?cái)?shù)字的下舍;
使用modf()方法,返回兩個(gè)數(shù)值,前一個(gè)數(shù)是小數(shù)部分、后一個(gè)個(gè)數(shù)是整數(shù)部分;
print(math.modf(12.22)) #返回(0.22,12.0)
5.字符串類型
(1)表示方法
字符串?dāng)?shù)據(jù)類型使用單引號(hào)雙引號(hào)都可以;
str01 = 'xiaoyu'
str02 = "hello"
(2)長字符串的表示方法
- 使用續(xù)航符
\
str03 = "hello nice to meet you"\
"my name is xiaoyu"
- 使用三個(gè)雙引號(hào)或者三個(gè)單引號(hào)
str04 = """ hello nice to meet you
my name is xiaoyu
"""
使用三個(gè)單引號(hào)或者雙引號(hào)可以保留原長字符串的長文本排版格式
(3)轉(zhuǎn)義字符和取消轉(zhuǎn)義
打印字符串的時(shí)候使用斜杠加字母表示一個(gè)特殊的功能
\t 表示橫向制表符
\n 表示回車換行
\"表示打印雙引號(hào)"
\\表示打印反斜杠\
對(duì)于某些特殊的符號(hào),使用取消專業(yè)字符來表示特符號(hào)本身,將其打印出來,在要打印的字符串引號(hào)前加一個(gè)字符r表示要打印的字符串不具備轉(zhuǎn)義的功能
print("\\") # 打印出來的結(jié)果只有一個(gè) \
print(r"\\") #這樣就可以原封不動(dòng)打印出來 \\
(4)字符串運(yùn)算符+
符號(hào)+能讓兩個(gè)字符串連在一起;
print("my name is "+"xiaoyu")
符號(hào)*能讓字符串按照指定次數(shù)打印;
print("hello "*10) # 這樣就可以打印十個(gè)hello
(5)索引的方式
str01 = "abcdefghijklmnopq"
print(str01[0]) #打印第一個(gè)字符
print(str01[-1]) #打印最后一個(gè)字符
print(str01[5]) #打印第四個(gè)字符
print(str01[-5]) #打印倒數(shù)第五個(gè)字符
print(str01[3:10]) #打印第四到第十個(gè)字符
求字符串的長度可以用len()
(6)是否包含
str01 = "abc"
str02 = "abcdefg"
print("是否包含:",str01 in str02)
print("是否不包含:",str01 not in str02)
(7)判斷是否相等
print(str01 == str02) #判斷字符串是否相等
print(str01 is str02) #判斷字符串是否是同一個(gè)對(duì)象
四、 格式化輸入輸出
1. 百分號(hào)形式格式化輸出
(1)整數(shù)格式化輸出占位符
- %d 十進(jìn)制輸出
- %o 八進(jìn)制輸出
- %x 十六進(jìn)制輸出
注意:數(shù)值源與輸出內(nèi)容之間沒有逗號(hào)分隔,這里容易與C語言或者Java混淆
讓十進(jìn)制數(shù)100,以八進(jìn)制輸出:
num01 = 100
print("十進(jìn)制100的八進(jìn)制數(shù)值為%o"%num01)
如果一次輸出多個(gè)進(jìn)制轉(zhuǎn)化:
num01,num02 = 100,200
print("八進(jìn)制輸出為:0o%o,0o%o"%(num01,num02))
print("十六進(jìn)制輸出為:0x%x,0x%x"%(num01,num02))
如果讓一個(gè)數(shù)二進(jìn)制形式輸出,可以直接使用bin()方法;
(2)浮點(diǎn)數(shù)格式化輸出
- 保留小數(shù)點(diǎn)后面六位有效數(shù)字
%f - 保留小數(shù)點(diǎn)后面2位有效數(shù)字
%.2f - 小數(shù)點(diǎn)后保留6位有效數(shù)字的科學(xué)計(jì)數(shù)法計(jì)數(shù)
%e - 小數(shù)點(diǎn)后保留2位有效數(shù)字的科學(xué)計(jì)數(shù)法計(jì)數(shù)
%.2e - 6位數(shù)能表示就用6位數(shù),6位數(shù)表示不了就用科學(xué)計(jì)數(shù)法
%g - 保留2位有效數(shù)字,2位有效數(shù)字表示不了就用科學(xué)計(jì)數(shù)法
%.2g
圖片.png
圖片.png
(3)字符串的格式化輸出
標(biāo)準(zhǔn)輸出%s
右對(duì)齊,占位符10位%10s
左對(duì)齊,占位符10位%-10s
截取3位字符串%.3s
右對(duì)齊10位占位符,截取兩位字符串%10.2s


2. format形式格式化輸出
(1) 相對(duì)于基本格式化輸出采用的%的方法,format()功能更加強(qiáng)大,該函數(shù)模塊把字符串當(dāng)成一個(gè)模板,通過傳入?yún)?shù)進(jìn)行格式化,并且使用大括號(hào){}作為特殊字符代替%
name = "Ailice"
gender = "男“
age = 23
print("姓名:%s 性別:%s 年齡:%d"%(name,gender,age))
print("姓名:{} 性別:{} 年齡:{}".format(name,gender,age))
(2)還可以在括號(hào)里加標(biāo)識(shí)符,后面要用的時(shí)候,就不需要在format函數(shù)里添加參數(shù)了,可以直接用
print("姓名:{0} 性別:{1} 年齡:{2} 學(xué)生姓名{0}".format(name,gender,age))
(3) 標(biāo)識(shí)符除了可以使用數(shù)字也可以直接用關(guān)鍵字
print("姓名:{name} 性別:{gender} 姓名:{name}".format(name = name,gender = gender))
(4)Format的進(jìn)階用法
forma占位符{}里面使用:對(duì)齊方向 占位長度
<默認(rèn)左對(duì)齊,>右對(duì)齊,^中間對(duì)齊,
print("姓名:{:<10}".format(name))
print("姓名:{:>10}".format(name))
print("姓名:{:^10}".format(name))
除了對(duì)齊之外還可以使用取位數(shù):{:4s}、{:.2f}
print("{:10.2f}".format(3.14159)) #十位占位長度,小數(shù)點(diǎn)后保留兩位有效數(shù)字
print("{:>10.2f}".format(3.14159)) #十位占位長度,小數(shù)點(diǎn)后保留兩位有效數(shù)字,右對(duì)齊
(5)Format對(duì)數(shù)值的操作
- 二進(jìn)制輸出
b
print("二進(jìn)制打印{0:b} {1:b}".format(num01,num02)) #0、1是編號(hào)
- 整數(shù)轉(zhuǎn)Unicode字符串輸出
c
print("把整數(shù)轉(zhuǎn)化成ASCII碼: {0:c} {1:c}".format(65,66))
輸出結(jié)果:
把整數(shù)轉(zhuǎn)化成ASCII碼: A B
- 十進(jìn)制輸出
d - 八進(jìn)制輸出
o - 十六進(jìn)制輸出
x - 科學(xué)計(jì)數(shù)法輸出
e,默認(rèn)保留小數(shù)點(diǎn)后六位
print("科學(xué)計(jì)數(shù)法輸出:{:.2e}".format(123.345))
輸出結(jié)果:
科學(xué)計(jì)數(shù)法輸出:1.23e+02
- 一般格式輸出
g,六位可以表示就用六位表示,六位表示不了就用科學(xué)計(jì)數(shù)法 - 數(shù)字輸出
n,當(dāng)值為整數(shù)時(shí)和d相同,當(dāng)值為浮點(diǎn)數(shù)是和g相同 - 百分號(hào)輸出
%,把數(shù)值轉(zhuǎn)化為百分?jǐn)?shù),小數(shù)點(diǎn)后默認(rèn)保留六位
print("百分號(hào)表示:{:.2%}".format(2))
輸出結(jié)果:
百分號(hào)表示:200.00%
-
,千位分隔符,自動(dòng)把數(shù)值轉(zhuǎn)化為貨幣千位分割的形式
print("千位分隔符:{:,}".format(102334489))
輸出結(jié)果:
千位分隔符:102,334,489

