-
Python之if語句
計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷,通過條件判斷,選擇做什么樣的邏輯(當然,邏輯是需要我們提前寫好的),我們稱之為條件分支判斷。
舉個例子,在100分試卷的考試中,小于60分我們認為是不及格的,因此,我們可以使用程序自動判斷考試是否及格。score = 59 if score < 60: ? ? print('抱歉,考試不及格') # ==> 抱歉,考試不及格
這里,因為score = 59 < 60,所以if的判斷是True,因此就會執行print('抱歉,考試不及格')。
/*------------------------------------------------------------------------------*/
這里有幾個需要注意的地方:
可以看到print('抱歉,考試不及格')這行代碼明顯比上一行代碼縮進了,這是因為這行代碼是if判斷的一個子分支,因此需要縮進,在Python規范中,一般使用4個空格作為縮進
在if語句的最后,有一個冒號:,這是條件分支判斷的格式,在最后加入冒號:,表示接下來是分支代碼塊
/*------------------------------------------------------------------------------*/
案例:如果年齡達到18歲,則是成年人,咚咚嗆的年齡是19歲,請使用if語句判斷咚咚嗆是否成年,如果成年,輸出'adult',并把咚咚嗆的年齡打印出來。
參考答案:
age = 19 if age >= 18: ? ? print('your age = {}'.format(age)) ? ? print('adult')
查看全部 -
Python的字符串切片
字符串由一個個字符組成,每一個字符都有一個唯一的位置。比如字符串'ABC',第一個字符是A,第二個字符是B,第三個字符是C。
因此我們可以使用位置的方式取出字符串中特定位置的字符,按照位置取字符串的方式使用中括號[]訪問,這個時候可以把字符串看作是一個列表(一種新的數據類型,在后面會繼續學習),不過需要注意的是,在程序的世界中,計數是從0開始的,使用0來表示第一個。s = 'ABC'?
a = s[0] # 第一個?
b = s[1] # 第二個?
c = s[2] # 第三個
?print(a) # ==> A?
print(b) # ==> B?
print(c) # ==> C
/*-------------------------------------------------------------------------------*/
有時候,我們會想獲取字符串的一部分(子串),這個時候我們采取切片的方式獲取,切片需要在中括號[]中填入兩個數字,中間用冒號分開,表示子串的開始位置和結束位置,并且這是半閉半開區間,不包括最后的位置。
ab = s[0:2] # 取字符串s中的第一個字符到第三個字符,不包括第三個字符 print(ab) # ==> AB
/*-------------------------------------------------------------------------------*/
我們定義一個更長的字符串,了解切片更多的細節。
s = 'ABCDEFGHIJK'?
abcd = s[0:4] # 取字符串s中的第一個字符到第五個字符,不包括第五個字符
?print(abcd) # ==> ABCD?
cdef = s[2:6] # 取字符串s中的第三個字符到第七個字符,不包括第七個字符 print(cdef) # ==> CDEF
/*-------------------------------------------------------------------------------*/
案例:請從字符串'AABCDEFGHHIJ'中,使用切片的方式取出'ABCDEFGH'。
解答:
s = 'AABCDEFGHHIJ'?
sub = s[1:9]?
print(sub)
查看全部 -
Python的字符串format
字符串是Python程序重要的數據類型,到目前為止,我們輸出的字符串的內容都是固定的,但有時候通過字符串輸出的內容不是固定的,這個時候需要使用format來處理字符串,輸出不固定的內容。
字符串format由兩個部分組成,字符串模板和模板數據內容組成,通過大括號{},就可以把模板數據內容嵌到字符串模板對應的位置。# 字符串模板 template = 'Hello {}' # 模板數據內容 world = 'World' result = template.format(world) print(result) # ==> Hello World
如果模板中{}比較多,則容易錯亂,那么在format的時候也可以指定模板數據內容的順序。
# 指定順序 template = 'Hello {0}, Hello {1}, Hello {2}, Hello {3}.'?
result = template.format('World', 'China', 'Beijing', 'imooc')?
print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.?
# 調整順序 template = 'Hello {3}, Hello {2}, Hello {1}, Hello {0}.'?
result = template.format('World', 'China', 'Beijing', 'imooc')?
print(result) # ==> Hello imooc, Hello Beijing, Hello China, Hello World.
除了使用順序,還可以指定對應的名字,使得在format過程更加清晰。
# 指定{}的名字w,c,b,i?
template = 'Hello {w}, Hello {c}, Hello , Hello {i}.' world = 'World'?
china = 'China'?
beijing = 'Beijing'?
imooc = 'imooc'?
# 指定名字對應的模板數據內容?
result = template.format(w = world, c = china, b = beijing, i = imooc) print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.
/*----------------------------------------------------------------------------*/
案例:請使用兩種format的方式打印字符串Life is short, you need Python。
解答:
print('Life is short, you need {}'.format('Python'))
print('Life is short, you need {launguage}'.format( launguage = 'Python'))查看全部 -
Python的字符串
字符串可以用' '或者" "括起來表示。
如果字符串本身包含'怎么辦?比如我們要表示字符串?I'm OK?,這時,可以用" "括起來表示:
"I'm OK"
類似的,如果字符串包含",我們就可以用' '括起來表示:
'Learn "Python" in imooc'
但是,如果字符串既包含'又包含"怎么辦?
這個時候,就需要對字符串中的某些特殊字符進行“轉義”,Python字符串用\進行轉義。
要表示字符串Bob said "I'm OK"
由于'和"會引起歧義,因此,我們在它前面插入一個\表示這是一個普通字符,不代表字符串的起始,因此,這個字符串又可以表示為
'Bob said \"I\'m OK\".'
注意:轉義字符?\不計入字符串的內容中。
常用的轉義字符還有:
\n表示換行
\t?表示一個制表符
\\表示?\?字符本身/*----------------------------------------------------------------------------*/
案例:請在Python中輸出以下字符串special string: ', ", \, \\, \n, \t
解答:
s = 'special string: \', ", \\, \\\\, \\n, \\t'
print(s)查看全部 -
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解釋器在做布爾運算時,只要能提前確定計算結果,它就不會往后算了,直接返回結果。
查看全部 -
Python中,能夠直接處理的數據類型有以下幾種:
整數
????????整數和我們生活中定義的整數是一個概念,例如: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。
十進制數、二進制數和十六進制數之間是可以相互轉換的,如果感興趣的同學,可以學習《編程必備基礎知識》了解更多轉換的細節。
/*-------------------------------------------------------------------------------*/
????2.浮點數
????????浮點數對應我們生活的是小數,例如: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嗎?真實結果可能讓你失望了。
/*-------------------------------------------------------------------------------*/
???????3.字符串
????????字符串對應生活中的就是非數字類型的內容,比如一個句子,一段話,在Python中就是字符串,在Python中,字符串是以''或""括起來的任意文本,比如'abc',"xyz"等等。請注意,''或""本身只是一種表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c這3個字符。
????????比如之前練習過的第一個Python程序:print('Hello World'),其中的Hello World就是字符串。
/*-------------------------------------------------------------------------------*/
????????4.布爾值
????????布爾值對應于生活中的就是對和錯,在計算機的世界里,大部分判斷都是非錯則對的,布爾值和布爾代數的表示完全一致,一個布爾值只有True、False兩種值,要么是True,要么是False,在Python中,可以直接用True、False表示布爾值(請注意大小寫,不需要使用字符串符號括起來),也可以通過布爾運算計算出來。
布爾值可以用and、or和not運算(注意and,or,not都是Python語言本身的關鍵字)。
and運算是與運算,只有所有都為 True,and運算結果才是 True。
or運算是或運算,只要其中有一個為 True,or 運算結果就是 True。
not運算是非運算,它是一個單目運算符,把 True 變成 False,False 變成 True。
空值
空值是Python里一個特殊的值,用None表示。
注意,None和0是不一樣的,None不能理解為0,因為0是有意義的,比如我有0個蘋果表示我沒有蘋果,0表達的是數值0的意思,而不能表示為我有None個蘋果,None是一個特殊的空值。
/*-------------------------------------------------------------------------------*/
查看全部 -
r'...'單行
r'''...'''多行
查看全部 -
10//4 # ==> 2
10//2.5 # ==> 4.0
10//3 # ==> 3
如果都是整數,結果就是整數?有浮點類型就保留小數位?查看全部 -
score = 59
if score < 60:
? ? print('抱歉,考試不及格')
else:
? ? print('恭喜你,考試及格')查看全部 -
score = 59
if score < 60:
? ? print('抱歉,考試不及格')
# ==> 抱歉,考試不及格這里,因為score = 59 < 60,所以if的判斷是True,因此就會執行print('抱歉,考試不及格')。
這里有幾個需要注意的地方:可以看到print('抱歉,考試不及格')這行代碼明顯比上一行代碼縮進了,這是因為這行代碼是if判斷的一個子分支,因此需要縮進,在Python規范中,一般使用4個空格作為縮進
在if語句的最后,有一個冒號:,這是條件分支判斷的格式,在最后加入冒號:,表示接下來是分支代碼塊
查看全部 -
num=0
sum=0
while num<=1000
sum=sum+num
num=num+2
continue
print(sum)
查看全部 -
列表(list)是一種有序的容器,放入list中的元素,將會按照一定順序排列。構造list的方法非常簡單,使用中括號[]
查看全部 -
如果一個字符串包含很多需要轉義的字符,對每一個字符都進行轉義會很麻煩。為了避免這種情況,我們可以在字符串前面加個前綴r,表示這是一個?raw?字符串,里面的字符就不需要轉義了。例如:
r'\(~_~)/ \(~_~)/'
但是r'...'表示法不能表示多行字符串,也不能表示包含'和?"的字符串。
如果要表示多行字符串,可以用'''...'''表示:
查看全部 -
好好學習Python查看全部
-
s = 'ABC'
a = s[0] # 第一個
b = s[1] # 第二個
c = s[2] # 第三個
print(a) # ==> A
print(b) # ==> B
print(c) # ==> C需要注意的是,在程序的世界中,計數是從0開始的,使用0來表示第一個。
ab = s[0:2] # 取字符串s中的第一個字符到第三個字符,不包括第三個字符
print(ab) # ==> AB查看全部
舉報