版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章數(shù)值類型與科學(xué)計(jì)算數(shù)值類型數(shù)值類型轉(zhuǎn)換數(shù)學(xué)表達(dá)式數(shù)學(xué)運(yùn)算函數(shù)數(shù)字和數(shù)學(xué)模塊2.12.22.32.42.5學(xué)習(xí)引導(dǎo)復(fù)數(shù)類型scipy、sympy、numpy等第三方庫的應(yīng)用場(chǎng)景和可解決的問題了解不同數(shù)值類型應(yīng)用中的區(qū)別,浮點(diǎn)數(shù)取值范圍和有效數(shù)字運(yùn)算運(yùn)算優(yōu)先級(jí),不同方法控制精度的區(qū)別理解數(shù)值類型轉(zhuǎn)換,random庫的主要函數(shù)表達(dá)式構(gòu)建與數(shù)值運(yùn)算,浮點(diǎn)數(shù)精度控制掌握靈活運(yùn)用數(shù)值表達(dá)式解決數(shù)學(xué)問題運(yùn)用2.1數(shù)值類型2.1數(shù)值類型可參與數(shù)值運(yùn)算的數(shù)值類型主要有三種:2.1.1數(shù)值類型——整數(shù)不包含小數(shù)點(diǎn)的數(shù)字包括:十進(jìn)制的0、正整數(shù)和負(fù)整數(shù)以及其他進(jìn)制的整數(shù)進(jìn)制種類轉(zhuǎn)換函數(shù)引導(dǎo)符號(hào)描述與示例十進(jìn)制無由字符0到9組成,遇10進(jìn)1,如:99,156,-45二進(jìn)制bin()0b
或0B由字符0和1組成,遇2進(jìn)1,如:0b1010,0B1111八進(jìn)制oct()0o
或0O由字符0到7組成,遇8進(jìn)1,如:0o107,0O777十六進(jìn)制bex()0x
或0X由字符0到9及a、b、c、d、e、f或A、B、C、D、E、F組成,遇16進(jìn)1,如0xFF,0xff,0X10A2.1.1數(shù)值類型——整數(shù)整數(shù)子類—布爾值布爾值是兩個(gè)常量對(duì)象False
和True,表示邏輯上的假值或真值在數(shù)值類型的上下文中,分別以整數(shù)0和1為值參與運(yùn)算。
print(5+True)
print(True+False)
print(True*5+False*2)
print(True*2+3)2.1.1數(shù)值類型——整數(shù)特點(diǎn)可以存儲(chǔ)計(jì)算機(jī)內(nèi)存能夠容納的無限大整數(shù),幾乎沒有大小限制可精確表示超大數(shù)
據(jù)IDC發(fā)布《數(shù)據(jù)時(shí)代2025》的報(bào)告顯示2025年全球每天產(chǎn)生的數(shù)據(jù)量將達(dá)到
491EB,1EB=1024*106B(字節(jié))可以計(jì)算出2025年全球可產(chǎn)生206620827448116080803840字節(jié)數(shù)據(jù)。
total_byte=
491
*
1024
**
6
*
365
print(f"2025年全球可產(chǎn)生{total_byte}字節(jié)數(shù)據(jù)")
#輸出:2025年全球可產(chǎn)生206620827448116080803840字節(jié)數(shù)據(jù)2.1.2數(shù)值類型——浮點(diǎn)數(shù)由整數(shù)部分、小數(shù)點(diǎn)與小數(shù)部分組成。小數(shù)部分可以沒有數(shù)字,但小數(shù)點(diǎn)必須要有,此時(shí)相當(dāng)于小數(shù)部分為0。123.45、23.0、0.78、12.
(12.0)、.15(0.15)十進(jìn)制表示<a>e<n>,等價(jià)于數(shù)學(xué)中的a×10n
。0.48e-5、2e3、2.53e3(2.53e3=2.53×103=2530.0)科學(xué)記數(shù)法2.1.2數(shù)值類型——浮點(diǎn)數(shù)浮點(diǎn)數(shù)無法保證完全精確十進(jìn)制0.3二進(jìn)制0.01001100110011十進(jìn)制0.29998779296875浮點(diǎn)數(shù)范圍占8個(gè)字節(jié)(64位)存儲(chǔ)空間能表示的最大數(shù)字為1.7976931348623157×10308超過范圍時(shí)會(huì)觸發(fā)溢出異常(OverflowError)
print(pow(809.0,106))
#結(jié)果約為
1.748007496839708e+308,不超過浮點(diǎn)數(shù)范圍
print(pow(810.0,106))
#觸發(fā)異常
OverflowError:(34,'Resulttoolarge')2.1.2數(shù)值類型——浮點(diǎn)數(shù)浮點(diǎn)數(shù)精度默認(rèn)提供大約17位數(shù)字的精度,其余的截?cái)鄟G棄
a=3
.
1415926535897932384626433832795
#超出精度的數(shù)據(jù)存儲(chǔ)時(shí)會(huì)被丟棄
b=31415926535897
.
932384626433832795
c=31415926535897932384626433832795
#整數(shù)可以無限大小,精確存儲(chǔ)
print(a)
#輸出3
.
141592653589793
print(b)
#輸出31415926535897
.
934
print(c)
#輸出31415926535897932384626433832795整數(shù)會(huì)被完整輸出而浮點(diǎn)數(shù)輸出時(shí)將只保留
17位有效數(shù)字,其余的截?cái)鄟G棄
計(jì)算機(jī)中浮點(diǎn)數(shù)經(jīng)常無法精確表示2.1.2數(shù)值類型——浮點(diǎn)數(shù)雖然在str.format()方法中可以使用在占位符中的冒號(hào)后面加“.mf”的方法設(shè)置浮點(diǎn)數(shù)的小數(shù)位數(shù)為
m位,但實(shí)際上超過17位有效數(shù)字后面的數(shù)字并不能精確表示print('3.14159265358979323846264338327950288419716939937510')
#字符串可完整輸出:3.14159265358979323846264338327950288419716939937510print('{:.30f}'.format(314159.265358979323846264338327950288419716939937510))#314159.265358979348093271255493164062
print('{:.30f}'.format(3.14159265358979323846264338327950288419716939937510))#3.141592653589793115997963468544
n=3.0
+4j
print(n.real)
print(n.imag)
print(abs(n))2.1.3數(shù)值類型——復(fù)數(shù)復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成用a+bj,或者complex(a,b)
表示實(shí)部a和虛部b都是浮點(diǎn)數(shù)用real
和imag
方法分別獲取復(fù)數(shù)的實(shí)部和虛部用abs(a+bj)獲得復(fù)數(shù)的模#輸出實(shí)部3.0#輸出虛部4.0,注意復(fù)數(shù)的實(shí)部和虛部都是浮點(diǎn)數(shù)#輸出復(fù)數(shù)的模52.2數(shù)值類型轉(zhuǎn)換2.2數(shù)值類型轉(zhuǎn)換
數(shù)據(jù)類型作為函數(shù)名,要轉(zhuǎn)換的數(shù)字作為函數(shù)的參數(shù)。int()函數(shù):轉(zhuǎn)為整型float()函數(shù):轉(zhuǎn)為浮點(diǎn)數(shù)complex()函數(shù):轉(zhuǎn)為復(fù)數(shù)eval()函數(shù):通用方法2.2.1int()函數(shù)將浮點(diǎn)數(shù)或整數(shù)類型字符串轉(zhuǎn)換為一個(gè)整數(shù)。
int(number=0)
#將浮點(diǎn)數(shù)number轉(zhuǎn)換成十進(jìn)制整數(shù),默認(rèn)為0
int(string,base=10)
#base:輸入字符串的進(jìn)制基數(shù),默認(rèn)為10不能將浮點(diǎn)數(shù)字符串轉(zhuǎn)成整數(shù)。例如,嘗試將字符串'3.14'轉(zhuǎn)成整數(shù)時(shí),系統(tǒng)會(huì)返回ValueError
異常:print(int('3.14',
base=10))
#ValueError:invalidliteralforint()withbase10:'3.14'2.2.1int()函數(shù)
print(int())
print(int(3.14))
print(int(3.99))#浮點(diǎn)數(shù)轉(zhuǎn)整數(shù),只保留整數(shù)部分,輸出:0#浮點(diǎn)數(shù)轉(zhuǎn)整數(shù),只保留整數(shù)部分,輸出:3#浮點(diǎn)數(shù)轉(zhuǎn)整數(shù),只保留整數(shù)部分,輸出:3浮點(diǎn)數(shù)轉(zhuǎn)整數(shù)時(shí):如果缺失則返回0。若為一個(gè)數(shù)字,返回其整數(shù)部分。2.2.1int()函數(shù)可指定參數(shù)base:base為整數(shù)的進(jìn)制,范圍是0、2-36中的整數(shù)默認(rèn)值為10,常取2、8、10、16
print(int('0o107',base=8))
#'0o'
表示這是八進(jìn)制的整數(shù),輸出71
print(int('0x107',base=16))
#'0x'
表示這是十六進(jìn)制的整數(shù),輸出263
print(int('0b1001',base=0))
#'0b'
表示這是二進(jìn)制的整數(shù),輸出9字符串轉(zhuǎn)整數(shù)時(shí):必須是整型的字符串,此時(shí)int()函數(shù)將轉(zhuǎn)成對(duì)應(yīng)進(jìn)制的整數(shù)。
print(int('10'))#整型字符串,默認(rèn)十進(jìn)制,轉(zhuǎn)為整數(shù)102.2.1int()函數(shù)對(duì)于參數(shù)base:base取值為0時(shí),系統(tǒng)根據(jù)字符串前的進(jìn)制引導(dǎo)符確定該數(shù)的進(jìn)制當(dāng)指定base時(shí),必須輸入整型的字符串,從而轉(zhuǎn)成對(duì)應(yīng)進(jìn)制的整數(shù)。
print(int('0xff',base=0))
#'0x'
表示這是十六進(jìn)制的整數(shù),輸出255
#base
為
2,將二進(jìn)制構(gòu)成的字符串轉(zhuǎn)成十進(jìn)制整數(shù),輸出255
print(int('11111111',
base=2))#二進(jìn)制11111111轉(zhuǎn)成十進(jìn)制整數(shù)是255
print(int('11111111',
2))
#base可省,二進(jìn)制11111111轉(zhuǎn)成十進(jìn)制
float(number=0.0)
float(string)2.2.1float()函數(shù)將數(shù)字或浮點(diǎn)數(shù)類型字符串
轉(zhuǎn)換為浮點(diǎn)數(shù)沒有參數(shù)時(shí)返回
0.0
print(float())
#無參數(shù)時(shí)返回浮點(diǎn)數(shù)0.0,輸出:0.0
print(float(3))
#整數(shù)轉(zhuǎn)浮點(diǎn)數(shù),增加小數(shù)位,輸出:3.0
print(float('3.14'))
#將字符串
'3.14'
轉(zhuǎn)為浮點(diǎn)數(shù)3.14
print(float('0.456'))
#將字符串
'0.456'
轉(zhuǎn)為浮點(diǎn)數(shù)0.456將特定的字符串或數(shù)字轉(zhuǎn)換為一個(gè)復(fù)數(shù)或基于特定的實(shí)部和虛部創(chuàng)建一個(gè)復(fù)數(shù)2.2.1complex()函數(shù)
print(complex())
#無參數(shù),輸出:0j
print(complex(3))
#只有一個(gè)數(shù)值參數(shù),虛部為0,輸出:(3+0j)
print(complex(3,4))
#兩個(gè)數(shù)值參數(shù),輸出:(3+4j) complex(number=0) complex(string) complex(real=0,image=0)2.2.1eval()函數(shù)將字符串expression進(jìn)行解析,并作為Python表達(dá)式進(jìn)行求值 eval(expression)
eval('100')
#整數(shù)字符串參數(shù)時(shí)返回整數(shù)100
eval('3.0')
#浮點(diǎn)數(shù)字符串參數(shù)時(shí)返回浮點(diǎn)數(shù)3.0
eval('100+100')
#返回?cái)?shù)學(xué)表達(dá)式100+100并計(jì)算得到整數(shù)200
eval('(5-2/10)*5')
#返回?cái)?shù)學(xué)表達(dá)式(5-2/10)*5并計(jì)算得到浮點(diǎn)數(shù)24.0
eval('[1,2,3]')
#返回列表[1,2,3]
eval('1,2,3')
#返回元組(1,2,3)例如:參數(shù)為
'3'時(shí),轉(zhuǎn)換結(jié)果為數(shù)值3參數(shù)為
'3.0'時(shí),轉(zhuǎn)換結(jié)果為數(shù)值3.0參數(shù)為
'[1,2,3]'時(shí),返回列表
[1,2,3]2.2.1eval()函數(shù)——同步賦值可將半角逗號(hào)分隔的多個(gè)數(shù)值型數(shù)據(jù)的字符串,轉(zhuǎn)換為一個(gè)元素為數(shù)值類型的元組實(shí)現(xiàn)在一條語句中,將多個(gè)數(shù)值分別賦值給不同變量,從而實(shí)現(xiàn)多變量的同步賦值 m,n=
eval(input())
#輸入用逗號(hào)分隔的2個(gè)數(shù)值型數(shù)據(jù),賦值給m,n
#例如輸入3,5.0
print(m,n)
#輸出:
35.0
print(m*n)
#輸出:
15.02.1計(jì)算矩形面積實(shí)例說明:矩形面積=長*寬。用戶輸入長和寬的值,按輸入要求編程計(jì)算矩形的面積。思路:根據(jù)用戶輸入數(shù)據(jù)的形式和要求結(jié)果的數(shù)據(jù)類型,可以分為4種情況:輸入兩個(gè)正整數(shù),輸出結(jié)果為整數(shù)。輸入兩個(gè)浮點(diǎn)數(shù),輸出結(jié)果為浮點(diǎn)數(shù)。輸入兩個(gè)正數(shù),輸出的數(shù)據(jù)類型與輸入的數(shù)據(jù)類型保持一致。在一行內(nèi)輸入用逗號(hào)分隔的兩個(gè)數(shù),分別表示長與寬,計(jì)算矩形面積。實(shí)例2.1計(jì)算矩形面積1.輸入兩個(gè)正整數(shù),輸出結(jié)果為整數(shù)。
#輸入整數(shù)表示的矩形的長和寬,計(jì)算并輸出矩形的面積
width=int(input())
#用
int()
函數(shù)將輸入轉(zhuǎn)成整數(shù),例如輸入:3
height=int(input())
#用
int()
函數(shù)將輸入轉(zhuǎn)成整數(shù),例如輸入:4
area=width*height#利用面積公式計(jì)算面積
print(f'面積為{area}')
#輸出:面積為12實(shí)例當(dāng)用戶的輸入確定是整數(shù)時(shí),程序中可以用int()函數(shù)將輸入轉(zhuǎn)為整數(shù)類型,計(jì)算結(jié)果也是整數(shù)。用int()函數(shù)進(jìn)行轉(zhuǎn)換時(shí),如果不加其他參數(shù),輸入僅可包括“0123456789”中的數(shù)字當(dāng)輸入中包含小數(shù)點(diǎn)、字母等其他字符時(shí),會(huì)觸發(fā)
ValueError
異常。2.1計(jì)算矩形面積實(shí)例2.輸入兩個(gè)浮點(diǎn)數(shù),輸出結(jié)果為浮點(diǎn)數(shù)。
#輸入浮點(diǎn)數(shù)表示的矩形的長和寬,計(jì)算并輸出矩形的面積
width=float(input())
#用
float()
函數(shù)將輸入轉(zhuǎn)成浮點(diǎn)數(shù),例如輸入:'3.6'
轉(zhuǎn)為
3.6
height=float(input())
#用
float()
函數(shù)將輸入轉(zhuǎn)成浮點(diǎn)數(shù),例如輸入:'4.8'
轉(zhuǎn)為
4.8
area=width*height
#利用面積公式計(jì)算面積
print(f'面積為{area}')
#輸出:面積為
17.28當(dāng)用戶的輸入確定是浮點(diǎn)數(shù)時(shí),可以用float()函數(shù)將輸入轉(zhuǎn)為浮點(diǎn)數(shù)類型若輸入為整數(shù),也會(huì)轉(zhuǎn)為浮點(diǎn)數(shù)計(jì)算結(jié)果為浮點(diǎn)數(shù)3.輸出的數(shù)據(jù)類型與輸入的數(shù)據(jù)類型保持一致。2.1計(jì)算矩形面積實(shí)例
#輸入矩形的長和寬,計(jì)算并輸出矩形的面積,結(jié)果與輸入的類型一致
width=eval(input())
#用eval()函數(shù)將輸入轉(zhuǎn)成數(shù)值類型,例如輸入:3.6
height=eval(input())
#用eval()函數(shù)將輸入轉(zhuǎn)成數(shù)值類型,例如輸入:4.8
area=width*height
#利用面積公式計(jì)算面積
print(f'面積為{area}')
#輸出:面積為17.28
#若輸入是'3'和'4'則會(huì)轉(zhuǎn)為整數(shù)3和4,輸出:面積為12當(dāng)用戶的輸入不確定是整數(shù)還是浮點(diǎn)數(shù)時(shí),可以用eval()函數(shù),保證輸出和輸入的類型一致輸入整數(shù),轉(zhuǎn)化后還是整數(shù)輸入浮點(diǎn)數(shù),轉(zhuǎn)化后還是浮點(diǎn)數(shù)
#在一行內(nèi)輸入矩形的長和寬,計(jì)算并輸出矩形的周長和面積
#輸入:3,4
#邊長為
3
和
4
的矩形的周長為
14,面積為
12
width,height=eval(input())
#輸入用逗號(hào)分隔的長和寬
area=width*height
#計(jì)算面積
print(f'面積為{area}’)
#輸出:面積為124.在一行內(nèi)輸入用逗號(hào)分隔的兩個(gè)數(shù),分別表示長與寬,計(jì)算矩形面積。2.1計(jì)算矩形面積實(shí)例當(dāng)用戶的輸入在同一行時(shí),也可以用eval()函數(shù),實(shí)現(xiàn)多變量同步賦值2.3數(shù)學(xué)表達(dá)式2.3數(shù)學(xué)表達(dá)式數(shù)學(xué)運(yùn)算是用運(yùn)算符將對(duì)象連接起來構(gòu)成表達(dá)式來實(shí)現(xiàn)。(表中a=8
b=5)優(yōu)先級(jí)運(yùn)算函數(shù)運(yùn)算符符號(hào)運(yùn)算實(shí)例解釋低加add(a,b)+a+bprint(a+b)兩個(gè)數(shù)加和,13減sub(a,b)-a-bprint(a-b)兩個(gè)數(shù)相減,3中乘mul(a,b)*a*bprint(a*b)兩個(gè)數(shù)相乘,40除truediv(a,b)/a/bprint(a/b)兩個(gè)數(shù)相除,1.6整除floordiv(a,b)//a//bprint(a//b)兩個(gè)數(shù)整除,返回整數(shù)商1取模mod(a,b)%a%bprint(a%b)模運(yùn)算,返回整除的余數(shù)3高冪pow(a,b)**a**bprint(a**b)冪運(yùn)算,32768在表達(dá)式中可以運(yùn)用括號(hào)改變運(yùn)算順序數(shù)學(xué)表達(dá)式下面是一些Python中的數(shù)學(xué)表達(dá)式的示例: result=
5
+
3
#加法結(jié)果為8 result=
10
-
7
#減法結(jié)果為3 result=
4
*
6
#乘法結(jié)果為24 result=
15
/
3
#除法結(jié)果為5.0(在Python3中,除法操作總是返回浮點(diǎn)數(shù)) result=
2
**
3
#冪運(yùn)算結(jié)果為8
#使用括號(hào)確定運(yùn)算順序 result=
(4
+
5)
*
2
#結(jié)果為18,先計(jì)算括號(hào)中的表達(dá)式,然后再乘以22.3加、減、乘運(yùn)算符與數(shù)學(xué)中的應(yīng)用一樣,需要注意的是乘法運(yùn)算中運(yùn)算符不可以省2.3數(shù)學(xué)表達(dá)式精確除法(/):結(jié)果為浮點(diǎn)數(shù)整除(//):向下(即負(fù)無窮大方向)取整,結(jié)果為整數(shù)
print(12/4)
#精確除的結(jié)果永遠(yuǎn)為浮點(diǎn)數(shù)3.0
print(-10/4)
#-2.5
print(10//4)
#取負(fù)無窮大方向最接近2.5的那個(gè)整數(shù)2
print(10.0//4)
#2.0,結(jié)果為浮點(diǎn)類型的整數(shù)
print(-10//4)
#取負(fù)無窮大方向最接近-2.5的那個(gè)整數(shù)-3當(dāng)參與運(yùn)算的數(shù)字都是整型時(shí),結(jié)果是整型當(dāng)有浮點(diǎn)數(shù)參與運(yùn)算的時(shí)候,結(jié)果為浮點(diǎn)型的整數(shù)2.3數(shù)學(xué)表達(dá)式取模運(yùn)算(%):兩個(gè)數(shù)整除的余數(shù)。其數(shù)學(xué)定義如下:
print(-11%4)
#輸出:1
print(-11%-4)
#輸出:-3
print(11%4)
#輸出:3
print(11%-4)
#輸出:-1
print(3.5%-2)
#輸出:-0.5
print(4%-2)
#輸出:0 r=a-
(a//b)
*ba和b可以是整數(shù),也可以是浮點(diǎn)數(shù)。a和b符號(hào)相同時(shí),取模結(jié)果為正數(shù);符號(hào)不同時(shí),取模結(jié)果為負(fù)數(shù)。模非零時(shí),其符號(hào)與b相同。2.3數(shù)學(xué)表達(dá)式冪運(yùn)算(**):兩個(gè)星號(hào)表示冪運(yùn)算a**b冪運(yùn)算優(yōu)先級(jí)比乘、除、模運(yùn)算和取反高在Python中,**運(yùn)算符是右結(jié)合的,意味著當(dāng)連續(xù)多個(gè)冪運(yùn)算時(shí),計(jì)算順序是從右向左的。適當(dāng)加括號(hào),提高程序的可讀性和可維護(hù)性
print(-(3**2))
#先進(jìn)行冪運(yùn)算,再取反,結(jié)果為-9
print((-3)**2)
#3先取反,再進(jìn)行冪運(yùn)算,結(jié)果為9
print(2
**
0.5
**
2)
#等同于print(2**(0.5**2)),1.189207115002721
print((2
**
0.5)
**
2)
#2.00000000000000042.2一元二次方程求解
實(shí)例2.2一元二次方程求解
a,b,c=5,8,3
#同步賦值,5,8,3分別賦值給
a,
b,
c
x1=(-b+(b*b-4*a*c)**(1/2))/(2*a)#分母的括號(hào)不能省略
x2=(-b-(b**2-4*a*c)**0.5)/2/a
#用
0.5
代替
1/2,用兩個(gè)除法代替分母中的乘法
print(x1,x2)
#在一行內(nèi)輸出
-0.6-1.0,輸出結(jié)果用空格分隔實(shí)例注意:表達(dá)式中的乘號(hào)不可以省略分母中的(2*a)的括號(hào)不能省略,否則因乘除的優(yōu)級(jí)相同,會(huì)按先后順序進(jìn)行運(yùn)算,那么結(jié)果就是除2再乘a。如果一定要去掉這個(gè)括號(hào),可將2*a中的乘號(hào)改為除號(hào)(/)以保持?jǐn)?shù)學(xué)上的運(yùn)算順序。分子里(1/2)的括號(hào)不可以省略,因?yàn)閮邕\(yùn)算優(yōu)先級(jí)高于除法運(yùn)算,沒有括號(hào)時(shí)會(huì)先計(jì)算1次冪,再除2,計(jì)算結(jié)果錯(cuò)誤。為避免這個(gè)問題,可以將(1/2)改寫為0.5。2.2一元二次方程求解
a,b,c=5,8,3
#同步賦值,5,8,3分別賦值給
a,
b,
c
x1=(-b+(b*b-4*a*c)**(1/2))/(2*a)#分母的括號(hào)不能省略
x2=(-b-(b**2-4*a*c)**0.5)/2/a
#用
0.5
代替
1/2,用兩個(gè)除法代替分母中的乘法
print(x1,x2)
#在一行內(nèi)輸出
-0.6-1.0,輸出結(jié)果用空格分隔實(shí)例冪運(yùn)算可以計(jì)算復(fù)數(shù)例如當(dāng)a、b與c的值都為4時(shí),判別式結(jié)果小于0,此時(shí)方程有兩個(gè)用復(fù)數(shù)表示的虛根:(-0.49999999999999994+0.8660254037844386j)(-0.5-0.8660254037844386j)2.4
數(shù)學(xué)運(yùn)算函數(shù)2.4數(shù)學(xué)運(yùn)算函數(shù)Python內(nèi)置了一系列與數(shù)學(xué)運(yùn)算相關(guān)的函數(shù)可以直接使用,下面給出常用內(nèi)置數(shù)學(xué)運(yùn)算函數(shù)的功能描述與示例函數(shù)解釋實(shí)例結(jié)果abs(x)當(dāng)x是整數(shù)或浮點(diǎn)數(shù)時(shí)返回x的絕對(duì)值,當(dāng)x為復(fù)數(shù)時(shí)返回復(fù)數(shù)的模。print(abs(-3))3pow(x,y[,z])返回x的y次冪print(pow(2,3))8sum(iterable)自左向右對(duì)可迭代對(duì)象iterable的項(xiàng)求和并返回總計(jì)值print(sum([1,2,3]))6round(number[,n])返回浮點(diǎn)數(shù)number保留n位小數(shù)的形式print(round(3.1415,2))3.14max(arg1,arg2,…)從多個(gè)參數(shù)或一個(gè)可迭代對(duì)象中返回其最大值print(max(80,100,10))100min(arg1,arg2,…)從多個(gè)參數(shù)或一個(gè)可迭代對(duì)象中返回其最小值print(min(80,100,10))10divmod(a,b)相當(dāng)于(a//b,a%b),以元組形式返回整數(shù)商和余數(shù)print(divmod(10,3))(3,1)數(shù)學(xué)運(yùn)算函數(shù)2.4abs(x):返回x的絕對(duì)值x可以是整數(shù)或浮點(diǎn)數(shù)x為復(fù)數(shù)時(shí)返回復(fù)數(shù)的模
print(abs(-3))
#返回整數(shù)絕對(duì)值,輸出3
print(abs(-3.45))
#返回實(shí)數(shù)絕對(duì)值,輸出3.45
print(abs(3+4j))
#計(jì)算復(fù)數(shù)的模,輸出5.0pow(x,y[,z]):返回x的y次冪當(dāng)z存在時(shí),返回x的y次冪計(jì)算結(jié)果再對(duì)z取模。
print(pow(2,
3))
#計(jì)算23,輸出8
print(pow(1999,
1998,
1997))
#1999**1998%1997輸出4數(shù)學(xué)運(yùn)算函數(shù)2.4print(sum([1,2,3,4,5]))#列表元素求和,輸出15
print(sum(range(101)))#對(duì)range產(chǎn)生0-100的等差數(shù)列和求和,輸出5050
ls
=[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]#列表,是可迭代對(duì)象
print(sum(ls))#3.12以前版本得到0.9999999999999999
print(sum(ls))#3.12以后版本可得到1.0
print(sum(ls,start=100))#各項(xiàng)數(shù)字累加到初值100上,輸出101.0sum(iterable,/,start=0):自左向右對(duì)iterable
的項(xiàng)求和并返回總計(jì)值可迭代對(duì)象的項(xiàng)通常為數(shù)字,在3.12版本以后浮點(diǎn)數(shù)的加和可得到精確結(jié)果start值不允許為字符串有start參數(shù)存在時(shí),將所有項(xiàng)的和加到start上start值是列表時(shí),將前面的對(duì)象中的列表元素依次拼接到start列表上數(shù)學(xué)運(yùn)算函數(shù)2.4round(number[,n]):浮點(diǎn)數(shù)number最多保留n位小數(shù)(舍棄末尾0)n為整型,缺省值是0,省略參數(shù)n時(shí),返回最接近輸入數(shù)字的整數(shù)n值必須是整型數(shù)字,當(dāng)n為浮點(diǎn)數(shù)時(shí),會(huì)觸發(fā)TypeError末位取舍算法:四舍六入五考慮,五后非零就進(jìn)一,五后為零看奇偶,五前為偶應(yīng)舍去,五前為奇要進(jìn)一。
print(round(3.1415))
#3,返回最接近輸入數(shù)字的整數(shù)
print(round(-3.1415))
#-3,返回最接近輸入數(shù)字的整數(shù)
print(round(3.8415))
#4,返回最接近輸入數(shù)字的整數(shù)
print(round(3.1250001,2))#3.13五后非零就進(jìn)一
print(round(3.125,2))
#3.12五前為偶應(yīng)舍去
print(round(3.115,2))
#3.12五前為奇要進(jìn)一
print(round(5,4))
#number為整數(shù)時(shí),返回整數(shù)本身,輸出5數(shù)學(xué)運(yùn)算函數(shù)2.4絕大多數(shù)浮點(diǎn)數(shù)無法精確轉(zhuǎn)為二進(jìn)制,會(huì)導(dǎo)致部分?jǐn)?shù)字取舍與期望不符。當(dāng)n超過小數(shù)位數(shù)時(shí),返回該數(shù)的最短表示,舍棄末尾0。
#0.1425計(jì)算機(jī)中存0.14250000000000002
print(round(3.1425,3))#期望輸出3.142,實(shí)際輸出3.143
print(round(2.675,2))
#期望輸出2.68,實(shí)際輸出2.67
print(round(12.0000,
4))
#期望輸出
12.00,實(shí)際輸出其浮點(diǎn)數(shù)的最短表示
12.0
print(round(3.14,4))
#期望輸出
3.1400,實(shí)際輸出
3.14數(shù)學(xué)運(yùn)算函數(shù)2.4max(arg1,arg2,…)和max(iterable):返回最大值。從多個(gè)參數(shù)或可迭代對(duì)象中返回最大值,有多個(gè)最大值時(shí)返回第一個(gè)
print(max(80,100,1000))#80,100,1000這三個(gè)整數(shù)對(duì)象中1000最大
print(max([49,25,88]))#列表
[49,
25,
88]
是可迭代對(duì)象,最大值是
88min(arg1,arg2,…)和min(iterable):返回最小值。從多個(gè)參數(shù)或可迭代對(duì)象中返回最小值,有多個(gè)最小值時(shí)返回第一個(gè)
print(min(80,100,1000))
#80,100,1000
這三個(gè)整數(shù)對(duì)象中80最小
print(min([49,
25,
88]))
#列表
[49,
25,
88]
是可迭代對(duì)象,最小值是
25數(shù)學(xué)運(yùn)算函數(shù)2.4divmod():相當(dāng)于(a//b,a%b),以元組形式返回整數(shù)商和余數(shù)。 print(divmod(10,3))
#以元組形式返回整數(shù)商和余數(shù),輸出(3,1)2.5數(shù)字和數(shù)學(xué)模塊2.5模塊模塊
(module)一個(gè)包含了可重復(fù)使用的Python代碼文件,可以在其他程序中調(diào)用其定義的變量、函數(shù)和類等??梢园阉斫鉃镻ython的擴(kuò)展工具,可提供面向特定領(lǐng)域或方向的程序功能。將多個(gè)功能相關(guān)的模塊打包組織在一起,便構(gòu)成了一個(gè)功能更完整、更強(qiáng)大的庫(Library)。標(biāo)準(zhǔn)庫:Python安裝時(shí)就自帶的核心庫提供了語言最基礎(chǔ)的功能,無需額外安裝即可直接調(diào)用第三方庫:由社區(qū)開發(fā)者為解決特定需求而創(chuàng)建的庫需要手動(dòng)安裝后才能使用2.5安裝模塊使用pip命令安裝打開命令提示符/終端:Windows:按下win+R鍵,輸入cmd,然后回車macOS:按下Command+空格鍵,輸入Terminal,然后回車使用pip安裝:在打開的窗口中,輸入以下命令格式并回車注意,早期版本macOS通常使用pip3以區(qū)別于系統(tǒng)可能自帶的Python2例如,安裝numpy庫:pipinstallnumpy或pip3installnumpy pipinstall模塊名 pip3install模塊名2.5導(dǎo)入及調(diào)用模塊Python中導(dǎo)入庫(模塊)的方法有兩種。下面以導(dǎo)入math庫,并調(diào)用其中的常數(shù)pi和開平方函數(shù)sqrt()為例:導(dǎo)入庫名如果模塊名過長或容易與其他模塊沖突,可以使用import...as…給模塊起別名語法表示程序可以調(diào)用模塊中的所有函數(shù)調(diào)用庫中函數(shù)時(shí),需要在函數(shù)名前加庫名,明確指出函數(shù)所在的庫的名稱 import<庫名>[as別名]
importmath
#導(dǎo)入math模塊,引用時(shí)函數(shù)名前加math. print(math.pi)
#輸出math模塊中的pi值3.141592653589793
print(math.sqrt(5))#輸出5的平方根2.236067977499792.5導(dǎo)入及調(diào)用模塊直接導(dǎo)入庫中的函數(shù)可以同時(shí)引用多個(gè)函數(shù),各函數(shù)間用逗號(hào)分隔也可以用通配符*
導(dǎo)入該庫中的全部函數(shù)避免了每次調(diào)用函數(shù)時(shí)都需要加上模塊名,代碼更加簡潔。from<庫名>import<函數(shù)名,函數(shù)名,…>#導(dǎo)入庫中的多個(gè)函數(shù),用逗號(hào)分隔from<庫名>import*#導(dǎo)入庫中所有函數(shù),*是通配符,代表全部函數(shù) frommathimportpi,sqrt
#導(dǎo)入math中的常數(shù)pi和sqrt()函數(shù) #frommathimport*
#導(dǎo)入math中所有函數(shù),引用時(shí)直接引用函數(shù)名 print(pi)
#輸出math中pi值3.141592653589793 print(sqrt(5))
#輸出5的平方根2.236067977499792.5導(dǎo)入及調(diào)用模塊直接導(dǎo)入庫中的函數(shù)from<庫名>import<函數(shù)名,函數(shù)名,…>#導(dǎo)入庫中的多個(gè)函數(shù),用逗號(hào)分隔from<庫名>import*#導(dǎo)入庫中所有函數(shù),*是通配符,代表全部函數(shù)程序較簡單時(shí),只導(dǎo)入一個(gè)模塊或所引用的函數(shù)僅在一個(gè)庫中存在時(shí),兩種方法都可以使用。程序較復(fù)雜、引用多個(gè)模塊時(shí),可能在多個(gè)模塊中存在同名函數(shù),而這些同名函數(shù)功能可能不同。建議使用第一種方法,明確指出所引用的函數(shù)來自于哪個(gè)模塊,以免出現(xiàn)錯(cuò)誤。2.5.1math模塊math模塊在Python安裝好后,導(dǎo)入模塊即可使用提供了乘方、開方、對(duì)數(shù)運(yùn)算等函數(shù)僅支持整數(shù)和浮點(diǎn)數(shù),不支持復(fù)數(shù)運(yùn)算數(shù)論與表示函數(shù)21個(gè)冪和對(duì)數(shù)函數(shù)8個(gè)三角函數(shù)9個(gè)雙曲函數(shù)6個(gè)角度轉(zhuǎn)換函數(shù)2個(gè)特殊函數(shù)4個(gè)常數(shù)5個(gè)math---數(shù)學(xué)函數(shù)—Python3.13.5文檔2.5.1math模塊——常數(shù)math.pi:返回圓周率常數(shù)π
值
math.e:返回自然常數(shù)e
值print(math.pi)
#輸出3.141592653589793print(math.e)
#輸出2.718281828459045math.factorial(x):返回x的階乘。x為非負(fù)整數(shù),x為負(fù)數(shù)或浮點(diǎn)數(shù)時(shí)返回錯(cuò)誤2.5.1math模塊——數(shù)值函數(shù)
import
math print(math.factorial(6))
#值為1*2*3*4*5*6,輸出720math.gcd(*integers):返回給定整數(shù)參數(shù)的最大公約數(shù)。math.lcm(*integers):返回給定整數(shù)參數(shù)的最小公倍數(shù)。2.5.1math模塊——數(shù)值函數(shù)
import
math print(math.gcd(88,
44,
22))
#輸出22 print(math.gcd(0,
0))
#輸出0 print(math.lcm(44,
22,
5))
#輸出220 print(math.lcm())
#輸出13.9以后的版本支持任意數(shù)量參數(shù),之前的版本只支持兩個(gè)參數(shù)math.floor(x):返回不大于x的最大整數(shù)math.ceil(x):返回不小于x的最小整數(shù)math.exp(x):返回e的x次冪math.sqrt(x):返回非負(fù)整數(shù)x的平方根2.5.1math模塊——數(shù)值函數(shù)
importmath
print(math.floor(9.99))
#向下取整,輸出9
print(math.ceil(9.01))
#向上取整,輸出102.5.1math模塊——數(shù)值函數(shù)math.isqrt(x)
:返回非負(fù)整數(shù)x的整數(shù)平方根,即對(duì)x的實(shí)際平方根向下取整。對(duì)于某些情況,可能更適合實(shí)際平方根向上取整,此時(shí)可以使用1+isqrt(n-1)來計(jì)算
importmath
print(math.exp(2))
#輸出e的
2
次方,7.38905609893065
print(math.pow(2,3))
#輸出2的3次方8.0
print(math.sqrt(100))
#輸出100
的正數(shù)平方根10.0
print(math.isqrt(99))
#輸出99
的整數(shù)平方根9
print(1+
math.isqrt(99
-
1))
#輸出不小于99的平方根的最小整數(shù)102.5.1math模塊——數(shù)值函數(shù)math.cos(x):返回x的余弦函數(shù),x為弧度math.sin(x):返回x的正弦函數(shù),x為弧度math.degrees(x):弧度值轉(zhuǎn)角度值math.radians(x):角度值轉(zhuǎn)弧度值
print(math.cos(math.pi/3))
#輸出0.5000000000000001
print(math.sin(math.pi/3))
#輸出0.8660254037844386
print(math.degress(math.pi/4))
#輸出45.0
print(math.radians(90))
#輸出1.57079632679489662.5.1math模塊——數(shù)值函數(shù)math.log2(x):返回以2為底的x的對(duì)數(shù),其值通常比log(x,2)值更精確math.log10(x):返回以10為底的x的對(duì)數(shù),其值通常比log(x,10)值更精確math.hypot(x,y):返回坐標(biāo)(x,y)到原點(diǎn)(0,
0)
距離math.dist(p,q):返回p與q兩點(diǎn)之間的歐幾里得距離,以一個(gè)坐標(biāo)序列或可迭代對(duì)象的形式給出,兩個(gè)點(diǎn)必須具有相同的維度。
print(math.log2(9))
#輸出3.169925001442312
print(math.log10(9))
#輸出0.9542425094393249
print(math.hypot(3,4))
#輸出5
print(math.dist([1,2],[3,4]))
#輸出2.236067977499792.5.1math模塊——數(shù)值函數(shù)d(iterable,start=1):計(jì)算輸入的可迭代對(duì)象iterable
中所有元素的積。當(dāng)對(duì)象為空時(shí),返回默認(rèn)起始值1。此函數(shù)特別針對(duì)數(shù)字值使用,并會(huì)拒絕非數(shù)字類型。b(n,k):返回不重復(fù)且無順序地從n項(xiàng)中選擇k項(xiàng)的方式總數(shù)。也稱為二項(xiàng)式系數(shù),因?yàn)槠涞葍r(jià)于表達(dá)式(1+x)**n的多項(xiàng)式展開中第k項(xiàng)的系數(shù)。
print(math.prod([1,2,3,4,5]))
#輸出120
print(math.prod([1,2,3,4,5],start=2))
#輸出240
print(math.comb(6,3))
#輸出202.5.2random模塊random
模塊用于產(chǎn)生各種分布的偽隨機(jī)數(shù)seed(種子)是算法開始計(jì)算的第一個(gè)值。不設(shè)置種子時(shí),默認(rèn)使用系統(tǒng)時(shí)間作為種子,使每次生成的隨機(jī)數(shù)不同。設(shè)置相同的種子,后續(xù)產(chǎn)生的隨機(jī)數(shù)相同。導(dǎo)入random模塊: importrandom2.5.2random模塊——常用函數(shù)函數(shù)描述與示例random.seed(a=None)初始化隨機(jī)數(shù)生成器,缺省時(shí)用系統(tǒng)時(shí)間做種子。seed必須是下列類型之一:NoneType、int、float、str、bytes或bytearray。random.randint(a,b)產(chǎn)生[a,b]之間(包括b)的一個(gè)隨機(jī)整數(shù)random.random()產(chǎn)生[0.0,1.0)之間的一個(gè)隨機(jī)浮點(diǎn)數(shù)random.uniform(a,b)產(chǎn)生[a,b)之間的一個(gè)隨機(jī)浮點(diǎn)數(shù)random.choice(seq)從非空序列seq中隨機(jī)產(chǎn)生一個(gè)元素,當(dāng)序列為空時(shí),觸發(fā)索引異常random.shuffle(x[,random])將可變序列x順序打亂random.sample(population,k)從列表、元組、字符串、集合、range對(duì)象等分布式序列中隨機(jī)選取k個(gè)元素,以列表形式返回。2.3猜數(shù)游戲?qū)嵗f明:隨機(jī)產(chǎn)生一個(gè)[1,128]之間的整數(shù),由玩家去猜,共有128次機(jī)會(huì)。如果猜中提示“猜中了!”并結(jié)束程序否則重新輸入猜測(cè)的數(shù)字思路:首先產(chǎn)生一個(gè)給定范圍內(nèi)的隨機(jī)整數(shù)用range()函數(shù)限定猜測(cè)次數(shù)在限定的猜測(cè)次數(shù)內(nèi)猜中,則提前結(jié)束循環(huán)實(shí)例 importrandom
num=random.randint(1,
128)
#隨機(jī)生成一個(gè)[1,128]間的整數(shù) foriin
range(128):
#限定猜測(cè)次數(shù)不超過128次
guess=
int(input("請(qǐng)輸入你猜的數(shù)字:"))
ifguess==num:
#猜中數(shù)字
print("猜中了!")
break
#提前結(jié)束循環(huán)2.3猜數(shù)游戲?qū)嵗_始循環(huán)體邏輯條件結(jié)束TrueFalse2.5.3NumPy模塊NumPy(NumericalPython)是用于科學(xué)計(jì)算的基礎(chǔ)庫提供了一個(gè)強(qiáng)大的n維數(shù)組對(duì)象,以及處理這些數(shù)組的各種工具優(yōu)勢(shì):高效的數(shù)值計(jì)算能力,尤其是處理大型數(shù)組和矩陣時(shí)。主要特點(diǎn):高效的多維數(shù)組對(duì)象ndarray用于數(shù)組計(jì)算的函數(shù)庫線性代數(shù)傅里葉變換隨機(jī)數(shù)生成等安裝命令: pipinstallnumpy2.4統(tǒng)計(jì)學(xué)生成績實(shí)例說明:已知一組學(xué)生的成績計(jì)算平均分、最高分和最低分統(tǒng)計(jì)及格的人數(shù)思路:用numpy的array()方法創(chuàng)建數(shù)組使用
mean()、max()、min()進(jìn)行基本統(tǒng)計(jì)計(jì)算使用
sum()配合布爾索引來計(jì)數(shù)實(shí)例2.4統(tǒng)計(jì)學(xué)生成績
importnumpyasnp#導(dǎo)入numpy模塊并起別名為np方便引用
#創(chuàng)建一個(gè)表示學(xué)生成績的numpy數(shù)組 grades=np.array([85,90,78,92,88,76,94,87,81,89]) average=np.mean(grades)
#計(jì)算平均分 highest=np.max(grades) #找出最高分 lowest=np.min(grades)
#找出最低分
print(f"平均分:
{average:.2f}")
#打印結(jié)果
print(f"最高分:{highest}")
print(f"最低分:{lowest}")
passed_students=np.sum(grades>=
60)
#計(jì)算及格(60分以上)的學(xué)生人數(shù)
print(f"及格學(xué)生人數(shù):{passed_students}")實(shí)例2.5.4SciPy模塊SciPy(ScientificPython)用于數(shù)學(xué)、科學(xué)和工程計(jì)算在numpy的基礎(chǔ)之上,提供了更多科學(xué)計(jì)算工具優(yōu)勢(shì):集合了各種高級(jí)數(shù)學(xué)算法和工具安裝命令:主要用途:優(yōu)化和擬合算法線性代數(shù)運(yùn)算積分和微分方程求解信號(hào)和圖像處理統(tǒng)計(jì)功能多維圖像處理等 pipinstallscipy2.5應(yīng)用SciPy計(jì)算定積分實(shí)例說明:定義一個(gè)函數(shù)integrand(x)=x2*e(-x)使用egrate.quad計(jì)算這個(gè)函數(shù)從0到無窮大的定積分輸出積分結(jié)果和估計(jì)誤差思路:使用scipy構(gòu)建函數(shù),進(jìn)行基本的數(shù)學(xué)計(jì)算調(diào)用定積分函數(shù)將結(jié)果賦值給積分結(jié)果result變量和估計(jì)誤差error變量實(shí)例2.5應(yīng)用SciPy計(jì)算定積分
importnumpyasnp
fromscipyimportinteg
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工現(xiàn)場(chǎng)圍擋施工進(jìn)度方案
- 管道施工信息化管理方案
- 外墻石材干掛技術(shù)要求施工方案
- 木結(jié)構(gòu)隔墻板施工方案
- 聚氨酯防水涂料地下室施工方案
- 灰土擠密樁地基施工方案及規(guī)范
- 交通工程景觀施工方案
- 基礎(chǔ)混凝土施工人員培訓(xùn)方案
- 光電芯片設(shè)備可靠性和耐久性研究-洞察及研究
- 感冒幼兒入園管理制度(3篇)
- 2024年地下儲(chǔ)氣庫行業(yè)現(xiàn)狀分析:全球地下儲(chǔ)氣庫數(shù)量增至679座
- GB/T 6003.2-2024試驗(yàn)篩技術(shù)要求和檢驗(yàn)第2部分:金屬穿孔板試驗(yàn)篩
- 離婚協(xié)議標(biāo)準(zhǔn)版(有兩小孩)
- 浙江省臺(tái)州市路橋區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期1月期末考試語文試題(含答案)
- 假體隆胸后查房課件
- 2023年互聯(lián)網(wǎng)新興設(shè)計(jì)人才白皮書
- DB52-T 785-2023 長順綠殼蛋雞
- 關(guān)于地方儲(chǔ)備糧輪換業(yè)務(wù)會(huì)計(jì)核算處理辦法的探討
- GB/T 29319-2012光伏發(fā)電系統(tǒng)接入配電網(wǎng)技術(shù)規(guī)定
- GB/T 1773-2008片狀銀粉
- GB/T 12007.4-1989環(huán)氧樹脂粘度測(cè)定方法
評(píng)論
0/150
提交評(píng)論