日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第五章:条件、循环以及其他语句(上)

發(fā)布時(shí)間:2025/4/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第五章:条件、循环以及其他语句(上) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第五章 條件、循環(huán)以及其他語(yǔ)句

?

? ? 5.1 再談print和import

? ? ? 隨著我們對(duì)于Python的認(rèn)知越來(lái)越多,很多我們以前不清楚的東西慢慢都需要了解,下面在談?wù)刾rint和import等我們所不知道的一些地方。原來(lái)的print在python2.7中是一個(gè)語(yǔ)句,但python3.5中,print由一個(gè)語(yǔ)句,轉(zhuǎn)變成一個(gè)函數(shù),注意,這個(gè)轉(zhuǎn)變很重要。可能比以前有用很多,而且還可能簡(jiǎn)潔很多。


?

提示? ??在這里,我們談及了使用模板logging去寫入日志比用print有用,但具體什么用,大家有個(gè)大致了解,以后在學(xué)習(xí)中遇到去處理即可。


? ? ? ? ? ? 5.1.1? 打印多個(gè)參數(shù)

? ? ? ? ? ? ?print可用于打印一個(gè)表達(dá)式,記住有兩種情況的存在,如果你在里面輸入的是字符串,就直接打印出來(lái)字符串,第二種情況就是把你輸入的非字符串直接轉(zhuǎn)換成字符串進(jìn)行打印。而且,你需要注意的地方是,你可以打印多個(gè)表達(dá)式,條件是用逗號(hào)進(jìn)行分隔它們:

print('age:',42)

?

? ? ? ? ? ? 看看出來(lái)的結(jié)果,就能發(fā)現(xiàn),在參數(shù)之間插入了一個(gè)空格字符。

age: 42

?

? ? ? ? ? ? 在此,作者提出我們需要合并文本和變量值的時(shí)候,而又不想使用字符串格式設(shè)置功能的時(shí)候,這很有幫助。對(duì)于這點(diǎn)我的理解就是作者已經(jīng)脫離了原本的print概念,而是提出了關(guān)于合并文本和變量值的一種做法,就是中間加入一個(gè)空格,但具體用在什么地方,我覺(jué)得還有待進(jìn)一步的了解。

? ? ? ? ? ? 在下面作者又提出了一些有用的技巧,我現(xiàn)在為大家一一的介紹:

? ? ? ? ? ? 首先,我來(lái)介紹第一種的技巧:

name='Gumby' salutation='Mr.' greeting='Hello,' print(greeting,salutation,name)

?

? ? ? ? ? ? 從而,會(huì)得到這樣的結(jié)果:

Hello, Mr. Gumby

?

? ? ? ? ? ? 作者在這里就進(jìn)行了思考,如果變量greeting不包含逗號(hào),那么如何處理,具體如下:

print(greeting+',',salutation,name)

?

? ? ? ? ? ?這樣的結(jié)果就能變成魚(yú)上述答案一直的結(jié)果。

? ? ? ? ? ?其次,就是第二種情況,如果我需要在每個(gè)我輸入的表達(dá)式之間自己去添加分隔符,注意前面我們看看作者在上面的時(shí)候是干什么,是直接默認(rèn)為空格,而現(xiàn)在我們有辦法通過(guò)自己的需求進(jìn)行設(shè)置:

print('I','wish','to','register','a','complaint',sep='_')

?

? ? ? ? ? 從而,得到答案即為:

I_wish_to_register_a_complaint

?

? ? ? ? ? 5.1.2? ?導(dǎo)入時(shí)重命名? ? ?

?

? ? ? ? ? 從?模板導(dǎo)入,通常有四種情況,通常使用:

? ? ? ? ? import somemodule

? ? ? ? ? 或使用

? ? ? ? ? from somemodule import somefunctuon

? ? ? ? ?或

? ? ? ? ?import? somemodule import somefunction,anotherfunction,yetanotherfunction

? ? ? ? ?或

? ? ? ? ?from somemodule import *

? ? ? ? ?導(dǎo)入模板里面所有的東西的時(shí)候,用的是最后一個(gè)方式。如果你需要使用兩個(gè)模板,而且他們都包含例如函數(shù)open之類的同名函數(shù),這個(gè)時(shí)候肯定會(huì)出問(wèn)題,那么此處你應(yīng)該使用第一種方式去處理,當(dāng)然你在具體使用的時(shí)候也需要注意要用的方法與方法:

