目录
天天向上的力量
题目
工作日模式要努力到什么水平,才能与每天努力1%一样?
-A君: 一年365天,每天进步1%,不停歇
-B君: 一年365天,每周工作5天休息2天,休息日下降1% ,要多努力呢?
每周工作5天休息2天,计算
要求如下:
(1) 一年365天,以第0天的能力值为基数,记为1.0;
(2) 当好好学习时,能力值相比前一天提高1%;当没有学习时,由于遗忘等原因能力值相比前一天下降1%;
工作日的努力参数是多少才能与每天努力1%一样。
输出结果格式如下:(其中结果保留小数点后三位,冒号后有一个空格)
输出示例:
工作日的努力参数是: 0.019
答案
number1 = pow(1.01,365)
def number2(num):
number2 = 1
for i in range(365):
if i%7 in [0,6]:
number2 *= 1 - 0.01
else:
number2 *= 1 + num
return number2
numberfactor = 0.01
while number2(numberfactor) < number1:
numberfactor += 0.001
print("工作日的努力参数是: {:.3f}".format(numberfactor))
解析
1.number1 = pow(1.01,365)是为了算出A君一年会进步多少,这里用到了一个数值运算的函数。
2.def是define的缩写,是用来自定义函数的。以一个简单的代码为例:
比如,自定义一个函数f(x)=3*x,就写为:
def f(x):
return 3*x
这样就完成了一个简单的函数定义,这里的变量是f(x)中的x,想要得到的是f(x).
以此类推,原题中定义的函数是dayup(num),这里的变量是num,想要得到的是number2,number2代表B君一年进步多少。
自定义函数里面就是一个算number2的过程:
先定义number2的初始值
再巧用一个for循环,i表示365天里的第几天
i%7代表第i天是星期几,因为它本身是一个取余的操作符
如果i%7等于0或者6就说明是周末,就不用进步,就会退步0.01;如果等于别的,就是工作日,就会进步num,但是我们也不知道num是多少,不过num的初始值一定大于0.01
3.自定义函数介绍完毕,出来就是一个numberfactor的初始值,这个值就是后来的num,就是努力参数,我们要把numfactor的值带入到函数中去。
4.numberfactor是要变化滴,他变化的条件就是当刚刚定义的函数结果 = number1的时候,就不再增加了,否则就会一直加0.001
这就是这段函数的解释:
while number2(numberfactor) < number1:
numberfactor += 0.001
5.最后就是输出啦,格式化一下,精确到小数点后三位。
三次方格式化
题目
获得用户输入的一个数字,可能是整数或浮点数,a,计算a的三次方值,并打印输出。
输出结果采用宽度20个字符、居中输出、多余字符采用减号(-)填充。
如果结果超过20个字符,则以结果宽度为准。
输入示例
10
输出示例
--------1000--------
代码
NumberStr = eval(input())
print("{:-^20}".format(pow(NumberStr, 3)))
解析
NumberStr = eval(input()) #第一步获取用户的输入,用eval()将用户的输入变成数字
print("{:-^20}".format(pow(NumberStr, 3)))#pow(NumberStr,3)代表NumberStr的3次方,然后我们将这个数字用format格式化,{:-^20}中'^'代表居中,用‘-’填补空白,整个长度为20。