练习一:计算水仙花数 提示:水仙花数是一个三位数,三位数各位的立方之和等于三位数本身。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 '''