? ? ? ? ?module1.open(...)

? ? ? ? ?module2.open(...)

? ? ? ? ?作者在這里也提出了一些其他的方法:在語(yǔ)句末尾添加as子句并指定別名。下面是一個(gè)導(dǎo)入整個(gè)模塊并給它指定別名的例子:

import math as foobar print(foobar.sqrt(4))

?

? ? ? ? ? 從而,得到答案就是:

2.0

?

? ? ? ? ?而讓偶感覺(jué)舒服的一點(diǎn)就是,作者在函數(shù)部分的處理,也能像剛剛上面的例子一樣,命名別名,然后,導(dǎo)入:

? ? ? ? ? ?from module1 import open as open1

? ? ? ? ? ?from module2 import open as open2

? ? 5.2 賦值魔法

? ? ? 這里面也有很多我們需要去處理的細(xì)節(jié)。

? ? ? ? 5.2.1序列解包

? ? ? ? 賦值語(yǔ)句常常是給變量和數(shù)據(jù)結(jié)構(gòu)的一部分(如列表的元素和切片,或者字典項(xiàng))賦值,還有其他的賦值,例如,可同時(shí)給多個(gè)變量賦值,這個(gè)是以前沒(méi)有的。當(dāng)然,也可利用這種方式進(jìn)行交換多個(gè)變量的值,這個(gè)部分總感覺(jué)容易用錯(cuò),盡量不要用:

x ,y ,z=1,2,3 print(x,y,z) x,y=y,x print(x,y,z)

?

? ? ? ? 從而,我們來(lái)看看它的輸出結(jié)果:

1 2 3 2 1 3

? ? ? ? ?這里面其實(shí)就是在運(yùn)用數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計(jì)的一些數(shù)據(jù)結(jié)構(gòu),文章中把這種操作稱為序列解包(或可迭代對(duì)象解包):將一個(gè)序列(或其他可迭代對(duì)象)解包,并將得到的值存儲(chǔ)到一系列變量中。(意思就是可迭代對(duì)象(不清楚就去查看數(shù)據(jù)結(jié)構(gòu)或者算法設(shè)計(jì))或者序列分配給變量,說(shuō)白了,就是一個(gè)個(gè)讀取,然后分配給變量)下面作者還舉了一個(gè)具體的例子:

values=1,2,3 print(values) x,y,z=values print(x)

?

? ? ? ? 這里可以看出來(lái)得到的解包最后給了x,y,z三個(gè)變量,并最后輸出了x,這個(gè)就是典型的序列解包,當(dāng)然,你需要注意的一點(diǎn)就是,變量的數(shù)量要和你解包的數(shù)值一一對(duì)應(yīng),否則內(nèi)容就會(huì)報(bào)錯(cuò)。而且,注意到這里的代碼的第一行,直接給一個(gè)變量賦了三個(gè)值,結(jié)果就變成了一個(gè)元組;當(dāng)然作者在這里提出來(lái)的在使用元組(或其他序列或可迭代對(duì)象)的函數(shù)或方法的時(shí)候很有用,具體怎么用,還是有待進(jìn)一步的考究的。本文在后面也提出了在字典的一種情況,就是字典隨機(jī)獲取(或刪除)一個(gè)鍵-值對(duì),可使用方法popitem,它隨機(jī)獲取一個(gè)鍵-值對(duì)然后刪除并且會(huì)以元組的方式進(jìn)行返回。所以能進(jìn)行上述的操作,但不能用pop這個(gè)方法,因?yàn)?#xff0c;不指定的時(shí)候刪除最后一個(gè),指定的時(shí)候刪除對(duì)應(yīng)的位置。但不會(huì)返回任何東西。

scoundre1={'name':'Robin','girlfriend':'Marion'} key,values=scoundre1.popitem() print(key,values)

? ? ? ?? 對(duì)應(yīng)的結(jié)果如下:

girlfriend Marion

?

? ? ? ? 這里作者也提醒了我們,要解包的序列包含的元素個(gè)數(shù)必須與你等號(hào)左邊列出的目標(biāo)個(gè)數(shù)相同,否則Python將引發(fā)異常。舉個(gè)例子:

