账户余额有1W元,给20名员工发工资。编号从1到20,从编号1开始,依次领取工资,每人可领1000元领工资时,财务判断员工的绩效分(1-10)(随机生成),若低于5不发,换下一位若不够发,结束发工资。

本文介绍了三种处理公司给20名员工发放工资的Python代码实现,优化了资金管理和绩效判断流程,避免了资金不足时不必要的循环。
"""
某公司,账户余额有1W元,给20名员工发工资。
员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元
领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
如果工资发完了,结束发工资。


提示:
continue用于跳过员工,break直接结束发工资
if判断余额,不要忘记发完工资后,余额减少1000哦

"""

第一种:

"""
某公司,账户余额有1W元,给20名员工发工资。
员工编号从1到20,从编号1开始,依次领取工资,每人可领取1000元
领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5,不发工资,换下一位
如果工资不够发,结束发工资。

提示:
continue用于跳过员工,break直接结束发工资
if判断余额,不要忘记发完工资后,余额减少1000哦

"""
import random

n = 10000  # 账户余额
for i in range(1, 21):
    score = random.randint(1, 10)  # 每次循环产生随机数
    if score < 5:
        print(f"员工{i},绩效分{score},低于5,不发工资,下一位。")
    else:
        if n > 0:
            n -= 1000
            print(f"向员工{i}发放工资1000元,账户余额还剩{n}元")
        else:
            print("工资发完了,下个月领取吧。")
            break

# 这种写法存在一个问题 如果 0<n<1000是还是会继续发工资

# 这会导致n出现小于零的情况


第二种:

import random

n = 10000  # 账户余额
for i in range(1, 21):
    score = random.randint(1, 10)  # 每次循环产生随机数
    if score < 5:
        print(f"员工{i},绩效分{score},低于5,不发工资,下一位。")
        continue  # 到这里可以直接结束这次循环,开始下一次循环

    if n >= 1000:  # n>=1000 排除资金出现负数的概况
        n -= 1000
        print(f"向员工{i}发放工资1000元,账户余额还剩{n}元")
    else:
        print("工资发完了,下个月领取吧。")
        break  # 账户余额不足结束发放
"""
这种写法也也有个小问题:
continue虽然可以提前结束本次循环,直接来是下次循环
但是,当一次循环结束后账户余额小于1000时,
若下个人的score依旧小于5,则会继续判断下一个人的score,
这便造成了不必要的循环,若不使用continue,则不会出现这种情况,
但是循环会出错。
所以我想到了第三种写法,先判断账户余额,再判断绩效,则不会出现这种问题
"""

第三种:

import random

n = 10000  # 账户余额
for i in range(1, 21):
    score = random.randint(1, 10)  # 每次循环产生随机数

    if n >= 1000:  # n>=1000 排除资金出现负数的概况
        if score < 5:
            print(f"员工{i},绩效分{score},低于5,不发工资,下一位。")
            continue  # 到这里可以直接结束这次循环,开始下一次循环
        else:
            n -= 1000
            print(f"向员工{i}发放工资1000元,账户余额还剩{n}元")
    else:
        print("工资发完了,下个月领取吧。")
        break  # 账户余额不足结束发放

个人见解,欢迎指正 :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值