Py学习记录
Python 常规学习
Python学习笔记(一)
Python学习笔记(二)
Python学习笔记(三)
Python学习笔记(四)
Python学习笔记(五)
Python学习笔记(六)
Python学习笔记(七)
Python习题(一)
Python习题(二)
Python习题(三)
Python习题(四)
Python习题(五)
Python常见Bug
Python编程环境
Python-依赖安装(三方库)
Python-VS Code
pip-换源
py 程序转 exe
Python-打开选择文件对话框
Python 项目
Python-密码学
Python-与佛伦禅
Python-喵语翻译
Python-翻译服务器
Python-邮件发送
Python-自动签到
Python-自动签到(Post请求)
Python-自动签到(模拟操作)
Python-图片添加二维码
Python-数据可视化
Python-端口扫描器
Python-未测试项目
Python-虚拟环境
Python-临时环境
Python-venv虚拟环境
Python-Conda
Python-OpenCV
OpenCV-人脸识别
Python-PyTorch
本文档使用 MrDoc 发布
-
+
首页
Python习题(二)
## 闪电快递    ### 闪电快递v1 ```Python # 配送次数计算 def calculate_num(size,person): #配送次数计算过程 num = size * 100 / 20/person print('%.1f个标准集装箱大的快递项目,使用%d位快递员配送,则需要配送次数%d次:' %(size,person,num)) # 快递员数计算 def calculate_person(size,num): #快递员数计算过程 person = size *100 /20/ num print('%.1f个标准集装箱大的快递项目,%d次配送完毕,则需要快递员数:%d位' %(size,num,person)) calculate_num(2,2) calculate_person(0.6,1) ```  ### 闪电快递v2  无论小数点之后是点几,都要向上进一取整数。也就是1.5转成2,1.9转成2,1.1转成2,即对人数需要向上取整  `math.ceil(),数字向上取整,使用需要先加载 import math` ```Python import math # 配送调配计算 # 设置默认参数 def calculate_job(size=1,person=None,num=None): if(person !=None)and(num==None): #配送次数计算过程 num = math.ceil(size * 100 / 20/person) print('%.1f个标准集装箱大的快递项目,使用%d位快递员配送,则需要配送次数%d次' %(size,person,num)) elif(person==None)and(num!=None): #快递员数计算过程 person = math.ceil(size *100 /20/ num) print('%.1f个标准集装箱大的快递项目,%d次配送完毕,则需要快递员数:%d位' %(size,num,person)) calculate_job(size=1.5,person=2) calculate_job(size=0.5,num=1) ```  ### 闪电快递v3 每次调用函数的时候还要输入参数名和参数值,太麻烦,我们可以使用选项来提供个简单交互  ```Python import math types = int(input('请选择需要计算的工作:1-配送次数计算,2-快递员数计算,请选择')) sizes = float(input('请输入项目大小:1代表标准,还可以输入其他倍数或小数')) if types ==1: others = int(input('请输入投入的快递员数,请输入整数')) else: others = int(input('请输入快递次数,请输入整数')) # 配送调配计算 # 设置默认参数 def calculate_job(types,sizes,others): print('计算结果如下') if types ==1: #配送次数计算过程 num = math.ceil(sizes * 100 / 20/others) print('%.1f个标准集装箱大的快递项目,使用%d位快递员配送,则需要配送次数%d次' %(sizes,others,num)) elif types==2: #快递员数计算过程 person = math.ceil(sizes *100 /20/ others) print('%.1f个标准集装箱大的快递项目,%d次配送完毕,则需要快递员数:%d位' %(sizes,others,person)) calculate_job(types,sizes,others) ```   项目大小为2.2倍,快递员数为1时。 计算工时:需要配送次数 = 2.2*100/20/1 ,得到的结果应该是11次,可是打印出来却是12次 ```Python import math print(2.2*100/20) print(math.ceil(2.2*100/20)) ```  明明可以整除的,造成还存在小数部分,然后向上取整后得到12 还是老问题,将数字都转换二进制再进行计算,得到的结果是一个二进制,造成数字增加 `math库中的round函数` ``` import math print(round(2.2*100/20,2)) ```Python  round()函数是python中提供解决小数的保留问题。此函数格式round(x ,n) x表示小数,n表示需要保留的小数位 > 如果小数保留位大于实际有效的,多余的会被舍去,如11.0000000保留两位小数,那么会显示11.0 ```Python import math types = int(input('请选择需要计算的工作:1-配送次数计算,2-快递员数计算,请选择')) sizes = float(input('请输入项目大小:1代表标准,还可以输入其他倍数或小数')) if types ==1: others = int(input('请输入投入的快递员数,请输入整数')) else: others = int(input('请输入快递次数,请输入整数')) # 配送调配计算 # 设置默认参数 def calculate_job(types,sizes,others): print('计算结果如下') if types ==1: #配送次数计算过程 num = math.ceil(round((sizes * 100 / 20/others),2)) print('%.1f个标准集装箱大的快递项目,使用%d位快递员配送,则需要配送次数%d次' %(sizes,others,num)) elif types==2: #快递员数计算过程 person = math.ceil(round((sizes *100 /20/ others),2)) print('%.1f个标准集装箱大的快递项目,%d次配送完毕,则需要快递员数:%d位' %(sizes,others,person)) calculate_job(types,sizes,others) ```  优化利用函数来精简  ```Python import math def BOSS_input(): # 输入内容 types = int(input('请选择需要计算的工作:1-配送次数计算,2-快递员数计算,请选择')) sizes = float(input('请输入项目大小:1代表标准,还可以输入其他倍数或小数')) if types ==1: others = int(input('请输入投入的快递员数,请输入整数')) else: others = int(input('请输入快递次数,请输入整数')) return types,sizes,others #这里返回一个数组 #计算工作量 def calculate_job(data_input): #获取参数数值 types = data_input[0] sizes = data_input[1] others = data_input[2] print('计算结果如下') if types ==1: #配送次数计算过程 num = math.ceil(round((sizes * 100 / 20/others),2)) print('%.1f个标准集装箱大的快递项目,使用%d位快递员配送,则需要配送次数%d次' %(sizes,others,num)) elif types==2: #快递员数计算过程 person = math.ceil(round((sizes *100 /20/ others),2)) print('%.1f个标准集装箱大的快递项目,%d次配送完毕,则需要快递员数:%d位' %(sizes,others,person)) #主函数 def res(): data_input = BOSS_input() calculate_job(data_input) #调用主函数 res() ``` 
造物者W
2022年1月11日 12:21
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码