條件語(yǔ)句
1) if 語(yǔ)句
例子:
# 執(zhí)行if語(yǔ)句內(nèi)的程序
a = input("a:")
b = input("b:")
if(a > b):
print a, " > ", b
Note:如果是在pydev+eclipse下,運(yùn)行然后輸入數(shù)字,打個(gè)回車(chē)就會(huì)出現(xiàn)“SyntaxError:unexpected EOF while parsing”,所以只能用raw_input來(lái)代替。原因是回車(chē),編譯器都多讀一個(gè)/r,一般按回車(chē)后,shells 會(huì)輸入“/n”,但因?yàn)?/span>Eclipse控制臺(tái)輸入的是“/r/n”,python就不能很好的識(shí)別,可以說(shuō)這是Python的一個(gè)bug。
# 跳過(guò)if語(yǔ)句
a = input("a:")
b = input("b:")
if(a > b):
print a, " > ", b
print a, " < ", b
# if else語(yǔ)句
a = input("a:")
b = input("b:")
if(a > b):
print a, " > ", b
else:
print a, " < ", b
Note:input()he raw_input. Raw_input( )捕獲用戶的原始輸入,raw_input()函數(shù)的聲明如下所示:
Raw_input([prompt])->string,參數(shù)prompt是控制臺(tái)輸出的提示文字,提示用戶輸入。返回值為字符串。如果輸入的是數(shù)字,返回的還是字符串。
Input( )支持用戶輸入數(shù)字或表達(dá)式,不支持輸入字符串。Input( )函數(shù)的聲明如下所示:
Input([prompt])->value。
2) if…elif…else語(yǔ)句
例子:
# if elif else語(yǔ)句
score = raw_input("score:")
score=int(score)
if(score >= 90) and (score <= 100):
print "A"
elif(score >= 80) and (score < 90):
print "B"
elif(score >= 60) and (score < 80):
print "C"
else:
print "D"
3) if語(yǔ)句的嵌套
編寫(xiě)條件語(yǔ)句時(shí),應(yīng)該盡量避免使用嵌套語(yǔ)句。嵌套語(yǔ)句不便于閱讀,而且可能會(huì)忽略一些可能性。
例子:
x = -1
y = 99
if(x >= 0):
if(x > 0): #嵌套的if語(yǔ)句
y = 1
else:
y = 0
else:
y = -1
print "y =", y
輸出為y=-1
4) 實(shí)現(xiàn)switch語(yǔ)句的功能
Python并沒(méi)有提供switch語(yǔ)句,Python可以通過(guò)字典實(shí)現(xiàn)switch語(yǔ)句的功能。
實(shí)現(xiàn)方法分兩步。首先,定義一個(gè)字典。字典是由鍵值對(duì)組成的集合。其次,調(diào)用字典的get()獲取相應(yīng)的表達(dá)式。
例子:
from __future__ import division
x = 1
y = 2
operator = "/"
result = {
"+" : x + y,
"-" : x - y,
"*" : x * y,
"/" : x / y
}
print result.get(operator)
輸出為0.5
另一種使用switch分支語(yǔ)句的方案是創(chuàng)建一個(gè)switch類(lèi),處理程序的流程。
a) 創(chuàng)建一個(gè)switch類(lèi),該類(lèi)繼承自Python的祖先類(lèi)object。調(diào)用構(gòu)造函數(shù)init( )初始化需要匹配的字符串,并需要定義兩個(gè)成員變量value和fall。Value用于存放需要匹配的字符串,fall用于記錄是否匹配成功,初始值為false,標(biāo)識(shí)匹配不成功。如果匹配成功,程序往后執(zhí)行。
b) 定義一個(gè)match( )方法,該方法用于用于匹配case子句。這里需要考慮三種情況:首先是匹配成功的情況,其次是匹配失敗的默認(rèn)case子句,最后是case子句中沒(méi)有使用break中斷的情況。
c) 重寫(xiě)__iter__( )方法,定義該方法后才能使switch類(lèi)用于循環(huán)語(yǔ)句中。__iter__( )調(diào)用match( )方法進(jìn)行匹配。通過(guò)yield保留字,使函數(shù)可以在循環(huán)中迭代。此外,調(diào)用StopIteration異常中斷循環(huán)。
d) 編寫(xiě)調(diào)用代碼,在for…in…循環(huán)中使用switch類(lèi)。
例子:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class switch(object):
def __init__(self, value): # 初始化需要匹配的值value
self.value = value
self.fall = False # 如果匹配到的case語(yǔ)句中沒(méi)有break,則fall為true。
def __iter__(self):
yield self.match # 調(diào)用match方法 返回一個(gè)生成器
raise StopIteration # StopIteration 異常來(lái)判斷for循環(huán)是否結(jié)束
def match(self, *args): # 模擬case子句的方法
if self.fall or not args: # 如果fall為true,則繼續(xù)執(zhí)行下面的case子句
# 或case子句沒(méi)有匹配項(xiàng),則流轉(zhuǎn)到默認(rèn)分支。
return True
elif self.value in args: # 匹配成功
self.fall = True
return True
else: # 匹配失敗
return False
operator = "+"
x = 1
y = 2
for case in switch(operator): # switch只能用于for in循環(huán)中
if case('+'):
print x + y
break
if case('-'):
print x - y
break
if case('*'):
print x * y
break
if case('/'):
print x / y
break
if case(): # 默認(rèn)分支
print ""
輸出為3 條件語(yǔ)句 1) if 語(yǔ)句 例子: # 執(zhí)行if語(yǔ)句內(nèi)的程序 a = input("a:") b = input("b:") if(a > b): print a, " > ", b Note:如果是在pydev+eclipse下,運(yùn)行然后輸入數(shù)字,打個(gè)回車(chē)就會(huì)出現(xiàn)“SyntaxError:unexpected EOF while parsing”,所以只能用raw_input來(lái)代替。原因是回車(chē),編譯器都多讀一個(gè)/r,一般按回車(chē)后,shells 會(huì)輸入“/n”,但因?yàn)?/span>Eclipse控制臺(tái)輸入的是“/r/n”,python就不能很好的識(shí)別,可以說(shuō)這是Python的一個(gè)bug。 # 跳過(guò)if語(yǔ)句 a = input("a:") b = input("b:") if(a > b): print a, " > ", b print a, " < ", b # if else語(yǔ)句 a = input("a:") b = input("b:") if(a > b): print a, " > ", b else: print a, " < ", b Note:input()he raw_input. Raw_input( )捕獲用戶的原始輸入,raw_input()函數(shù)的聲明如下所示: Raw_input([prompt])->string,參數(shù)prompt是控制臺(tái)輸出的提示文字,提示用戶輸入。返回值為字符串。如果輸入的是數(shù)字,返回的還是字符串。 Input( )支持用戶輸入數(shù)字或表達(dá)式,不支持輸入字符串。Input( )函數(shù)的聲明如下所示: Input([prompt])->value。 2) if…elif…else語(yǔ)句 例子: # if elif else語(yǔ)句 score = raw_input("score:") score=int(score) if(score >= 90) and (score <= 100): print "A" elif(score >= 80) and (score < 90): print "B" elif(score >= 60) and (score < 80): print "C" else: print "D" 3) if語(yǔ)句的嵌套 編寫(xiě)條件語(yǔ)句時(shí),應(yīng)該盡量避免使用嵌套語(yǔ)句。嵌套語(yǔ)句不便于閱讀,而且可能會(huì)忽略一些可能性。 例子: x = -1 y = 99 if(x >= 0): if(x > 0): #嵌套的if語(yǔ)句 y = 1 else: y = 0 else: y = -1 print "y =", y 輸出為y=-1 4) 實(shí)現(xiàn)switch語(yǔ)句的功能 Python并沒(méi)有提供switch語(yǔ)句,Python可以通過(guò)字典實(shí)現(xiàn)switch語(yǔ)句的功能。 實(shí)現(xiàn)方法分兩步。首先,定義一個(gè)字典。字典是由鍵值對(duì)組成的集合。其次,調(diào)用字典的get()獲取相應(yīng)的表達(dá)式。 例子: from __future__ import division x = 1 y = 2 operator = "/" result = { "+" : x + y, "-" : x - y, "*" : x * y, "/" : x / y } print result.get(operator) 輸出為0.5 另一種使用switch分支語(yǔ)句的方案是創(chuàng)建一個(gè)switch類(lèi),處理程序的流程。 a) 創(chuàng)建一個(gè)switch類(lèi),該類(lèi)繼承自Python的祖先類(lèi)object。調(diào)用構(gòu)造函數(shù)init( )初始化需要匹配的字符串,并需要定義兩個(gè)成員變量value和fall。Value用于存放需要匹配的字符串,fall用于記錄是否匹配成功,初始值為false,標(biāo)識(shí)匹配不成功。如果匹配成功,程序往后執(zhí)行。 b) 定義一個(gè)match( )方法,該方法用于用于匹配case子句。這里需要考慮三種情況:首先是匹配成功的情況,其次是匹配失敗的默認(rèn)case子句,最后是case子句中沒(méi)有使用break中斷的情況。 c) 重寫(xiě)__iter__( )方法,定義該方法后才能使switch類(lèi)用于循環(huán)語(yǔ)句中。__iter__( )調(diào)用match( )方法進(jìn)行匹配。通過(guò)yield保留字,使函數(shù)可以在循環(huán)中迭代。此外,調(diào)用StopIteration異常中斷循環(huán)。 d) 編寫(xiě)調(diào)用代碼,在for…in…循環(huán)中使用switch類(lèi)。 例子: #!/usr/bin/python # -*- coding: UTF-8 -*- class switch(object): def __init__(self, value): # 初始化需要匹配的值value self.value = value self.fall = False # 如果匹配到的case語(yǔ)句中沒(méi)有break,則fall為true。 def __iter__(self): yield self.match # 調(diào)用match方法 返回一個(gè)生成器 raise StopIteration # StopIteration 異常來(lái)判斷for循環(huán)是否結(jié)束 def match(self, *args): # 模擬case子句的方法 if self.fall or not args: # 如果fall為true,則繼續(xù)執(zhí)行下面的case子句 # 或case子句沒(méi)有匹配項(xiàng),則流轉(zhuǎn)到默認(rèn)分支。 return True elif self.value in args: # 匹配成功 self.fall = True return True else: # 匹配失敗 return False operator = "+" x = 1 y = 2 for case in switch(operator): # switch只能用于for in循環(huán)中 if case('+'): print x + y break if case('-'): print x - y break if case('*'): print x * y break if case('/'): print x / y break if case(): # 默認(rèn)分支 print "" 輸出為3 條件語(yǔ)句 1) if 語(yǔ)句 例子: # 執(zhí)行if語(yǔ)句內(nèi)的程序 a = input("a:") b = input("b:") if(a > b): print a, " > ", b Note:如果是在pydev+eclipse下,運(yùn)行然后輸入數(shù)字,打個(gè)回車(chē)就會(huì)出現(xiàn)“SyntaxError:unexpected EOF while parsing”,所以只能用raw_input來(lái)代替。原因是回車(chē),編譯器都多讀一個(gè)/r,一般按回車(chē)后,shells 會(huì)輸入“/n”,但因?yàn)?/span>Eclipse控制臺(tái)輸入的是“/r/n”,python就不能很好的識(shí)別,可以說(shuō)這是Python的一個(gè)bug。 # 跳過(guò)if語(yǔ)句 a = input("a:") b = input("b:") if(a > b): print a, " > ", b print a, " < ", b # if else語(yǔ)句 a = input("a:") b = input("b:") if(a > b): print a, " > ", b else: print a, " < ", b Note:input()he raw_input. Raw_input( )捕獲用戶的原始輸入,raw_input()函數(shù)的聲明如下所示: Raw_input([prompt])->string,參數(shù)prompt是控制臺(tái)輸出的提示文字,提示用戶輸入。返回值為字符串。如果輸入的是數(shù)字,返回的還是字符串。 Input( )支持用戶輸入數(shù)字或表達(dá)式,不支持輸入字符串。Input( )函數(shù)的聲明如下所示: Input([prompt])->value。 2) if…elif…else語(yǔ)句 例子: # if elif else語(yǔ)句 score = raw_input("score:") score=int(score) if(score >= 90) and (score <= 100): print "A" elif(score >= 80) and (score < 90): print "B" elif(score >= 60) and (score < 80): print "C" else: print "D" 3) if語(yǔ)句的嵌套 編寫(xiě)條件語(yǔ)句時(shí),應(yīng)該盡量避免使用嵌套語(yǔ)句。嵌套語(yǔ)句不便于閱讀,而且可能會(huì)忽略一些可能性。 例子: x = -1 y = 99 if(x >= 0): if(x > 0): #嵌套的if語(yǔ)句 y = 1 else: y = 0 else: y = -1 print "y =", y 輸出為y=-1 4) 實(shí)現(xiàn)switch語(yǔ)句的功能 Python并沒(méi)有提供switch語(yǔ)句,Python可以通過(guò)字典實(shí)現(xiàn)switch語(yǔ)句的功能。 實(shí)現(xiàn)方法分兩步。首先,定義一個(gè)字典。字典是由鍵值對(duì)組成的集合。其次,調(diào)用字典的get()獲取相應(yīng)的表達(dá)式。 例子: from __future__ import division x = 1 y = 2 operator = "/" result = { "+" : x + y, "-" : x - y, "*" : x * y, "/" : x / y } print result.get(operator) 輸出為0.5 另一種使用switch分支語(yǔ)句的方案是創(chuàng)建一個(gè)switch類(lèi),處理程序的流程。 a) 創(chuàng)建一個(gè)switch類(lèi),該類(lèi)繼承自Python的祖先類(lèi)object。調(diào)用構(gòu)造函數(shù)init( )初始化需要匹配的字符串,并需要定義兩個(gè)成員變量value和fall。Value用于存放需要匹配的字符串,fall用于記錄是否匹配成功,初始值為false,標(biāo)識(shí)匹配不成功。如果匹配成功,程序往后執(zhí)行。 b) 定義一個(gè)match( )方法,該方法用于用于匹配case子句。這里需要考慮三種情況:首先是匹配成功的情況,其次是匹配失敗的默認(rèn)case子句,最后是case子句中沒(méi)有使用break中斷的情況。 c) 重寫(xiě)__iter__( )方法,定義該方法后才能使switch類(lèi)用于循環(huán)語(yǔ)句中。__iter__( )調(diào)用match( )方法進(jìn)行匹配。通過(guò)yield保留字,使函數(shù)可以在循環(huán)中迭代。此外,調(diào)用StopIteration異常中斷循環(huán)。 d) 編寫(xiě)調(diào)用代碼,在for…in…循環(huán)中使用switch類(lèi)。 例子: #!/usr/bin/python # -*- coding: UTF-8 -*- class switch(object): def __init__(self, value): # 初始化需要匹配的值value self.value = value self.fall = False # 如果匹配到的case語(yǔ)句中沒(méi)有break,則fall為true。 def __iter__(self): yield self.match # 調(diào)用match方法 返回一個(gè)生成器 raise StopIteration # StopIteration 異常來(lái)判斷for循環(huán)是否結(jié)束 def match(self, *args): # 模擬case子句的方法 if self.fall or not args: # 如果fall為true,則繼續(xù)執(zhí)行下面的case子句 # 或case子句沒(méi)有匹配項(xiàng),則流轉(zhuǎn)到默認(rèn)分支。 return True elif self.value in args: # 匹配成功 self.fall = True return True else: # 匹配失敗 return False operator = "+" x = 1 y = 2 for case in switch(operator): # switch只能用于for in循環(huán)中 if case('+'): print x + y break if case('-'): print x - y break if case('*'): print x * y break if case('/'): print x / y break if case(): # 默認(rèn)分支 print "" 輸出為3
聯(lián)系客服