背景需求
设计过程:
AI写了很多的答案,但是都不正确
于是我去查看了网上的正确答案——47.41美元
此外,题目的0.99涉及了浮点数,非整数,无法range遍历
最后终于有一个答案正确的代码
通过反复测试,终于写出一个适合的代码
代码展示:
'''
3、他的第一份工作
“嗨!约翰尼斯,”星期天乔在街上遇到一个年轻人向他喊道,“好久不见,我听说你开始工作啦!”
“几个星期了,”约翰尼斯回答道,“这是一份计件工作,我干得挺好的。第一星期我得了四十多美元,而且后来每个星期都比前一个星期多赚99美分。”
“这真是巧事!”乔笑了笑并继续说,“愿你一如继往都能这样!”
“我估计用不了多久我一个星期便能赚到60美元,”年轻人告诉乔,“自从开始工作到现在,我已经赚了整整407美元。这的确不坏!”
试问,约翰尼斯第一个星期赚了多少?
# '''
# 根据AI推荐的写法
'''
# total_earning = 407。00
# x = (total_earning - (1 + 2 + 3 + 4 + 5 + 6+7)*0.99 ) / 8
# print(" @ 的值为:", x, "美元")
# 正好等于47.41美元
根据其中“周数累加”的方法,推算第一周的工资
'''
# 一周40多美元(不确定数字),一共赚了407,大约10周
n=int(407/40)
# 可能有10周,周数累加
day=0
days=[]
result1=[]
result2=[]
result3=[]
# [1,2,3,4,5,6,7,8,9,10]
for i in range(n):
day+=1
days.append(day)
# print(sum(days))
c=int(sum(days))
# 1
# 3
# 6
# 10
# 15
# 21
# 28
# 36
# x = (total_earning - (1 + 2 + 3 + 4 + 5 + 6+7)*0.99 ) / 8
# 用上面的公式进行倒推提取周数的累加数字和除以的数字(周数+1)
x=(407.00-c*0.99)/(int(len(days)+1))
if 40
最终结果:
代码解析:
这种方法有点类似于52周递增存钱法。
但是它是根据总数倒退初始金额(第一周的存款金额)
主要关键是根据总金额、倒退周次(存了几周)和递增数量(每周增加0.99美元。
因为不知道周次,所以我将总金额除以大致的工资数(407/40)在0-10之间遍历提取周数,然后减法得到可能的第1周数量,并限制在40-50之间。本题有两个40多的工资数,所以再次通过公式验证,排除不符合的答案。
延伸题目
用这种方法可以推算公积金第一年第一个月缴费多少(获得精确数字)
小明公积金账户有235200公积金。第1年每月月大约是2000多公积金,此后一年递增200元”
小明第一年公积金每月是多少,一共交了几年?
需要乘以12月
'''
3、公积金账户
小明公积金账户有235200公积金。第1年每月月大约是2000多公积金,此后一年递增200元”
小明第一年公积金多少,一共交了几年?
# '''
# 一年12个月
n=int(235200/12/2000)
print(n)# 9年
all=235200.00
zj=200.00
# 可能有10周,周数累加
day=0
days=[]
result1=[]
result2=[]
result3=[]
# [1,2,3,4,5,6,7,8,9,10]
for i in range(n):
day+=1
days.append(day)
# print(sum(days))
c=int(sum(days))
x=(all-c*zj*12)/((int(len(days)+1))*12)
if 2000
小明初始第一年1月公积金是2200元,第一年一共12次,每年递增200元*12月,到了第7年12月,正好获得235200元公积金。