条件语句 1) if 语句 例子: # 执行if语句内的程序 a = input("a:") b = input("b:") if(a > b): print a, " > ", b Note:如果是在pydev+eclipse下,运行然后输入数字,打个回车就会出现“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()函数的声明如下所示: Raw_input([prompt])->string,参数prompt是控制台输出的提示文字,提示用户输入。返回值为字符串。如果输入的是数字,返回的还是字符串。 Input( )支持用户输入数字或表达式,不支持输入字符串。Input( )函数的声明如下所示: 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语句的嵌套 编写条件语句时,应该尽量避免使用嵌套语句。嵌套语句不便于阅读,而且可能会忽略一些可能性。 例子: 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) 实现switch语句的功能 Python并没有提供switch语句,Python可以通过字典实现switch语句的功能。 实现方法分两步。首先,定义一个字典。字典是由键值对组成的集合。其次,调用字典的get()获取相应的表达式。 例子: 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分支语句的方案是创建一个switch类,处理程序的流程。 a) 创建一个switch类,该类继承自Python的祖先类object。调用构造函数init( )初始化需要匹配的字符串,并需要定义两个成员变量value和fall。Value用于存放需要匹配的字符串,fall用于记录是否匹配成功,初始值为false,标识匹配不成功。如果匹配成功,程序往后执行。 b) 定义一个match( )方法,该方法用于用于匹配case子句。这里需要考虑三种情况:首先是匹配成功的情况,其次是匹配失败的默认case子句,最后是case子句中没有使用break中断的情况。 c) 重写__iter__( )方法,定义该方法后才能使switch类用于循环语句中。__iter__( )调用match( )方法进行匹配。通过yield保留字,使函数可以在循环中迭代。此外,调用StopIteration异常中断循环。 d) 编写调用代码,在for…in…循环中使用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 # 调用match方法 返回一个生成器 raise StopIteration # StopIteration 异常来判断for循环是否结束
def match(self, *args): # 模拟case子句的方法 if self.fall or not args: # 如果fall为true,则继续执行下面的case子句 # 或case子句没有匹配项,则流转到默认分支。 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循环中 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 语句 例子: # 执行if语句内的程序 a = input("a:") b = input("b:") if(a > b): print a, " > ", b Note:如果是在pydev+eclipse下,运行然后输入数字,打个回车就会出现“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()函数的声明如下所示: Raw_input([prompt])->string,参数prompt是控制台输出的提示文字,提示用户输入。返回值为字符串。如果输入的是数字,返回的还是字符串。 Input( )支持用户输入数字或表达式,不支持输入字符串。Input( )函数的声明如下所示: 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语句的嵌套 编写条件语句时,应该尽量避免使用嵌套语句。嵌套语句不便于阅读,而且可能会忽略一些可能性。 例子: 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) 实现switch语句的功能 Python并没有提供switch语句,Python可以通过字典实现switch语句的功能。 实现方法分两步。首先,定义一个字典。字典是由键值对组成的集合。其次,调用字典的get()获取相应的表达式。 例子: 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分支语句的方案是创建一个switch类,处理程序的流程。 a) 创建一个switch类,该类继承自Python的祖先类object。调用构造函数init( )初始化需要匹配的字符串,并需要定义两个成员变量value和fall。Value用于存放需要匹配的字符串,fall用于记录是否匹配成功,初始值为false,标识匹配不成功。如果匹配成功,程序往后执行。 b) 定义一个match( )方法,该方法用于用于匹配case子句。这里需要考虑三种情况:首先是匹配成功的情况,其次是匹配失败的默认case子句,最后是case子句中没有使用break中断的情况。 c) 重写__iter__( )方法,定义该方法后才能使switch类用于循环语句中。__iter__( )调用match( )方法进行匹配。通过yield保留字,使函数可以在循环中迭代。此外,调用StopIteration异常中断循环。 d) 编写调用代码,在for…in…循环中使用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 # 调用match方法 返回一个生成器 raise StopIteration # StopIteration 异常来判断for循环是否结束
def match(self, *args): # 模拟case子句的方法 if self.fall or not args: # 如果fall为true,则继续执行下面的case子句 # 或case子句没有匹配项,则流转到默认分支。 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循环中 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 语句 例子: # 执行if语句内的程序 a = input("a:") b = input("b:") if(a > b): print a, " > ", b Note:如果是在pydev+eclipse下,运行然后输入数字,打个回车就会出现“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()函数的声明如下所示: Raw_input([prompt])->string,参数prompt是控制台输出的提示文字,提示用户输入。返回值为字符串。如果输入的是数字,返回的还是字符串。 Input( )支持用户输入数字或表达式,不支持输入字符串。Input( )函数的声明如下所示: 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语句的嵌套 编写条件语句时,应该尽量避免使用嵌套语句。嵌套语句不便于阅读,而且可能会忽略一些可能性。 例子: 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) 实现switch语句的功能 Python并没有提供switch语句,Python可以通过字典实现switch语句的功能。 实现方法分两步。首先,定义一个字典。字典是由键值对组成的集合。其次,调用字典的get()获取相应的表达式。 例子: 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分支语句的方案是创建一个switch类,处理程序的流程。 a) 创建一个switch类,该类继承自Python的祖先类object。调用构造函数init( )初始化需要匹配的字符串,并需要定义两个成员变量value和fall。Value用于存放需要匹配的字符串,fall用于记录是否匹配成功,初始值为false,标识匹配不成功。如果匹配成功,程序往后执行。 b) 定义一个match( )方法,该方法用于用于匹配case子句。这里需要考虑三种情况:首先是匹配成功的情况,其次是匹配失败的默认case子句,最后是case子句中没有使用break中断的情况。 c) 重写__iter__( )方法,定义该方法后才能使switch类用于循环语句中。__iter__( )调用match( )方法进行匹配。通过yield保留字,使函数可以在循环中迭代。此外,调用StopIteration异常中断循环。 d) 编写调用代码,在for…in…循环中使用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 # 调用match方法 返回一个生成器 raise StopIteration # StopIteration 异常来判断for循环是否结束
def match(self, *args): # 模拟case子句的方法 if self.fall or not args: # 如果fall为true,则继续执行下面的case子句 # 或case子句没有匹配项,则流转到默认分支。 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循环中 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 |
|