Python 基础 04 条件判断 & 异常处理

day 03 作业(decimal模块)

  1. 小数样式的字符串,不能直接转换成整型,要先转换成浮点型,再变转换成整型。
  2. 输入的字符串变成浮点型后不能直接相加。浮点型相加,由于机器进行二进制计算有误差,为了消除误差,需要精确的浮点计算
# 作业2,使用三次input输入三个数,然后相加求和

num1 = input("请输入一个数:")
num2 = input("请输入一个数:")
num3 = input("请输入一个数:") 
# 如果使用字符串相加,则是直接拼接,因此转换成浮点型
num1 = float(num1)
num2 = float(num2)
num3 = float(num3)

print(num1 + num2 + num3)

这样不会出问题,不会遇到精度问题。

但如果其中一个类型变成整型

num1 = input("请输入一个数:")
num2 = input("请输入一个数:")
num3 = input("请输入一个数:") 

num1 = float(num1)
num2 = float(num2)
num3 = int(num3)

print(num1 + num2 + num3)

则会输出类似于

6.300000000000001

遇到了python的精度问题。(运算在计算机中进行二进制运算,十进制的小数需要将十进制数转换成二进制进行运算,再变成十进制显示出来,出现了精度缺失)(python默认使用17位小数的精度)

因此使用decimal模块:decimal意为十进制,提供十进制浮点运算支持。给decimal传递 整型 或者 字符串 参数(不能是浮点型)

# 作业2,使用三次input输入三个数,然后相加求和

from decimal import *     # 或者直接:import decimal
# 文件名不要以 decimal.py 命名(不要以python的任何标准库第三方库命名,因为会让计算机默认你要导入你自己
# 直接导入了 decimal模块 里的所有函数,然后使用其中的 Decimal函数 构建十进制浮点数,然后可以进行十进制运算
num1 = Decimal(input("请输入一个数:"))
num2 = Decimal(input("请输入一个数:"))
num3 = Decimal(input("请输入一个数:"))

# Decimal函数 的对象类型是 decimal.Decimal 
print(type(num1))    # 会输出:<class 'decimal.Decimal'>

print(num1 + num2 + num3)

补充学习来源:https://finthon.com/python-decimal/

条件判断

if & else语句

pyhton是严格遵循缩进的语言

使用情况如下:

如果有两种情况

male = input("请输入你的性别:")
age = int(input("请输入你的年龄:"))

if sex == "male":
    print("你是男孩。")
else:
    print("你是女孩。")

如果有两种以上的情况

male = input("请输入你的性别:")
age = int(input("请输入你的年龄:"))

if sex == "male":
    print("你是男孩。")
elif sex == "female":
    print("你是女孩。")
else:
    print("你不是男孩也不是女孩。")

条件判断的嵌套

male = input("请输入你的性别:")
age = int(input("请输入你的年龄:"))

if sex == "male":
    if age >= 22:
        print("可以结婚。")
else:
    if age >= 20:
        print("可以结婚。")

异常处理

如何看懂报错?控制台返回的报错就是异常。

检测到错误时,解释器就没办法继续执行。

异常会影响程序的正常执行,如果不解决就没办法执行

例如:

异常名称描述举例
NameError未声明/初始化对象(没有属性)变量未声明
SyntaxErrorpython语法错误冒号用了中文的

如何让程序正常执行不报错?就算遇到了异常也不停止。

try/except语句

使用 try/except语句 ,检测到 try语句中的错误,可以让except 中的语句正常执行。

如果try 出错了,就会执行except中的语句。

num1 = 100

try:
    print(num1)
    print(num2)     # 有问题
except:
    print("程序有问题。")   # 执行这一句

异常的else

表示没有异常需要执行的代码

num1 = 100

try:
    print(num1)    # 没问题
except:
    print("程序有问题。")   # 不执行
    
else:
    print("哈哈哈。")    #会执行这一句

异常的finally

不管是否异常都要执行的语句

num1 = 100

try:
    print(num1)
    print(num2)     # 有问题×
except:
    print("程序有问题。")   # 执行这一句
    
finally:
    print("我一定会执行。")  # 也执行这一句
    
num1 = 100

try:
    print(num1)    # 没问题√
except:
    print("程序有问题。")   # 不执行
    
else:
    print("哈哈哈。")    #会执行这一句
    
finally:
    print("我一定会执行。")  # 同样执行这一句

这个语句的作用

数据库(关系型数据库(mysql),非关系型数据库(redis)),就是存储数据的仓库。

例如,转账的时候,从一千块钱的银行卡转到五百元的银行卡,代码块有可能发生错误(我转出去了,但你没收到,于是钱归银行了?),于是就可以用这个语句发生回滚

转账成功需要几个步骤,可以称之为一个事务

事务的特点:要么都成功,要么都失败。

如果事务中的一个环节出现了问题(异常),那么就执行回滚的操作。

day 04 作业

"""
任务:

输入一个姓名:当姓名为张三,则输出:该回家吃饭了,如果不是,则输出:我在找张三

需求:

分别使用条件判断和异常捕获完成任务
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值