Python編程基礎(chǔ)與應(yīng)用第4章 運(yùn)算符_第1頁
Python編程基礎(chǔ)與應(yīng)用第4章 運(yùn)算符_第2頁
Python編程基礎(chǔ)與應(yīng)用第4章 運(yùn)算符_第3頁
Python編程基礎(chǔ)與應(yīng)用第4章 運(yùn)算符_第4頁
Python編程基礎(chǔ)與應(yīng)用第4章 運(yùn)算符_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

4

運(yùn) 算 符XXXX

大學(xué)XX

學(xué)院XXX

教授2學(xué)習(xí)目標(biāo):掌握算術(shù)與賦值運(yùn)算符的使用掌握比較與邏輯運(yùn)算符的使用掌握成員與身份運(yùn)算符的使用熟悉三目、集合與位運(yùn)算符的使用理解運(yùn)算符的優(yōu)先級(jí)理解計(jì)算思維過程及應(yīng)用思政內(nèi)涵:運(yùn)算優(yōu)先級(jí)的變化可能導(dǎo)致問題的解決結(jié)果截然不同,廣大學(xué)子要善于抓住事物的主要矛盾,培養(yǎng)辯證思維能力。4章運(yùn)算

符34.1 算術(shù)運(yùn)算符算術(shù)運(yùn)算符即數(shù)學(xué)運(yùn)算符,用來對(duì)數(shù)字進(jìn)行數(shù)學(xué)運(yùn)算,其中+和*可以對(duì)字符串進(jìn)行運(yùn)算。表

4-1

列出了Python

支持的算術(shù)運(yùn)算符及其功能描述與實(shí)例。表

4-1 算術(shù)運(yùn)算符及其功能描述與實(shí)例運(yùn)算符功能描述運(yùn)算實(shí)例+數(shù)值加或字符串拼接7+2=9,"ab"+"cd"="abcd"-減7-2=5*數(shù)值乘或字符串重復(fù)7*2=14,"ab"*3="ababab"/除7/2=3.5//整除(只保留商的整數(shù)部分)7//2=3%取余(返回除法的余數(shù))7%2=1**冪運(yùn)算7**2=4944.1.1 加法運(yùn)算符1.

數(shù)值加法當(dāng)+用于數(shù)值時(shí)表示加法,加法運(yùn)算很簡單,和數(shù)學(xué)中的規(guī)則一樣,示例代碼如程序段P4.1

所示。P4.1

數(shù)值加法運(yùn)算m=

10n=

97sum1=m+

nx=

7.2y=

15.3sum2=x+

yprint("sum1=%d,sum2=%.2f"%(sum1,sum2)

)4章運(yùn)算

符5運(yùn)行代碼,輸出結(jié)果如下。sum1=107,

sum2=22.502.

拼接字符串當(dāng)+用于字符串時(shí),有拼接字符串(將兩個(gè)字符串連接為一個(gè))的作用,示例代碼如程序段P4.2

所示。P4.2

拼接字符串name

=

"python

語言學(xué)習(xí)網(wǎng)"url="/"age=

10info

=

name

+

"的網(wǎng)址是"

+

url

+",已經(jīng)"

+

str(age)

+

"歲了。"print(info)6運(yùn)行代碼,輸出結(jié)果如下。python

語言學(xué)習(xí)網(wǎng)的網(wǎng)址是/,已經(jīng)

10

歲了。str()函數(shù)用來將整數(shù)類型的age

轉(zhuǎn)換成字符串。乘法運(yùn)算符數(shù)值乘法當(dāng)*用于數(shù)值時(shí)表示乘法,乘法運(yùn)算也和數(shù)學(xué)中的規(guī)則相同,示例代碼如程序段P4.3

所示。P4.3

乘法運(yùn)算n=4*

25f=34.5*

2print(n,",",

f)4章運(yùn)算

符7運(yùn)行代碼,輸出結(jié)果如下。100,

69.02.

重復(fù)字符串當(dāng)*用于字符串時(shí),表示重復(fù)字符串,即將多個(gè)同樣的字符串連接起來。示例代碼如程序段P4.4

所示。P4.4

重復(fù)字符串str1="hello"print(str1*

4)運(yùn)行代碼,輸出結(jié)果如下。hellohellohello

hello8Python

