Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第2章 數(shù)值類型與科學(xué)計(jì)算_第1頁
Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第2章 數(shù)值類型與科學(xué)計(jì)算_第2頁
Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第2章 數(shù)值類型與科學(xué)計(jì)算_第3頁
Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第2章 數(shù)值類型與科學(xué)計(jì)算_第4頁
Python程序設(shè)計(jì)基礎(chǔ)(第2版)課件 第2章 數(shù)值類型與科學(xué)計(jì)算_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論