目录
一、条件判断语句
条件判断语句是通过if、elif 和 else 三个关键字,在一层或多层判断语句中对代码执行结果的(True 或者 False)进行判断,并根据判断结果来决定后续代码的执行
注意:Python是严格遵守缩进的语言。
1、if 语句
用法:如果 + 需要满足的条件,就 + 将要执行的代码
单独的 if 语句可实现的功能较少,一般都需要搭配 else 或者elif 等使用
示例:
# 根据输入年龄判断能否上网:
age = int(input("请输入你的年龄")) # 需要对年龄进行int格式化
if age >= 18: # if 后面跟条件
print("先生,祝您上网愉快" ) # 缩进后的代码在 if 条件为真时执行
print('又是美好的一天') # 未缩进的代码在 无论 if 条件为真或者假时都执行
2、if……else 判断
用法:如果 + 需要满足的条件,就 + 将要执行的代码(条件为真),否则( if 条件的对立),就 + 将要执行的代码(条件为假)
示例:
# 输入年龄,判断这个人是否成年
age = int(input('请输入你的年龄:'))
if age >= 18:
print('你已经成年了')
else:
print('你还没有成年')
3、if……elif……else 判断
用法:如果 + 需要满足的条件1,就 + 将要执行的代码(条件1为真),或者 + 需要满足的条件2,就 + 将要执行的代码(条件2为真),否则(条件1与条件2的对立),就 + 将要执行的代码(条件1、2均为假)
- 当 if……elif……else 并存的时候,先执行 if 当中的语句
- 若 if 条件为真,则 elif 和 else 当中的代码不会执行
- 当if条件为假、 elif 当中的条件为真, else 当中的代码不会执行
- 当 if 条件和 elif 条件同时为假, else 当中的代码才会执行
示例:
# 输入1,玩拳皇
# 输入2,玩魂斗罗
# 输入3,玩坦克大战
game = int(input("请输入你想玩的游戏:"))
if game == 1:
print("已经打开拳皇,请开始游戏")
elif game == 2:
print("已经打开魂斗罗,请开始游戏")
elif game == 3:
print("已经打开坦克大战,请开始游戏")
else:
print("没这个游戏。。。")
4、多重判断
用法: 如果同时满足多个条件,就怎么怎么样,需结合 and,or,not 的逻辑判断来完成
示例:
if sex == "男" and age >= 22:
print("你达到了中国法定结婚年龄")
if sex == "男" or age >= 60:
print("你可以单独一个人走在印度的大街上")
if not sex == "男":
print("你不能不戴头巾走在伊朗大街上")
5、嵌套判断
用法: 多层 if 语句的嵌套,下一层的条件和对立条件组成上一层的条件
示例:
# 根据输入的性别和年龄双重条件来判断是否达到法定结婚年龄
sex = input('请输入性别:')
age = int(input('请输入年龄:')) # 让用户输入年龄,并将输入的字符串转为整型
if sex == '男':
if age >= 22: # 这里其实可以使用上一小节里的多重判断
print('你可以结婚')
else:
print('你不可以结婚')
else :
if age >= 20:
print('你可以结婚')
else:
print('你不可以结婚')
AI解释代码: 以上代码使用了条件判断语句来判断一个人是否可以结婚。首先使用 input() 函数获取用户输入的性别和年龄。然后通过条件判断语句来判断是否可以结婚。 如果输入的性别是男性,就进一步判断年龄是否大于等于22岁,如果是,则输出“你可以结婚”,否则输出“你不可以结婚”。 如果输入的性别是女性,则进一步判断年龄是否大于等于20岁,如果是,则输出“你可以结婚”,否则输出“你不可以结婚”。
二、异常
1、什么是异常
当程序运行过程中检测到⼀个错误时,解释器就不再继续向下执行了,这时会出现了⼀些红色的报错提示,这就是所谓的"异常"
异常名称 | 异常描述 |
AttributeError | 对象没有这个属性 |
OSError | 操作系统错误 |
ImportError | 导入模块/对象失败 |
IndexError | 序列中没有此索引(index) |
KeyError | 没有这个键 |
NameError | 未声明/初始化对象 (没有属性) |
SyntaxError | Python 语法错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
Exception | 如不确定异常类型,使用它都可以进行捕获 |
2、异常处理
异常是 Python 对象,表示一个错误。当 Python 代码出现异常时我们需要捕获处理它,否则程序会终止执行
-
捕捉异常可以使用 try / except 语句
-
如果你不想在异常发生时结束你的程序,只需在 try 里捕获它
-
try / except 语句用来检测 try 语句块中的错误,从而让 except 语句捕获异常信息并处理
注意:如果尝试执行的代码的异常类型和要捕获的异常类型不⼀致,则无法捕获异常
示例1:
try:
num = int(input('请输入一个整数:')) # 可能会发生错误的语句
print(num)
except:
print('你输入的不是一个整数') # 发生错误后执行的语句
示例2:如果需要打印异常结果,就把异常赋值给变量并打印
try:
print(1+"1")
except Exception as e:
print(e)
# 运行结果:unsupported operand type(s) for +: 'int' and 'str'
3、异常的 else
else 表示的是如果没有异常要执行的代码
示例:
try:
print('ABC'+123) # 如果注释下一行保留这一行,运行的结果是“456”
print('ABC'+'123') # 如果注释上一行保留这一行,运行的结果是“ABC123 \n 789”
except:
print(456) # 代表如果有异常将跳过异常执行的代码
else:
print(789) # 代表如果没有异常将要执行的代码
AI解释代码: 以上代码包含一个 try-except-else 的代码块。其含义如下: 1、try 块中包含两个语句,第一个语句会抛出 TypeError 异常,因为不能将字符串和数字相加;第二个语句能够正常执行,输出 ABC123。 2、except 块表示当捕捉到异常时需要执行的代码,此处会执行输出 456。 3、else 块表示当 try 块中的语句没有产生异常时需要执行的代码,此处会执行输出 789。 综上所述,当注释第一行并运行代码时,输出结果为 456;当注释第二行运行代码时,输出结果为 ABC123 和 789。
4、异常的 finally
finally 表示的是⽆论是否异常都要执⾏的代码,例如关闭⽂件
示例:
try:
f = open("test.txt","r") # “r”是只读模式
print("没有异常,正常创建")
except:
print("出现异常,重新创建")
f = open("test.txt","w") # “w”是写入模式
finally:
f.close()
5、异常语句的综合练习
我们假设一个场景:你要给你的家人转一笔钱,而转钱这件事需要 “A:把钱从你的账户划出来、B:把这笔钱交给银行、C:银行把这笔钱划给你的家人账户” 三个步骤,如果这三个步骤依次都成功了,那么这个钱就可以转过去了。但是如果其中一个环节出现了问题(也就是异常),那就执行回滚(也就是撤销)的步骤,否则这个钱就可能成了银行的了
示例:
try:
转账第一步
转账第二步 # }这三个步骤就是一个整体
转账第三步
except:
回滚