中的算術(shù)運(yùn)算符既支持相同類型的數(shù)值運(yùn)算,也支持不同類型的數(shù)值混合運(yùn)算。在進(jìn)行混合運(yùn)算時(shí),Python

會(huì)強(qiáng)制對(duì)數(shù)值的類型進(jìn)行臨時(shí)類型轉(zhuǎn)換。臨時(shí)類型轉(zhuǎn)換遵循如下原則。當(dāng)整型與浮點(diǎn)型進(jìn)行混合運(yùn)算時(shí),將整型轉(zhuǎn)換為浮點(diǎn)型。當(dāng)其他類型與復(fù)數(shù)類型進(jìn)行運(yùn)算時(shí),將其他類型轉(zhuǎn)換為復(fù)數(shù)類型。使用整型數(shù)據(jù)分別與浮點(diǎn)型數(shù)據(jù)和復(fù)數(shù)類型數(shù)據(jù)進(jìn)行運(yùn)算,示例代碼如程序段P4.5

所示。P4.5

混合運(yùn)算print(10/2.0)print(10-(3+5j))5.0運(yùn)行代碼,輸出結(jié)果如下。7-5j4章運(yùn)算

符94.2

賦值運(yùn)算符賦值運(yùn)算符用來把右側(cè)的值傳遞給左側(cè)的變量,可以直接將右側(cè)的值賦給左側(cè)的變量,也可以進(jìn)行某些運(yùn)算后再賦給左側(cè)的變量。Python

中最基本的賦值運(yùn)算符是=,結(jié)合其他運(yùn)算符,=還能擴(kuò)展出更強(qiáng)大的賦值運(yùn)算符。表

4-2

列出了Python

支持的賦值運(yùn)算符及其功能描述與實(shí)例。表

4-2 賦值運(yùn)算符及其功能描述與實(shí)例運(yùn)算符功能描述實(shí)例(x

是變量)=簡單賦值運(yùn)算符x=7+2,即將

7+2

的運(yùn)算結(jié)果賦值給x+=加法賦值運(yùn)算符x

+=7

等效于x=x+7-=減法賦值運(yùn)算符x

-=7

等效于x=x-7*=乘法賦值運(yùn)算符x

*=7

等效于x=x*710/=除法賦值運(yùn)算符x

/=7

等效于x=x/7//=整除賦值運(yùn)算符x

//=7

等效于x=x//7%=取模賦值運(yùn)算符x

%=7

等效于x=x%7**=冪賦值運(yùn)算符x

**=7

等效于x=x**74.2.1 基本賦值運(yùn)算符符號(hào)=是Python

中最基本的賦值運(yùn)算符,用來將一個(gè)表達(dá)式的值賦給另一個(gè)變量,支持連續(xù)賦值和多元賦值,示例代碼如程序段P4.6

所示。P4.6

基本賦值、連續(xù)賦值和多元賦值n1=

100f1=

47.54章運(yùn)算

符11s1=

"/python/"a=b=c

=

100 #

連續(xù)賦值x,y,z=1,2,

'a

string' #

多元賦值4.2.2

擴(kuò)展賦值運(yùn)算符擴(kuò)展后的賦值運(yùn)算符將使得賦值表達(dá)式的書寫更加優(yōu)雅和方便。但是,擴(kuò)展賦值運(yùn)算符只能針對(duì)已經(jīng)存在的變量賦值,因?yàn)橘x值過程中需要變量本身參與運(yùn)算,如果沒有提前定義變量,它的值就是未知的,無法參與運(yùn)算。Python3.8

中新增了一個(gè)賦值運(yùn)算符——海象運(yùn)算符“∶=”,該運(yùn)算符用于在表達(dá)式內(nèi)部為變量賦值,因其形似海象的眼睛和長牙而得此名。海象運(yùn)算符的用法示例代碼如程序段P4.7

所示。12P4.7

海象運(yùn)算符示例x=5sum=x+(y

:=10)print(sum)運(yùn)行代碼,輸出結(jié)果如下。15

4.3 比較運(yùn)算符比較運(yùn)算符又稱為關(guān)系運(yùn)算符,用于對(duì)常量、變量或表達(dá)式的結(jié)果進(jìn)行大小比較。如果這種比較是成立的,則返回

True(真);反之則返回

False(假)。表4-3

列出了Python

支持的比較運(yùn)算符及其功能描述與實(shí)例。4章運(yùn)算

