day 03 作业(decimal模块)
- 小数样式的字符串,不能直接转换成整型,要先转换成浮点型,再变转换成整型。
- 输入的字符串变成浮点型后不能直接相加。浮点型相加,由于机器进行二进制计算有误差,为了消除误差,需要精确的浮点计算
# 作业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 | 未声明/初始化对象(没有属性) | 变量未声明 |
SyntaxError | python语法错误 | 冒号用了中文的 |
如何让程序正常执行不报错?就算遇到了异常也不停止。
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 作业
"""
任务:
输入一个姓名:当姓名为张三,则输出:该回家吃饭了,如果不是,则输出:我在找张三
需求:
分别使用条件判断和异常捕获完成任务
"""