-
支持倒序訪問list中的每一個元素
-1開始
查看全部 -
list里面,每一個元素都有一個唯一的位置,我們稱之為索引(index),通過中括號
[]
來按位置訪問對應的元素。查看全部 -
Python中raw字符串與多行字符串
如果一個字符串包含很多需要轉義的字符,對每一個字符都進行轉義會很麻煩。為了避免這種情況,我們可以在字符串前面加個前綴
r
,表示這是一個?raw?字符串,里面的字符就不需要轉義了。例如:r'\(~_~)/?\(~_~)/'
但是
r'...'
表示法不能表示多行字符串,也不能表示包含'
和?"
的字符串。如果要表示多行字符串,可以用
'''...'''
表示:'''Line?1?Line?2?Line?3'''
上面這個字符串的表示方法和下面的是完全一樣的:
'Line 1\nLine 2\nLine 3'
還可以在多行字符串前面添加
r
,把這個多行字符串也變成一個raw字符串:r'''Python?is?created?by?"Guido".?It?is?free?and?easy?to?learn.?Let's?start?learn?Python?in?imooc!'''
任務
請把下面的字符串用
r'''...'''
的形式改寫,并用print打印出來:'\"To be, or not to be\": that is the question.\nWhether it\'s nobler in the mind to suffer.'
查看全部 -
Python的布爾類型
前面我們了解到,布爾類型是Python的基礎數據類型,布爾類型只有True和False兩種值,本節課我們學習布爾類型的集中運算。
與運算
只有兩個布爾值都為 True 時,計算結果才為 True。
True?and?True?#?==>?True?True?and?False?#?==>?False?False?and?True?#?==>?False?False?and?False?#?==>?False
或運算
只要有一個布爾值為 True,計算結果就是 True。
True?or?True?#?==>?True?True?or?False?#?==>?True?False?or?True?#?==>?True?False?or?False?#?==>?False
非運算
把True變為False,或者把False變為True:
not?True?#?==>?False?not?False?#?==>?True
這些運算有什么用呢?計算機程序是由無數的邏輯分支組成的,通過布爾運算,可以在計算機中實現條件判斷,根據計算結果為True或者False,計算機可以自動執行不同的后續代碼,因此學習布爾運算也是非常有必要的。
在Python中,布爾類型還可以與其他數據類型(字符串,數字等)做 and、or和not運算,請看下面的代碼:
a?=?True?print(a?and?0?or?99)?#?==>?99
得到的計算結果不是布爾類型,而是數字99,這是為什么呢?
因為Python把0、空字符串和None看成False,其他數值和非空字符串都看成True,所以:
True and 0
計算結果是0?
繼續計算0 or 99
計算結果是 99?
因此,結果是99。
需要注意的是,not計算的優先級是高于and和or的。True?and?not?False?#?==>?True
在上述布爾計算中,先計算
not False = True
,然后再計算True and True
,因此得到True的結果。短路計算
在計算
a and b
時,如果 a 是 False,則根據與運算法則,整個結果必定為 False,因此返回 a;如果 a 是 True,則整個計算結果必定取決與 b,因此返回 b。在計算
a or b
時,如果 a 是 True,則根據或運算法則,整個計算結果必定為 True,因此返回 a;如果 a 是 False,則整個計算結果必定取決于 b,因此返回 b。
所以Python解釋器在做布爾運算時,只要能提前確定計算結果,它就不會往后算了,直接返回結果。
任務
請運行如下代碼,并解釋打印的結果:
a?=?'python'?print('hello,',?a?or?'world')?b?=?''?print('hello,',?b?or?'world')
查看全部 -
函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出。
查看全部 -
函數可以返回None、一個值、多個值
查看全部 -
......
查看全部 -
abs()函數:求絕對值
cmp():比較兩數大小 cmp(x,y) x>y結果為1 =為0 <為-1
int()函數可以將合法的其它類型數據轉換為整數
str()函數可以將其它類型的數據轉換為字符串
sum()函數接收一個list作為參數,并返回list所有元素之和
查看全部 -
Python把0、空字符串和None看成False,其他數值和非空字符串都看成True
短路計算
在計算
a and b
時,如果 a 是 False,則根據與運算法則,整個結果必定為 False,因此返回 a;如果 a 是 True,則整個計算結果必定取決與 b,因此返回 b。在計算
a or b
時,如果 a 是 True,則根據或運算法則,整個計算結果必定為 True,因此返回 a;如果 a 是 False,則整個計算結果必定取決于 b,因此返回 b。
查看全部 -
取模運算
Python數字支持取模運算,使用百分號
%
表示取模。print(3?%?2)?#?==>?1 print(33?%?10)?#?==>?3 print(99?%?30)?#?==>?9
恰當使用取模運算,可以判斷一個數是否為偶數,當一個數對2取模結果為0時,則這個數為偶數,否則為奇數。
print(3?%?2)?#?==>?1?因此3為奇數 print(33?%?2)?#?==>?1?因此33為奇數 print(100?%?2)?#?==>?0?因此100為偶數
地板除
Python除了普通除法以外,還有一個特殊的除法被稱為
地板除
,對于地板除
,得到的結果會忽略純小數的部分,得到整數的部分,地板除使用//
進行。10//4?#?==>?2 10//2.5?#?==>?4.0 10//3?#?==>?3
小數點位數
使用Python計算小數的時候,經常需要保留小數點后若干位,可以使用round()函數來處理,這里先了解round的調用方式,使用兩個參數,第一個是需要保留小數點位數的數值,第二個是保留的位數。
num?=?10?/?3 print(num)?#?==>?3.3333333333333335 #?使用round保留兩位小數 round(num,?2)?#?==>?3.33
查看全部 -
整數
整數和我們生活中定義的整數是一個概念,例如:
1
,2
,3
,10
,100
,1000
,-1000
?等等,都是整數,Python可以處理任意大小的整數。對于整數,除了生活中常用的十進制以外,計算機由于使用二進制,所以,在計算機中也常用二進制或者十六進制表示整數。相比十進制數,在Python中使用以下方式表示二進制數和十六進制數。
二進制數只使用數字0、1表示,在Python中,二進制整數使用前綴
0b
表示,比如:0b0110
,0b1100
。十六進制數除了0~9十個數字以外,還使用a、b、c、d、e、f,在Python中,十六進制使用前綴
0x
,比如:0x12ef
,0xde2431af
。十進制數、二進制數和十六進制數之間是可以相互轉換的,如果感興趣的同學,可以學習《編程必備基礎知識》了解更多轉換的細節。
浮點數
浮點數對應我們生活的是小數,例如:
0.1
,0.5
,?12.34
,?3.1415926
等,都是浮點數。為什么小數在計算機領域被稱為浮點數呢?這是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的(浮動的),比如,
1.23x10^9
和12.3x10^8
是相等的,因此稱為浮點數。浮點數可以用數學寫法,如
1.23
,3.14
,-9.01
。但是對于很大或很小的浮點數,就必須用科學計數法表示,在Python中,把10用e替代,比如:1.23x10^9
就是1.23e9
,或者12.3e8
,0.000012
可以寫成1.2e-5
,同學可以自行舉出更多的例子。這里有必要提醒一點就是,整數和浮點數在計算機內部存儲的方式是不同的,整數運算永遠是精確的,而浮點數運算則可能會有四舍五入的誤差,如何檢驗,可以在Python終端中輸入以下內容
0.1 + 0.2
,看看可以得到你期望的結果0.3
嗎?真實結果可能讓你失望了。查看全部 -
變量名由大小寫英文字母、數字和下劃線
_
組成變量不能用數字開頭
變量盡量不要和Python關鍵字重合(比如前面學習過的:and、or、not,否則可能導致Python原有關鍵字發揮不出作用)
查看全部 -
s1?=?'ABC' s2?=?'123' for?x?in?s1: ????for?y?in?s2: ????????print(x?+?y)
在上述代碼中,對于外層循環,外層每循環1次,內層就會循環3次
查看全部 -
使用continue,我們可以控制循環繼續下去,并跳過continue后面的邏輯,
s=0
num=0
while num<=1000:
? ? num=num+1
? ? if num%2==1:
? ? ? ? continue
? ? s=s+num
print(s)
查看全部 -
set提供了remove()方法允許我們刪除set中的元素。
使用remove()方法,我們需要格外小心,需要提前判斷要remove()的元素是否在set里面,確保存在后,再進行remove。
L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
S = set([1, 3, 5, 7, 9, 11])
for item in L:
? ? if item in S:
? ? ? ? S.remove(item)
? ? else:
? ? ? ? S.add(item)
print(S)
? ??
查看全部
舉報