符13表

4-3比較運(yùn)算符及其功能描述與實(shí)例運(yùn)算符功能描述實(shí)例(x=10,y=20)==等于——比較兩個(gè)對(duì)象是否相等x==y

返回False!=不等于——比較兩個(gè)對(duì)象是否不相等x!=y 返回True>大于——返回

x

是否大于yx>y

返回False<小于——返回

x

是否小于yx<y

返回True>=大于等于——返回

x

是否大于等于yx>=y

返回False<=小于等于——返回

x

是否小于等于yx<=y

返回True符號(hào)=和==是兩個(gè)不同的運(yùn)算符,=用來賦值,而==用來判斷兩邊的值是否相等。所有比較運(yùn)算符返回

1

表示真,返回

0

表示假。這分別與特殊的變量True

和False

等價(jià)。示例代碼如程序段P4.8

所示。14P4.8

比較運(yùn)算符x=10y=20print('x=10,y=20')print('x==y:',x==y)print('x!=y:',x!=y)print('x>y:',x>y)print('x<y:',x<y)print('x>=y:',x>=y)print('x<=y:',x<=y)運(yùn)行代碼,輸出結(jié)果如下。x==y:

Falsex!=y:

True4章運(yùn)算

符15x>y:

Falsex<y:Truex>=y:

Falsex<=y:

True

4.4 邏輯運(yùn)算符數(shù)學(xué)中我們學(xué)過邏輯運(yùn)算。例如,若p

為真命題,q

為假命題,那么“p與q”為假,“p

或q”為真,“非

q”為真。Python

中也有類似的邏輯運(yùn)算,表

4-4

列出了Python

支持的邏輯運(yùn)算符及其功能描述與實(shí)例。表

4-4 邏輯運(yùn)算符及其功能描述與實(shí)例運(yùn)算符功能描述實(shí)例(x=10,y=20)and邏輯與運(yùn)算,如果x

為False,那么x

and

y

返x

and

y

返回

20,為True16回

False,否則返回y

的計(jì)算值or邏輯或運(yùn)算,如果x

為非

0,那么x

or

y

返回x的計(jì)算值,否則返回y

的計(jì)算值x

or

y

返回

10,為Truenot邏輯非運(yùn)算,如果x

True,那么not

x

返回False。如果

x

False,那么

not

x

返回Truenot

x

返回False邏輯運(yùn)算符一般和比較運(yùn)算符結(jié)合使用。例如,14>6

and

45.6

>

90,因?yàn)?/p>

14>6

結(jié)果為

True,45.6>90

結(jié)果為False,所以整個(gè)表達(dá)式的結(jié)果為

False。示例代碼如程序段P4.9

所示。P4.9

邏輯運(yùn)算符與比較運(yùn)算符結(jié)合使用age

=

int(input("請(qǐng)輸入年齡:"))height

=

int(input("請(qǐng)輸入身高:"))if

age>=18

and

age<=30

and

height

>=170

and

height

<=

185

:4章運(yùn)算

符17print("恭喜,你符合報(bào)考飛行員的條件")else:print("抱歉,你不符合報(bào)考飛行員的條件")運(yùn)行代碼,輸入數(shù)據(jù),輸出結(jié)果如下。請(qǐng)輸入年齡:23請(qǐng)輸入身高:178恭喜,你符合報(bào)考飛行員的條件Python

邏輯運(yùn)算符可以用來操作任何類型的表達(dá)式,不管表達(dá)式是不是bool

類型;同時(shí),邏輯運(yùn)算的結(jié)果也不一定是bool

類型,它也可以是任意類型。示例代碼如程序段P4.10

所示。P4.10

數(shù)據(jù)類型的邏輯運(yùn)算print(100and

200)18print(45and

0)print(""or"/python/")print(18.5or

"/python/")運(yùn)行代碼,輸出結(jié)果如下。200 0 /python/

18.5由示例結(jié)果可知,and

和or

運(yùn)算符會(huì)將其中一個(gè)表達(dá)式的值作為最終結(jié)果,而不是將

True

或False

作為最終結(jié)果。在Python

中,and

和or

不一定會(huì)計(jì)算右邊表達(dá)式的值,有時(shí)只計(jì)算左邊表達(dá)式的值就能得到最終結(jié)果。and

運(yùn)算符執(zhí)行規(guī)則對(duì)于and

