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

2024-01-08 14:20:47

?
" " "
某公司,账户余额有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  # 账户余额不足结束发放

个人见解,欢迎指正 :)

?

文章来源:https://blog.csdn.net/m0_59399997/article/details/135434336
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。