您好,登錄后才能下訂單哦!
??print函數(shù)相信讀者一定對它不陌生,因為在前面的章節(jié),幾乎每個例子都使用了print函數(shù),這個函數(shù)的功能就是在控制臺輸出文本。不過print在輸出文本時還可以進(jìn)行一些設(shè)置,以及輸出多參數(shù)字符串。
??如果為print函數(shù)傳入多個參數(shù)值,那么print函數(shù)會將所有的參數(shù)值首尾相接輸出。
# 輸出結(jié)果:a b c d e
print("a","b","c","d","e");
??我們可以看到,上面的這行代碼輸出了a到e,共5個字母。在Python控制臺中輸出了“a b c d e”。很明顯是將這5個字符首尾相接輸出了。不過這些字母之間用空格分隔,這是print函數(shù)默認(rèn)的分隔符,用于分隔輸出的多個參數(shù)值,這個默認(rèn)設(shè)置是非常有用的,例如,執(zhí)行下面的代碼,會在等號(=)后面加一個空格。
print("name =", "Bill")
print("age =", 30)
輸出結(jié)果如下:
name = Bill
age = 30
??其中等號(=)前面的空格是第1個參數(shù)值包含的。
??print函數(shù)會為除了第1個參數(shù)值以外的其它參數(shù)值前面添加一個空格,這樣做,在需要用空格分隔的場景下,就不需要在每一個參數(shù)值前面添加空格了。
??不過這種默認(rèn)設(shè)置有利有弊,在不需要用空格分隔時,print函數(shù)仍然會添加空格。例如,要輸出字符串“Apple,Orange,Banana”。其中Apple、Orange和Banana之間用逗號(,)分隔,逗號(,)與英文單詞之間沒有空格。如果按前面的做法,會有如下的代碼輸出這行字符串。
print("Apple",",", "Orange",",","Banana")
輸出的結(jié)果如下:
Apple , Orange , Banana
print("Apple",",", "Orange",",","Banana")
??很明顯,逗號(,)前后都有空格。當(dāng)然,可以將逗號(,)與前面的英文單詞合并,但逗號(,)與后面的英文單詞之間仍然會有空格。
print("Apple",",", "Orange",",","Banana")
解決這個問題的方法很多,例如,可以用傳統(tǒng)的字符串相加的方式輸出字符串“Apple,Orange,Banana”。
print("Apple" + "," + "Orange" + "," + "Banana")
??現(xiàn)在我們要用print函數(shù)特有的方法解決這個問題,就是修改默認(rèn)的多參數(shù)值分隔符。在print函數(shù)最后添加“sep=","”,就可以將分隔符從空格改成逗號(,)。現(xiàn)在可以直接使用下面的代碼輸出字符串“Apple,Orange,Banana”。
print("Apple", "Orange","Banana", sep=",")
輸出結(jié)果。
Apple,Orange,Banana
??print函數(shù)輸出字符串時,默認(rèn)會在字符串結(jié)尾添加換行符(\n),這樣每次調(diào)用print函數(shù)輸出字符串,都會另起一行。不過有時我們希望調(diào)用多次print函數(shù)都在同一行輸出,這時我們可以在print函數(shù)最后加上“end=" "”,讓最后一個輸出字符串結(jié)尾符變成空格,而不是原來的“\n”,當(dāng)然,也可以將結(jié)尾符設(shè)成長度為0的字符串,這樣多次使用print函數(shù)輸出的結(jié)果就會首尾相接了,中間沒有任何分隔符。
print("a",end="");
print("b",end="");
print("c");
輸出結(jié)果:abc
??下面的例子演示了print函數(shù)輸出多參數(shù)值,修改默認(rèn)多參數(shù)值分隔符,以及修改輸出字符串結(jié)尾字符的方法。
# 輸出用空格分隔的多參數(shù)值
print("name =", "Bill")
# 輸出用空格分隔的多參數(shù)值
print("age =", 30)
# 使用加號(+)連接字符串
print("Apple" + "," + "Orange" + "," + "Banana")
# 修改多參數(shù)值分隔符為逗號(,),然后輸出多參數(shù)值
print("Apple", "Orange","Banana", sep=",")
# 修改多參數(shù)值分隔符為“&”,然后輸出多參數(shù)值
print("Can","you","tell","me", "how", "to", "get", "to","the","nearest", "tube", "station", sep="&")
# 修改輸出字符串結(jié)尾符為空格,這樣下一次調(diào)用print函數(shù),就會中同一行輸出內(nèi)容了
# 運行結(jié)果:Hello world
print("Hello", end=" ")
print("world")
# 修改輸出字符串結(jié)尾符為長度為0的字符串,這樣下一次調(diào)用print函數(shù),輸出的內(nèi)容不僅會在同一行,
# 而且會首尾相接,運行結(jié)果:abc
print("a",end="");
print("b",end="");
print("c");
程序運行結(jié)果如下圖所示。
??在很多讀者看來,賦值操作是再簡單不過了,我們在前面的章節(jié)也多次使用了賦值操作。不過Python語言中的賦值操作要有趣的多。例如,可以同時將多個值賦給多個變量。
>>> x,y,z = 1,2,3
>>> print(x,y,z)
1 2 3
??在上面的代碼中,將1,2,3分別賦給了x,y,z三個變量,并輸出這3個變量的值。使用Python語言中的這個特性可以很容易實現(xiàn)兩個變量中值的交換。
>>> x,y = 20,30
>>> x,y = y,x
>>> print(x,y)
30 20
??這種同時將多個值賦給多個變量的操作,等號(=)右側(cè)的值與左側(cè)的變量個數(shù)必須相等,否則會拋出異常。
>>> x,y,z = 1,2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 3, got 2)
>>> x,y = 1,2,3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
??Python語言的這種特性稱為序列解包(Sequence Unpacking),其實任何一個可迭代(Iterable)的對象都支持這一特性,關(guān)于迭代對象(列表、集合等)的詳細(xì)信息會在后面的章節(jié)介紹。
??Python語言還支持鏈?zhǔn)劫x值(Chained Assignments)和增量賦值(Augmented Assignments),鏈?zhǔn)劫x值是指將同一個值連續(xù)賦給多個變量。
x = y = 20
??增量賦值是指將變量自身增加或減?。ㄘ?fù)增量)指定值的表達(dá)式的簡化形式。例如,x = x + 2,如果用增量賦值表達(dá)式,可以寫成x += 2,也就是將等號(=)右側(cè)的x省略,并將加號(+)放到等號左側(cè)。
其實前面介紹的二元運算符都支持增量賦值,例如,x = x 20可以寫成x = 20,x = x % 3可以寫成x %= 3。
下面的例子演示了序列解包、鏈?zhǔn)劫x值和增量賦值的使用方法。
x,y,z = 1,2,3 # 使用序列解包方式進(jìn)行賦值
print(x,y,z)
x,y = y,x # 利用序列解包交換x和y的值
print(x,y)
# x,y,z = 1,2 # 拋出異常
# x,y = 1,2,3 # 拋出異常
x = y = 20 # 使用鏈?zhǔn)劫x值設(shè)置x和y
print(x,y)
x *= 2 # 增量賦值
x %= 3 # 增量賦值
print(x)
程序運行結(jié)果如下圖所示。
《Python從菜鳥到高手》開始轉(zhuǎn)載了,敬請關(guān)注
??代碼塊并非一種語句,而是在學(xué)習(xí)條件和循環(huán)語句之前必須要掌握的知識。
??代碼塊是在條件為真(true)時執(zhí)行的一組語句,在代碼前放置空格來縮進(jìn)語句即可創(chuàng)建代碼塊。
??注意:使用tab字符也可以縮進(jìn)語句形成代碼塊。Python將一個tab字符解釋為到下一個tab字符位置的移動,而一個tab字符為8個空格,不過Python標(biāo)準(zhǔn)推薦使用空格縮進(jìn)的方式創(chuàng)建代碼塊,建議使用4個空格縮進(jìn)的方式創(chuàng)建代碼塊。
??代碼塊的每行語句應(yīng)該縮進(jìn)同樣的量。下面的偽代碼(并非真正的Python代碼)展示了如何用縮進(jìn)的方式創(chuàng)建代碼塊。
This is a code line
This is another code line:
This is a block
continuing the same block
the last line of this block
We escaped the inner block
??很多編程語言使用特殊單詞或字符來表示一個代碼塊的開始,用另外的單詞或字符表示代碼塊的結(jié)束,例如,Pascal語言使用begin表示代碼塊的開始,使用end表示代碼塊的結(jié)束,而C風(fēng)格的編程語言(如Java、C#、C++等)使用一對大括號表示代碼塊的開始和結(jié)束。Python語言和這些語言都不一樣,Python語言使用冒號(:)表示代碼塊的開始,代碼塊中的每一條語句都是縮進(jìn)的(縮進(jìn)量相同)。當(dāng)回退到與快的開始語句同樣的縮進(jìn)量時,就表示當(dāng)前塊已經(jīng)結(jié)束。很多集成開發(fā)環(huán)境(IDE)會幫助用戶輕松把握縮進(jìn),因此讀者不必?fù)?dān)心縮進(jìn)量不對導(dǎo)致Python程序無法編譯通過。
??我們現(xiàn)在已經(jīng)了解了如何使用Python語言中的縮進(jìn)塊,在下面幾節(jié)就詳細(xì)介紹各種縮進(jìn)塊的應(yīng)用。
《Python從菜鳥到高手》已經(jīng)出版,開始連載了,購買送視頻課程
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。