運(yùn)算符,當(dāng)兩邊的值都為真時(shí)最終結(jié)果才為真,但是只要其中有一個(gè)值為假,那么最終結(jié)果就是假,因此,Python

按照下面的規(guī)則執(zhí)行and運(yùn)算。4章運(yùn)算

符19(1)

如果左邊表達(dá)式的值為假,那么就不用計(jì)算右邊表達(dá)式的值了,因?yàn)椴还苡疫叡磉_(dá)式的值是什么,都不會(huì)影響最終結(jié)果,最終結(jié)果都是假,此時(shí)

and

會(huì)把左邊表達(dá)式的值作為最終結(jié)果。(2)

如果左邊表達(dá)式的值為真,那么最終值是不能確定的,and

會(huì)繼續(xù)計(jì)算右邊表達(dá)式的值,并將右邊表達(dá)式的值作為最終結(jié)果。2)

or

運(yùn)算符執(zhí)行規(guī)則對(duì)于or

運(yùn)算符,情況是類似的,兩邊的值都為假時(shí)最終結(jié)果才為假,只要其中有一個(gè)值為真,那么最終結(jié)果就是真,因此,Python

按照下面的規(guī)則執(zhí)行or

運(yùn)算。如果左邊表達(dá)式的值為真,那么就不用計(jì)算右邊表達(dá)式的值了,因?yàn)椴还苡疫叡磉_(dá)式的值是什么,都不會(huì)影響最終結(jié)果,最終結(jié)果都是真,此時(shí)or

會(huì)把左邊表達(dá)式的值作為最終結(jié)果。如果左邊表達(dá)式的值為假,那么最終值是不能確定的,or

會(huì)繼續(xù)計(jì)算20右邊表達(dá)式的值,并將右邊表達(dá)式的值作為最終結(jié)果。and

和or

運(yùn)算規(guī)則的示例代碼如程序段P4.11

所示。P4.11 and

和or

運(yùn)算規(guī)則url=

"/python/"print("----Falseandxxx-----")print(Falseandprint(url)

)print("----Trueand

xxx-----")print(Trueandprint(url))print("----Falseorxxx-----")print(Falseorprint(url))print("----Trueorxxx-----")print(Trueorprint(url)

)4章運(yùn)算

符21運(yùn)行代碼,輸出結(jié)果如下。----Falseand

xxx-----False----Trueandxxx-----

http://www.ahu.net/python/

None----Falseorxxx-----

http://www.ahu.net/python/

None----Trueor

xxx-----True上例的第

4

行代碼中,and

左邊的值為假,不需要再執(zhí)行右邊的表達(dá)式,22因此

print(url)

沒有任何輸出。第

6

行代碼中,and

左邊的值為真,還需要執(zhí)行右邊的表達(dá)式才能得到最終的結(jié)果,因此

print(url)

輸出了一個(gè)網(wǎng)址,同時(shí)

print()函數(shù)的返回值是None,True

and

None

表達(dá)式運(yùn)算結(jié)果是None,因此輸出None。第

8

和第

10

行代碼也是類似的。邏輯運(yùn)算符可以把多個(gè)條件按照邏輯進(jìn)行連接,變成更復(fù)雜的條件。

4.5 成員運(yùn)算符in

與not

in

是Python

中獨(dú)有的運(yùn)算符,稱為成員運(yùn)算符,用于判斷對(duì)象是否為某個(gè)集合的元素之一,返回的結(jié)果是布爾值

True

或False。表

4-5

列出了Python

支持的成員運(yùn)算符及其功能描述與實(shí)例。4章運(yùn)算

符23表

4-5成員運(yùn)算符及其功能描述與案例運(yùn)算符功能描述實(shí)例in在指定的序列中找到了值返回True,否則返回False2

in

[1,2,3] 返回True5

in

[1,2,3] 返回Falsenot

in在指定的序列中沒有找到值返回True否則返回

False,2

not

in

[1,2,3] 返回False5

not

in

[1,2,3] 返回True成員運(yùn)算符的用法示例如程序段P4.12

所示。P4.12 成員運(yùn)算符name

=

"小花"class_list

=

["小紅","小花","小敏"]print(namein

class_list)print(namenotin

class_list)24運(yùn)行代碼,輸出結(jié)果如下。TrueFalse

