|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
"""
【操作】要求输入员工的薪资,若薪资小于0则重新输入。
最后打印出录入员工的数量和薪资明细,以及平均薪资
"""
- empNum = 0
- salarySum = 0
- salarys = []
- while True:
- s = input("请输入员工的薪资(按Q或q结束)")
- if s.upper() == 'Q':
- print("录入完成,退出")
- break
- if float(s) < 0:
- continue
- empNum += 1
- salarys.append(float(s))
- salarySum += float(s)
- print(f'员工人数: 总计 {empNum} 人')
- print('录入薪资: ',salarys)
- print(f'平均薪资: {salarySum/empNum:.2f}')
复制代码
我想让录入薪资的列表各元素保留2位小数(不能是字符串),能否实现?
= RESTART: D:\Users\Administrator\Desktop\新建 文本文档.py
请输入员工的薪资(按Q或q结束)1
请输入员工的薪资(按Q或q结束)2
请输入员工的薪资(按Q或q结束)3
请输入员工的薪资(按Q或q结束)4
请输入员工的薪资(按Q或q结束)5
请输入员工的薪资(按Q或q结束)q
录入完成,退出
员工人数: 总计 5 人
录入薪资: [1.0, 2.0, 3.0, 4.0, 5.0]
平均薪资: 3.00
本帖最后由 isdkz 于 2023-1-6 17:08 编辑
他的输出形式是由底层的C代码来决定的,既然 1.00 和 1.0 的值都一样,他就没必要显示 1.00,
这样显得有点多余,你在 python 中 print 一下 1.00 你就可以看到输出的结果会变成 1.0,
当然,如果你对 c 语言比较熟悉的话,你可以去修改 python 的源码再重新编译,以达到你想要的输出格式,
除此之外 python 也提供了相应的接口,可以让我们改变一些默认的行为,那就是魔法方法。
其中 __str__ 就是在输出的时候会被调用的魔法方法,你可以通过重写这个魔法方法改变它默认的输出行为。
对于你的诉求,通过重写列表的 __str__ 方法来实现
- class Nlist(list):
- def __str__(self):
- return f'[{", ".join(map(lambda x: f"{x:.2f}", self))}]'
- # 一、新加上面几行代码
- empNum = 0
- salarySum = 0
- salarys = Nlist() # 二、改了这里
- while True:
- s = input("请输入员工的薪资(按Q或q结束)")
- if s.upper() == 'Q':
- print("录入完成,退出")
- break
- if float(s) < 0:
- continue
- empNum += 1
- salarys.append(float(s))
- salarySum += float(s)
- print(f'员工人数: 总计 {empNum} 人')
- print('录入薪资: ',salarys)
- print(f'平均薪资: {salarySum/empNum:.2f}')
复制代码
|
|