请问各位大佬一个问题,有关循环的
本帖最后由 GlacierGao 于 2021-3-10 16:58 编辑遇到了一道小题,题目是这样的:
工作日模式要努力到什么水平,才能与每天努力1%一样?
A君: 一年365天,每天进步1%,不停歇
B君: 一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?
标答的代码是这样的:
def dayUP(df):
dayup = 1.0
for i in range(365):
if i % 7 in :
dayup = dayup * (1 - 0.01)
else:
dayup = dayup * (1 + df)
return dayup
dayfactor = 0.01
while (dayUP(dayfactor)<37.78):
dayfactor += 0.001
print("每天的努力参数是: %.3f."%dayfactor)
(37.78就是算出来的A君的“努力成果”,标答结果是0.019)
想对标答稍作改动,我的答案是这样的:
def dayup(x):
dream = 1
for i in range(365):
if i % 7 in :
dream *= 0.99
else:
dream *= (x + 1)
return dream
a = 1
for i in range(365):
a *= 1.01
df = 0.01
while df <= 0.03:
if dayup(df) == a:
break
else:
df += 0.001
print('每天的努力参数是: %.3f' % df)
但是结果出来是0.030;我试了很多遍,while条件小于等于多少,就输出多少。感觉应该是最后的循环里有问题
跪谢各位大佬{:10_266:} 列个方程式
x^5*0.99^2 == 1.01^7
求 x 你确定要让浮点数和浮点数比较?
我记得这个题就是求得最少,是个近似值 巴巴鲁 发表于 2021-3-10 16:50
你确定要让浮点数和浮点数比较?
我记得这个题就是求得最少,是个近似值
标答里不也是浮点数和浮点数比嘛{:10_291:} qq1151985918 发表于 2021-3-10 16:38
列个方程式
x^5*0.99^2 == 1.01^7
这个方程的原理我应该懂,但是解的方式是和标答一样,用循环一点一点试吗? GlacierGao 发表于 2021-3-10 17:08
标答里不也是浮点数和浮点数比嘛
答案那个是小于,
浮点数和浮点数比较是不推荐判断他们是否相等的,因为你看着相等,在计算机中存储时是不相等的,涉及精度了 巴巴鲁 发表于 2021-3-10 17:12
答案那个是小于,
浮点数和浮点数比较是不推荐判断他们是否相等的,因为你看着相等,在计算机中存储时是 ...
噢,那我比不出来的原因,可能就是因为这个? GlacierGao 发表于 2021-3-10 17:15
噢,那我比不出来的原因,可能就是因为这个?
还有可能就是计算出来的值和1.01^365不相等{:10_333:}
但是能不用浮点数==浮点数这种操作尽量别用 GlacierGao 发表于 2021-3-10 17:09
这个方程的原理我应该懂,但是解的方式是和标答一样,用循环一点一点试吗?
import math
print(math.pow((1.01**7)/(0.99**2), 1.0/5))
巴巴鲁 发表于 2021-3-10 17:18
还有可能就是计算出来的值和1.01^365不相等
但是能不用浮点数==浮点数这种操作尽量别用
谢谢谢谢!{:10_254:} qq1151985918 发表于 2021-3-10 17:35
哈哈是这样,谢谢啦! 11 の凉介 发表于 2021-3-10 18:38
11
请问什么意思呢? 学习了!!
页:
[1]