4.6 身份運(yùn)算符身份運(yùn)算符是Python

用來判斷兩個(gè)對(duì)象的存儲(chǔ)單元是否相同的運(yùn)算符號(hào),身份運(yùn)算符包括is

和is

not,返回的結(jié)果是True

或False。表4-6

列出了Python支持的身份運(yùn)算符及其功能描述與實(shí)例。表

4-6 身份運(yùn)算符及其功能描述與實(shí)例運(yùn)算符功能描述實(shí)例(x=[1,2],y=[1,2]

)is判斷兩個(gè)變量是不是引用自一個(gè)對(duì)象,即內(nèi)存地址是否一致。若是則返回

True,否則返回x

is

y,返回False4章運(yùn)算

符25Falseis

not判斷兩個(gè)變量是不是引用自不同對(duì)象,即內(nèi)存地址是否不一致。若是則返回True,否則返回Falsex

is

not

y,返回True注意,is

==

的區(qū)別如下:is

用于判斷兩個(gè)變量引用的對(duì)象是否為同一個(gè),==

用于判斷引用變量的值是否相等。示例代碼如程序段P4.13

所示。P4.13 is

與==的運(yùn)算區(qū)別x=[1,2,

3]y=[1,2,

3]z=

xprint("x

is

y:

",

x

is

y)print("z

is

x:

",

z

is

x)26print("x==y:",x==

y)print("z

==

x:

",

z

==

x)運(yùn)行代碼,輸出結(jié)果如下。xis

y:zisx:x==

y:z==

x:FalseTrueTrueTrue

4.7 位運(yùn)算符Python

位運(yùn)算按照數(shù)據(jù)在內(nèi)存中的二進(jìn)制位(bit)進(jìn)行運(yùn)算,表

4-7

列出了Python

支持的位運(yùn)算符及其功能描述與實(shí)例。4章運(yùn)算

符27表

4-7位運(yùn)算符及其功能描述與實(shí)例運(yùn)算符功能描述實(shí)例x=0011

1100(60)y=0000

1101(13)&按位與運(yùn)算符:參與運(yùn)算的兩個(gè)值,如果兩個(gè)相應(yīng)位都為

1,則該位的結(jié)果為

1,否則為

0(x

&

y)

輸出結(jié)果

12二進(jìn)制:0000

1100|按位或運(yùn)算符:只要對(duì)應(yīng)的兩個(gè)二進(jìn)位有一個(gè)為

1,結(jié)果位就為

1(x

|

y)

輸出結(jié)果

61二進(jìn)制:0011

1101^按位異或運(yùn)算符:當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1(x

^

y)

輸出結(jié)果

49二進(jìn)制:0011

0001~按位取反運(yùn)算符:對(duì)數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把1

變?yōu)?/p>

0,把

0

變?yōu)?/p>

1(~x

)

輸出結(jié)果-61二進(jìn)制:1100

0011,有符號(hào)二進(jìn)制數(shù)的補(bǔ)碼28形式<<左移動(dòng)運(yùn)算符:把<<左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由<<右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)

0x

<<

2

輸出結(jié)果

240二進(jìn)制:1111

0000>>右移動(dòng)運(yùn)算符:把>>左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,由>>右邊的數(shù)指定移動(dòng)的位數(shù)x

>>

2

輸出結(jié)果

15二進(jìn)制:0000

1111Python

位運(yùn)算一般用于底層開發(fā)(算法設(shè)計(jì)、驅(qū)動(dòng)、圖像處理、單片機(jī)等),在應(yīng)用層開發(fā)(Web

開發(fā)、Linux

運(yùn)維等)中并不常見。不關(guān)注底層開發(fā)的讀者先了解一下即可,待以后需要的時(shí)候再深入學(xué)習(xí)。

4.8 集合運(yùn)算符在Python

中,集合被視為數(shù)學(xué)意義上的無序且無重復(fù)元素的集合,因此,4章運(yùn)算

符29兩個(gè)Python

集合可以做數(shù)學(xué)意義上的交集、并集等運(yùn)算操作。表

4-8

列出了Python

支持的集合運(yùn)算符及其功能描述與實(shí)例。表

