怎么能让输入的薪资,对应上相应的人,并且能打印出来,入门求讲(在此基础上修改)
用字典吧
你输入个人名,在开一个list记录人名, 人名和薪资正好下表对应。
要不你就用字典,薪资对应一个list来记录人名
list
这样子看看
num = 0
salary = []
all_salary = 0
while True:
s = input(f"输入员工{num+1}薪资:(输入0退出)\n")
try:
ss = float(s)
if ss == 0:
print("录入完成,退出")
break
ss = round(float(s), 2)
num += 1
salary.append(ss) # 留两个小数点
all_salary += ss
except ValueError:
print("输入有误!")
i = 1
while i <= num:
print("员工{}的薪资为{}元".format(i, salary[i-1]))
i += 1
print("{}位员工平均薪资为:{}".format(num, all_salary/num))
```
题主的需求:怎么能让输入的薪资,对应上相应的人,并且能打印出来
功能的实现:用字典实现
代码仅供学习交流
salary = {} # 用dict的key,value分别对应姓名,薪资。
while 1:
name = input('输入姓名: ').strip() # 删除前导和尾随空格
if name in 'q|Q': # 用in比用多个==要好,但空串("")会返回真值
print('退出录入')
break # 退出录入
while 1: # 录入薪资
s = input(f'{name}的薪资: {salary.get(name, 0)}\n' # 取薪资原值,注意不能用salary[name], name不存在会抛出异常
f'直接回车录入下一个, 否则将修改{name}的薪资: ').strip()
if s in "":
break # 空串("")跳出到姓名录入
try: # 转浮点数的异常处理
s = round(float(s), 2) # 2位小数
if s > 0:
salary[name] = s # 更新薪资
break # 跳出到姓名录入
raise ValueError(f'薪资{s}<=0, 输入有误') # 薪资<=0,抛出异常
except Exception as e:
print(e) # 处理异常
if slen := len(salary): # 避免除零异常
from pprint import pprint
pprint(salary) # 美化打印
print(f'平均薪资: {sum(salary.values()) / slen:.2f}') # 2位小数
print(f'员工人数: {slen}')