python循环语句的综合练习

练习一:计算水仙花数
提示:水仙花数是一个三位数,三位数各位的立方之和等于三位数本身。153就是水仙花数。


# 用for循环语句
print('100到1000之前的所有水仙花数如下:')
for i in range(100,1000):  # 注意要把取值范围写成100-1000,不要写成(1,1000),要不让“1”也是水仙花数
    r=i//100
    s=(i-r*100)//10
    t=i-r*100-s*10
    if i==(r**3+s**3+t**3):
        print(f"{i}是水仙花数")

# 用while循环
print('100到1000之前的所有水仙花数如下:')
number = 100
while number < 1000:
    # 取百位数字 371 // 100 = 3
    x = number // 100
    # 取十位数 371 // 10 =3 7; 37 % 10 = 7
    y = number // 10 % 10
    # 取个位数 371 % 10 = 1
    z = number % 10
    # 判断个位、十位、百位的数字立方和等于原数
    if x ** 3 + y ** 3 + z ** 3 == number:
        print(f'{number}是水仙花数')
    # 需要设置number每次加一
    number += 1
'''
两次的输出结果如下:
100到1000之前的所有水仙花数如下:
153是水仙花数
370是水仙花数
371是水仙花数
407是水仙花数
100到1000之前的所有水仙花数如下:
153是水仙花数
370是水仙花数
371是水仙花数
407是水仙花数
'''
练习二:发工资
某公司,账户余额有1万元,给20名员工发工资。
·员工编号从1到20,从编号1开始,一次领取工资,每人可以领取1000元
·领工资时,财务判断员工的绩效分(1-10)(随机生成),如果低于5分,不发工资,换下一位
·如果工资发完了,结束发工资。

提示:
1、使用循环对员工依次发放工资
2、continue用于跳过员工,break直接结束发工资
3、随机数可以用:
import random
num=random.randint(1,10)

# 自己尝试写的代码,还是对continue和break语法不够熟练,没有应用
account=10000 #定义一个工资账户变量
for i in range(1,21): # 因为是20个员工,range()函数的结束字段不显示,所以范围为(1,21)
    import random
    num = random.randint(1, 10)
    if num<5:
        print(f"员工{i}号,绩效为:{num}分,不发放工资")
    else:
        num>=5
        account -= 1000
        print(f"员工{i}号绩效为:{num}分,发放工资1000元,此时工资账户余额为{account}元")
        if account<1000:
            print(f"小于1000元,该员工累计下月发放工资.")
            break  # 注意break 的层级,就是不想打印上一句话。
'''
代码解析:
员工1号绩效为:7分,发放工资1000元,此时工资账户余额为9000元
员工2号绩效为:7分,发放工资1000元,此时工资账户余额为8000元
员工3号绩效为:10分,发放工资1000元,此时工资账户余额为7000元
员工4号绩效为:5分,发放工资1000元,此时工资账户余额为6000元
员工5号,绩效为:3分,不发放工资
员工6号绩效为:10分,发放工资1000元,此时工资账户余额为5000元
员工7号绩效为:6分,发放工资1000元,此时工资账户余额为4000元
员工8号绩效为:6分,发放工资1000元,此时工资账户余额为3000元
员工9号绩效为:10分,发放工资1000元,此时工资账户余额为2000元
员工10号,绩效为:4分,不发放工资
员工11号绩效为:6分,发放工资1000元,此时工资账户余额为1000元
员工12号绩效为:6分,发放工资1000元,此时工资账户余额为0元
小于1000元,该员工累计下月发放工资.
因为发放完员工12号后,工资账户余额为0元,所以13-20号员工的本月工资就同一再下月计算了。
'''
# heimacx的标准答案如下:
# 定义账户余额变量
money=10000
# for循环对员工发放工资
for i in range(1,21):
    import random
    score = random.randint(1, 10)
    if score <= 5:
        print(f"员工{i},绩效分为{score},不满足,不发放工资,下一位")
        # continue 跳过发放
        continue

    #要判断余额足不足
    if money>=1000:
        money-=1000
        print(f"员工{i},绩效分为{score},满足条件发放工资1000,公司账户余额:{money}")
    else:
        print(f"余额不足,当前余额:{money}元,不足以发放工资,不发了,下个月再来")
        # break 结束发放
        break
'''
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值