x,y,z=1,2 x,y,z=1,2,3,4

?

? ? ? ? 兩種情況報(bào)錯(cuò)的內(nèi)容大致都是一致的:

x,y,z=1,2 ValueError: not enough values to unpack (expected 3, got 2) x,y,z=1,2,3,4 ValueError: too many values to unpack (expected 3)

?

? ? ? ? 注意,為了彌補(bǔ)上述的不足,這里提出了一個(gè)很有用的解決方法,就是使用星號(hào)運(yùn)算符(*) 來(lái)搜集多余的值,這樣無(wú)需保證值得數(shù)量和變量的數(shù)量是一樣多的,下面具體舉個(gè)例子可以看出:

a,b, *rest=[1,2,3,4] print(a,b,rest)

?

? ? ? ?從而,我們就得到這樣的答案:

1 2 [3, 4]

? ? ? ? 當(dāng)然,帶*的位置我們也能做出適當(dāng)?shù)恼{(diào)整,系統(tǒng)也會(huì)做出調(diào)整,如下一個(gè)示例:

name='Albus Percival Wulfric Brian Dumbledore' first,*middle,last=name.split() print(first,middle,last)

?

? ? ? ?從而得到合適的答案:

Albus ['Percival', 'Wulfric', 'Brian'] Dumbledore

? ? ? ? 賦值語(yǔ)句的右側(cè)可以是任何類型的序列,但帶星號(hào)的變量最終包含的總是一個(gè)列表。在變量和值相等的情況下不會(huì)改變這種情況:

name='Albus Percival Wulfric ' first,*middle,last=name.split() print(first,middle,last)

? ? ? ?當(dāng)然,結(jié)果與上述是一致的:

Albus ['Percival'] Wulfric

?

? ? ? ? 5.2.2? 鏈?zhǔn)劫x值

? ? ? ? 鏈?zhǔn)劫x值是一種快捷方式,用于將多個(gè)變量關(guān)聯(lián)到同一個(gè)值,但只涉及到一個(gè)值,這很重要。

? ? ? ? x=y=somefunction()

? ? ? ? 與上述代碼一致的代碼:

? ? ? ? y=somefunction()

? ? ? ? x=y

? ? ? ? 但與下面不等價(jià):

? ? ? ? x=somefunction()

? ? ? ? y=somefunction()

? ? ? ? 5.2.3 增強(qiáng)賦值

? ? ? ? 其實(shí)在C/C++里面也很常見(jiàn),x=x+1改變?yōu)閤+=1,這個(gè)語(yǔ)句很常見(jiàn),就叫做增強(qiáng)賦值。適用于所有的標(biāo)準(zhǔn)運(yùn)算符,如*、/、%等。

? ? ? ? 增強(qiáng)賦值也可適用于其他數(shù)據(jù)類型(只要在雙目運(yùn)算符可以做到的這里都能做到,什么是雙目,比如++等)

fnord='foo' fnord+='bar' print(fnord) fnord*=2 print(fnord)

?

? ? ? ?從而,有下面的結(jié)果:

foobar foobarfoobar

?

? ? 5.3? 代碼塊:縮進(jìn)的樂(lè)趣

? ? ?代碼塊不是語(yǔ)句,但你要理解這個(gè)內(nèi)容,下面的東西才能講下去:

? ? 代碼塊是一組語(yǔ)句的組合,可滿足條件時(shí)執(zhí)行(if)的語(yǔ)句、可執(zhí)行多次的(循環(huán)語(yǔ)句),等等。代碼塊通過(guò)縮進(jìn)(也就是加空格)來(lái)創(chuàng)建。說(shuō)白了,C/C++等語(yǔ)言原來(lái)都是有括號(hào){ }來(lái)保證其里面的內(nèi)容,現(xiàn)在只是沒(méi)有了{(lán) },取而代之的縮進(jìn)而已,記住每級(jí)縮進(jìn)4個(gè)空格就可以了。具體,后面看看你就知道怎么用,在這不在贅述。

?

轉(zhuǎn)載于:https://www.cnblogs.com/liuxinkai94/p/10127375.html

總結(jié)

以上是生活随笔為你收集整理的第五章:条件、循环以及其他语句(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。