4-8 集合運(yùn)算符及其功能描述與實(shí)例運(yùn)算符功能描述實(shí)例A={1,2,3,4,5}B={1,3,5,7,9,11}&交集,交集符號(hào)有一個(gè)等價(jià)的方法:intersection()A&B={1,3,5}|并集,并集符號(hào)有一個(gè)等價(jià)的方法:union()A|B={1,2,3,4,5,7,9,11}-差集,差集符號(hào)有一個(gè)等價(jià)的方法:di?erence()A-B={2,4}對(duì)稱差分,新集合的元素只能屬于集合A

或集合B,^不能同時(shí)屬于兩個(gè)集合。對(duì)稱差分符號(hào)有一個(gè)等價(jià)的A^B={2,4,7,9,11}方法:symmetric_di?erence()30運(yùn)算符功能描述實(shí)例A={1,2,3,4,5}B={1,3,5,7,9,11}&=兩個(gè)集合的交集A&=B,A={1,3,5}|=為集合添加一個(gè)或多個(gè)成員,與update

方法等價(jià)A|B ,A={1,2,3,4,5,7,9,11}-=刪除集合中的一個(gè)或多個(gè)成員A-=B,A={2,4}^=更新集合中的元素,使得其中的元素只屬于原集合s或僅是另一個(gè)集合

s1

中的成員。此運(yùn)算符與方法symmetric_di?erence_update()等價(jià)A^=B,A={2,4,7,9,11}4章運(yùn)算

符314.9

三目運(yùn)算符Python

是一種極簡主義的編程語言,使用已有的

if、else

關(guān)鍵字來實(shí)現(xiàn)三目運(yùn)算符的功能。三目運(yùn)算符也稱為三元運(yùn)算符(條件運(yùn)算符)。Python

中三目運(yùn)算符的語法格式如下。res=exp1if

conditionelseexp2上式中,condition

是判斷條件,exp1

和exp2

是兩個(gè)表達(dá)式。當(dāng)條件condition

為真時(shí),res

=

表達(dá)式exp1

的運(yùn)算結(jié)果。當(dāng)條件condition

為假時(shí),res

=

表達(dá)式exp2

的運(yùn)算結(jié)果。示例代碼如程序段P4.14

所示。P4.14

三目運(yùn)算x

=

int(

input("輸入數(shù)字x:")

)32y

=

int(

input("輸入數(shù)字y:")

)print(x+y

if

x>y else

x-y)運(yùn)行代碼,輸入數(shù)字,輸出結(jié)果如下。輸入數(shù)字x:5輸入數(shù)字y:49再運(yùn)行代碼,輸入數(shù)字,輸出結(jié)果如下。輸入數(shù)字x:5輸入數(shù)字y:8-3Python

三目運(yùn)算符也可以嵌套使用,嵌套三目運(yùn)算符的語法格式如下。res

=

a

if

a>b

else

(

c

if

c>d

else

d

)4章運(yùn)算

符33當(dāng)條件a>b

為真時(shí),res

=

a。當(dāng)條件a>b

為假時(shí),繼續(xù)判斷條件

c>d,若為真則

res

=

c,若為假則

res=

d。示例代碼如程序段P4.15

所示。P4.15

嵌套三目運(yùn)算a

=

int(

input("輸入數(shù)字a:")

)b

=

