" " "
某公司,账户余额有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出现小于零的情况 第二种: " " " 第三种: 个人见解,欢迎指正 :)
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 # 账户余额不足结束发放