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