int(

input("輸入數(shù)字b:")

)print("a

大于b")

if

a>b

else

(

print("a

小于b")

if

a<b

else

print("a

等于b")

)運(yùn)行代碼,輸入數(shù)字,輸出結(jié)果如下。輸入數(shù)字a:3輸入數(shù)字b:1a

大于b34再運(yùn)行代碼,輸入數(shù)字,輸出結(jié)果如下。輸入數(shù)字a:3輸入數(shù)字b:6a

小于b再運(yùn)行代碼,輸入數(shù)字,輸出結(jié)果如下。輸入數(shù)字a:3輸入數(shù)字b:3a

等于b

4.10 運(yùn)算符優(yōu)先級(jí)Python

支持使用多個(gè)不同的運(yùn)算符連接簡單表達(dá)式實(shí)現(xiàn)相對(duì)復(fù)雜的功能,為了避免含有多個(gè)運(yùn)算符的表達(dá)式出現(xiàn)歧義,Python

為每種運(yùn)算符都設(shè)定了優(yōu)4章運(yùn)算

符35先級(jí)。Python

中運(yùn)算符按優(yōu)先級(jí)從高到低排序,如表

4-9

所示。表

4-9 運(yùn)算符優(yōu)先級(jí)運(yùn)算符描述**冪*、/、%、//乘、除、取模、整除+、-加法、減法>>、<<按位右移、按位左移&按位與^、|按位異或、按位或==、!=、>=、>、<=、<比較運(yùn)算符is、is

not身份運(yùn)算符in、not

in成員運(yùn)算符36not、and、or邏輯運(yùn)算符=賦值運(yùn)算符需要說明的是,如果表達(dá)式中的運(yùn)算符優(yōu)先級(jí)相同,則按從左向右的順序執(zhí)行;如果表達(dá)式中包含括號(hào),那么解釋器會(huì)先執(zhí)行括號(hào)中的子表達(dá)式。

4.11

計(jì)算思維運(yùn)算符表示對(duì)數(shù)據(jù)進(jìn)行加工處理的方法。通過運(yùn)算符的運(yùn)算能得到確定結(jié)果的問題,都可以通過計(jì)算機(jī)強(qiáng)大算力的計(jì)算得到解決。若要利用計(jì)算機(jī)算力解決問題,就必須要用計(jì)算機(jī)能理解的符號(hào)或模型把問題描述出來。如何描述問題?需要利用我們?nèi)祟惔竽X的復(fù)雜思維活動(dòng)來描述,這種思維活動(dòng)稱為計(jì)算思維。計(jì)算思維是建立在算力基礎(chǔ)上的一種思維方式。在數(shù)字時(shí)代,算力已經(jīng)成為基礎(chǔ)生產(chǎn)力,在算力基礎(chǔ)上解決實(shí)際問題是較為普遍的事情,因此計(jì)算思維是人人都需要具備的一種思維能力。4章運(yùn)算

符37計(jì)算思維(computational

thinking)是周以真(JeannetteMarie

Wing)教授于

2006

年首次提出的概念。計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計(jì)、人類行為理解等涵蓋計(jì)算機(jī)科學(xué)廣度的一系列思維活動(dòng)。計(jì)算思維是與形式化問題及其解決方案相關(guān)的思維過程,其解決問題的表現(xiàn)形式應(yīng)該能有效地被信息處理代理執(zhí)行。計(jì)算思維建立在計(jì)算過程的能力和限制之上,由人與機(jī)器執(zhí)行。計(jì)算方法和模型使人們敢于去處理那些原本無法由任何個(gè)人獨(dú)自完成的問題求解和系統(tǒng)設(shè)計(jì)。計(jì)算思維對(duì)其他學(xué)科的研究產(chǎn)生了深刻的影響。例如,計(jì)算生物學(xué)正在改變著生物學(xué)家的思考方式;計(jì)算博弈理論正在改變著經(jīng)濟(jì)學(xué)家的思考方式;納米計(jì)算正在改變著化學(xué)家的思考方式;量子計(jì)算正在改變著物理學(xué)家的思考方式。計(jì)算思維也滲透到了普通人的生活之中,掌握計(jì)算思維已經(jīng)成為現(xiàn)代人應(yīng)具備的基本技能。計(jì)算思維已經(jīng)成為現(xiàn)代人解決問題的基本思維方法,并且已成為各專業(yè)學(xué)生都應(yīng)掌握的思維方式。掌握計(jì)算思維,有助于人們更好地從事38醫(yī)學(xué)、法律、商業(yè)、政治工作,以及其他任何類型的科學(xué)和工程,甚至藝術(shù)工作。計(jì)算思維過程計(jì)算思維是一種解決問題的方式,它并不等同于計(jì)算機(jī)科學(xué)。計(jì)算思維是一種遞歸思維,通過分解、識(shí)別、抽象、算法不斷地遞歸迭代思維活動(dòng),把要解決的問題形式化、符號(hào)化。計(jì)算思維包括問題分解、模式識(shí)別、歸納抽象、算法設(shè)計(jì)

4

部分內(nèi)容。問題分解當(dāng)我們面臨一個(gè)復(fù)雜的事物時(shí),一般很難直接處理,此時(shí)可以先將其分解成許多小事物,逐個(gè)進(jìn)行處理,小事物處理完后,復(fù)雜的事物也就處理好了。因此,計(jì)算思維的第一步就是把實(shí)際領(lǐng)域、項(xiàng)目、對(duì)象、過程或問題等事物分4章運(yùn)算

符39解成更小且易于識(shí)別的部分,分解出事物的組成要素及結(jié)構(gòu)關(guān)系。實(shí)踐中,這往往需要多次反復(fù)迭代才能完成。例如,當(dāng)一臺(tái)計(jì)算機(jī)出現(xiàn)故障時(shí),可以將計(jì)算機(jī)逐步分解成較小的組成部件,再對(duì)各個(gè)部分進(jìn)行檢查。又如,當(dāng)程序員在調(diào)試程序過程中遇到問題時(shí),通常會(huì)考慮各種可能性,然后把程序分解成各個(gè)組成部分,分別進(jìn)行問題排查。事實(shí)上,問題分解已經(jīng)成為人類的基本思維模式。2.

模式識(shí)別將一個(gè)復(fù)雜的事物分解之后,就要去識(shí)別、發(fā)現(xiàn)小事物的相似之處與共同的屬性,以及發(fā)展變化趨勢(shì)和規(guī)律,這些屬性、趨勢(shì)和規(guī)律稱為模式。模式識(shí)別就是在眾多事物中找出特征或規(guī)則,并對(duì)事物進(jìn)行識(shí)別與分類。在解決問題的過程中找到模式是非常重要的。模式可以讓問題簡單化。例如,程序員在調(diào)40試程序時(shí),根據(jù)錯(cuò)誤的特征,依據(jù)大腦中存儲(chǔ)的經(jīng)驗(yàn),常??梢宰R(shí)別出錯(cuò)誤的模式,找到程序出錯(cuò)的原因。歸納抽象歸納抽象的目的是忽略次要特征,將注意力集中在重要特征上,以發(fā)現(xiàn)、識(shí)別模式背后的一般原理和本質(zhì)因素,構(gòu)建解決問題的限制及規(guī)則,并進(jìn)行符號(hào)化、形式化描述。例如,程序員在識(shí)別出程序錯(cuò)誤的模式后,就可以抽象描述這種錯(cuò)誤模式,并對(duì)其進(jìn)行形式化、符號(hào)化定義。這樣,當(dāng)下次出現(xiàn)類似的錯(cuò)誤時(shí),計(jì)算機(jī)就可以自動(dòng)檢測(cè)出來。Python

中的異常自動(dòng)報(bào)錯(cuò)就是為了實(shí)現(xiàn)這樣的設(shè)計(jì)。算法設(shè)計(jì)算法就是計(jì)算機(jī)運(yùn)算的流程控制,它是人類利用計(jì)算機(jī)解決問題的基本方法,是把問題描述轉(zhuǎn)換為計(jì)算機(jī)程序的基礎(chǔ)。算法是一種選擇,是一種計(jì)劃,4章運(yùn)算

符41每一個(gè)指示與步驟都是精心計(jì)劃過的,這個(gè)計(jì)劃中包含解決問題的每一個(gè)狀態(tài)。例如,第

3

章的“剪刀、石頭、布”游戲,通過問題分解、模式識(shí)別、歸納抽象

3

個(gè)步驟將問題描述形式化、符號(hào)化,便可進(jìn)行算法設(shè)計(jì)。算法設(shè)計(jì)的條件及功能描述,如表

4-10

所示。表

4-10 算法設(shè)計(jì)的條件及功能描述條件功能描述輸入零個(gè)或多個(gè)輸入數(shù)據(jù),輸入數(shù)據(jù)必須有清楚的描述或定義輸出至少要有一個(gè)輸出結(jié)果,不可以沒有輸出結(jié)果確定性每個(gè)語句或步驟必須是明確的有限性在有限步驟后一定會(huì)結(jié)束,不會(huì)產(chǎn)生無窮回路有效性步驟清楚可行,可以通過計(jì)算求出答案42算法可以用一般文字(如中文、英文和數(shù)字等)進(jìn)行描述,也可以用計(jì)算機(jī)高級(jí)語言(Python、C\C++等)或虛擬語言(Pascal、Spark

等)進(jìn)行描述。人機(jī)大戰(zhàn)猜拳游戲計(jì)算思維分析對(duì)第

3

章的人機(jī)大戰(zhàn)猜拳游戲進(jìn)行計(jì)算思維分析的過程如下。問題分解人機(jī)大戰(zhàn)猜拳游戲要解決的是輸贏問題,可將問題分為三部

溫馨提示

  • 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)論