ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python从入门到精通 第四章(程序的控制结构)

Python从入门到精通 第四章(程序的控制结构) 一、逻辑运算1、逻辑运算符回顾运算符逻辑表达式描述andx and y只有x和y的值都为True才会返回True否则返回Falseorx or y只要x或y的值为True就会返回True否则返回Falsenotnot x如果x为True则返回False否则返回True2、举例1例1# 练习1: 定义一个整数变量 age编写代码判断年龄是否正确 age 100 # 要求人的年龄在 0-120 之间 if age 0 and age 120: print(年龄正确) else: print(年龄不正确) # 练习2: 定义两个整数变量 python_score、c_score编写代码判断成绩 python_score 50 c_score 50 # 要求只要有一门成绩 60 分就算合格 if python_score 60 or c_score 60: print(考试通过) else: print(再接再厉)2例2# 练习: 定义一个布尔型变量 is_employee编写代码判断是否是本公司员工 is_employee True # 如果不是提示不允许入内 if not is_employee: print(非公勿内)二、分支语句1、多分支语句1多分支语句的基本结构if 条件表达式1:条件1满足执行的代码……elif 条件表达式2:条件2满足时执行的代码……elif 条件表达式3:条件3满足时执行的代码……else:以上条件都不满足时执行的代码……①elif和else都必须和if联合使用而不能单独使用。②可以将if、elif 和else以及各自缩进的代码看成一个完整的代码块。③下图所示的是多分支语句的控制结构示意图。2举例holiday_name 平安夜 if holiday_name 情人节: print(买玫瑰) print(看电影) elif holiday_name 平安夜: print(买苹果) print(吃大餐) elif holiday_name 生日: print(买蛋糕) else: print(每天都是节日啊……)2、if语句的嵌套1嵌套if语句的基本结构if 条件表达式1:条件1满足执行的代码……if 条件表达式2:条件1和条件2均满足时执行的代码……# 条件2不满足的处理else:条件1满足但条件2不满足时执行的代码# 条件1不满足的处理else:条件1不满足时执行的代码……2举例①例1# 定义布尔型变量 has_ticket 表示是否有车票 has_ticket True # 定义整数型变量 knife_length 表示刀的长度单位厘米 knife_length 20 # 首先检查是否有车票如果有才允许进行 安检 if has_ticket: print(有车票可以开始安检...) # 安检时需要检查刀的长度判断是否超过 20 厘米 # 如果超过 20 厘米提示刀的长度不允许上车 if knife_length 20: print(不允许携带 %d 厘米长的刀上车 % knife_length) # 如果不超过 20 厘米安检通过 else: print(安检通过祝您旅途愉快……) # 如果没有车票不允许进门 else: print(大哥您要先买票啊)②例2 1. 从控制台输入要出的拳 —— 石头1剪刀2布3 2. 电脑 随机 出拳 —— 先假定电脑只会出石头完成整体代码功能 3. 比较胜负 # 在Python中要使用随机数首先需要导入随机数的模块 —— “工具包”建议在导入工具包时应该将导入的语句放在文件顶部 # ● 导入模块后可以直接在模块名称后面敲一个 . 然后按 Tab 键会提示该模块中包含的所有函数 # ● random.randint(a, b) 返回 [a, b] 之间的整数包含 a 和 b import random # 从控制台输入要出的拳 —— 石头1剪刀2布3 print(石头1剪刀2布3) player int(input(请出拳)) # 电脑随机出拳 computer random.randint(1,3) # 比较胜负 # 如果条件判断的内容太长可以在最外侧的条件增加一对大括号 # 再在每一个条件之间使用回车PyCharm 可以自动增加 8 个空格 if((player 1 and computer 2) or (player 2 and computer 3) or (player 3 and computer 1)): print(用户胜出) elif player computer: print(平局) else: print(电脑胜出) # 另一种写法 if (computer player % 3 1 ): print(用户胜出) elif player computer: print(平局) else: print(电脑胜出)三、循环语句——条件循环1、while循环基本使用1while循环最常用的应用场景就是让指定的代码按照指定的次数重复执行。2死循环由于程序员的原因忘记在循环内部修改循环的判断条件导致循环持续执行程序无法终止。2、条件循环1条件循环的基本结构while(条件):语句块1 # while语句以及缩进部分是一个完整的代码块语句块2①当条件为True真时执行语句块1然后再次判断条件当条件为False假时退出循环执行语句块2。②举例# 1. 定义重复次数计数器 i 1 # 2. 使用 while 判断条件 while i 5: # 要重复执行的代码 print(Hello Python) # 处理计数器 i i i 1 print(循环结束后的 i %d % i)3、循环计算1在程序开发中通常会遇到利用循环重复计算的需求遇到这种需求可以在while语句上方定义一个变量用于存放最终计算结果然后在循环体内部每次循环都用最新的计算结果更新之前定义的变量。2例1# 计算 0 ~ 100 之间所有数字的累计求和结果 # 0. 定义最终结果的变量 result 0 # 1. 定义一个整数的变量记录循环的次数 i 0 # 2. 开始循环 while i 100: print(i) # 每一次循环都让 result 这个变量和 i 这个计数器相加 result i # 处理计数器 i 1 print(0~100之间的数字求和结果 %d % result)3例2# 0. 最终结果 result 0 # 1. 计数器 i 0 # 2. 开始循环 while i 100: # 判断偶数 if i % 2 0: print(i) result i # 处理计数器 i 1 print(0~100之间偶数求和结果 %d % result)4、break和continue1在循环体中如果某一个条件满足后不再希望循环继续执行可以使用break关键字退出循环仅退出一层循环体。i 0 while i 10: # break 某一条件满足时退出循环体不再执行循环体后续的代码 # i 3 if i 3: break print(i) i 1 print(over)2在循环体中如果某一个条件满足后希望本轮循环不执行循环体后续的语句然后马上开始判断下一轮循环是否继续可以使用continue关键字提前结束本轮循环。i 0 while i 10: # 当 i 7 时不希望执行需要重复执行的代码 if i 7: # 在使用 continue 之前同样应该修改计数器 # 否则会出现死循环 i 1 continue # 重复执行的代码 print(i) i 15、while循环嵌套1while嵌套就是——while里面还有while。while 条件1表达式:条件1满足时做的事情1条件1满足时做的事情2条件1满足时做的事情3...(省略)...while 条件2表达式:条件2满足时做的事情1条件2满足时做的事情2条件2满足时做的事情3...(省略)...处理条件2处理条件12循环嵌套演练——九九乘法表# 定义起始行 row 1 # 最大打印 9 行 while row 9: # 定义起始列 col 1 # 最大打印 row 列 while col row: # end 表示输出结束后不换行 # \t 可以在控制台输出一个制表符协助在输出文本时对齐 print(%d * %d %d % (col, row, row * col), end\t) # 列数 1 col 1 # 一行打印完成的换行 print() # 行数 1 row 1四、循环语句——遍历循环1、遍历循环的格式for 循环变量 in 遍历结构:语句块①遍历循环可以理解为从遍历结构中逐一提取元素放在循环变量中对于每个所提取的元素执行一次语句块。②for语句的循环执行次数是根据遍历结构中的元素个数确定的。③遍历结构可以是字符串、文件、range函数或组合数据类型等比较常见的是列表和元组。2、逐一遍历字符串的每个字符for c in 字符串: print(c)3、使用range函数指定循环次数range(a,b,s)从a到b不含b以s为步长产生一个序列。①当只有一个参数x时range返回序列(0,1,…,x-1)。②当只有两个参数x、yxy时range返回序列(x,x1,…,y-1)。for i in range(4): print(第%d次循环 % (i 1)) print(,end\n) for i in range(1,5): print(第%d次循环 % i)4、遍历循环的扩展模式for 循环变量 in 遍历结构:语句块1else:语句块2①当for循环正常执行之后程序会继续执行else语句中的内容。②else语句只在循环正常执行没有被break打断的情况下才执行因此可以在语句块2中放置判断循环执行情况的语句。for i in range(4): print(第%d次循环 % (i 1)) else: print(循环正常结束) print(,end\n) for i in range(1,5): print(第%d次循环 % i) if i 3: break else: print(循环正常结束)五、程序的异常处理1、异常的概念1程序在运行时如果Python解释器 遇到到一个错误比如缩进错误、除数为0的错误会停止程序的执行并且提示一些错误信息这就是异常。2程序停止执行并且提示错误信息这个动作我们通常称之为抛出(raise)异常。3程序开发时很难将所有的特殊情况都处理的面面俱到不过通过异常捕获可以针对突发事件做集中的处理从而保证程序的稳定性和健壮性。2、捕获异常1在程序开发中如果对某些代码的执行不能确定是否正确可以增加try尝试来捕获异常。2捕获异常最简单的语法格式try:尝试执行的代码except:出现错误的处理①尝试执行的代码是不确定是否能够正常执行的代码。②尝试执行的代码发生异常有错误时执行except保留字后面的语句程序不会因为该错误而停止运行。try: n eval(input(请输入一个数字)) print(输入数字的4次方值为%d % n ** 4) except: print(输入错误) # 如果输入的不是数字n ** 4将会出错产生异常 # 此时程序不会终止而是转来执行except的语句3、错误类型捕获1在程序执行时可能会遇到不同类型的异常并且需要针对不同类型的异常做出不同的响应这个时候就需要捕获错误类型了。2语法如下try:# 尝试执行的代码passexcept 错误类型1:# 针对错误类型1对应的代码处理passexcept (错误类型2, 错误类型3):# 针对错误类型2 和 3对应的代码处理passexcept Exception as result:print(未知错误 %s % result)注当Python解释器抛出异常时最后一行错误信息的第一个单词就是错误类型。见第一章中“认识错误”一节try: num int(input(请输入整数)) result 8 / num print(result) except ValueError: print(请输入正确的整数) # 输入字符串会产生ValueError except ZeroDivisionError: print(除 0 错误) # 输入数字0会产生ZeroDivisionError4、捕获未知错误1在开发时要预判到所有可能出现的错误还是有一定难度的。2如果希望程序无论出现任何错误都不会因为Python解释器抛出异常而被终止可以再增加一个except如下所示。except Exception as result:print(未知错误 %s % result)5、异常捕获完整语法try:# 尝试执行的代码passexcept 错误类型1:# 针对错误类型1对应的代码处理passexcept 错误类型2:# 针对错误类型2对应的代码处理passexcept (错误类型3, 错误类型4):# 针对错误类型3 和 4对应的代码处理passexcept Exception as result:# 打印错误信息print(result)else:# 没有异常才会执行的代码passfinally:# 无论是否有异常都会执行的代码print(无论是否有异常都会执行的代码)try: # 提示用户输入一个整数 num int(input(输入一个整数)) # 使用 8 除以用户输入的整数并且输出 result 8 / num print(result) except ValueError: print(请输入正确的整数) except Exception as result: print(未知错误 %s % result) else: print(尝试成功) finally: print(无论是否出现错误都会执行的代码) print(- * 50)6、异常的传递1当函数/方法执行出现异常会将异常传递给函数/方法的调用一方如果传递到主程序后仍然没有异常处理程序才会被终止。2在开发中可以在主函数中增加异常捕获而在主函数中调用的其它函数只要其它函数出现异常都会传递到主函数的异常捕获中这样就不需要在代码中增加大量的异常捕获能够保证代码的整洁。3例①定义函数 demo1() 提示用户输入一个整数并且返回②定义函数 demo2() 调用 demo1()③在主程序中调用 demo2()def demo1(): return int(input(请输入一个整数)) def demo2(): return demo1() try: print(demo2()) except ValueError: print(请输入正确的整数) except Exception as result: print(未知错误 %s % result)7、抛出异常1在开发中除了代码执行出错Python解释器会抛出异常之外还可以根据应用程序特有的业务需求主动抛出异常程序上没有任何代码错误但是应用到实际中会出错这时就需要主动抛出异常。2Python中提供了一个Exception异常类在开发时如果满足特定业务需求时希望抛出异常可以创建一个Exception的对象然后使用raise关键字抛出异常对象。3例①定义 input_password 函数提示用户输入密码②如果用户输入长度 8抛出异常③如果用户输入长度 8返回输入的密码def input_password(): # 1. 提示用户输入密码 pwd input(请输入密码) # 2. 判断密码长度 8返回用户输入的密码 if len(pwd) 8: return pwd # 3. 如果 8 主动抛出异常 print(主动抛出异常) # 1 创建异常对象 - 可以使用错误信息字符串作为参数 ex Exception(密码长度不够) # 2 主动抛出异常 raise ex # 提示用户输入密码 try: print(input_password()) except Exception as result: print(result)
返回列表