7-3 jmu-python-分段函数&数学函数

经过努力,哇,这个题终于过了;我先说一下做完这个题的一些总结吧

首先 使用了 eval 这个函数,还有 import math

abs(x) 返回x的绝对值

math.sqrt(x) 返回x的平方根

如果想进位的我们可以先乘以10000,然后取余判断,然后再处以10000

print("{:.3f}".format(x))

这个会打印x的小数点后三位(这个会进行进位的,如果小数点第4位大于等于0.5,则小数点第三位会进位)

e = math.e

pow(x,b) 会算出x的b次幂

接下来是最坑的一个地方

log1p(99) 这是算的ln(99)??,其实不是的这是算的ln(100),巨坑,我就卡在这个地方了

ln(100) = 4.60517018....

ln(99) = 4.598501345....

而log1p(99) = 4.60517018. == ln(100)

所以当我们需要算ln(x)的时候,我们得log1p(x-1),这样才能得到我们正确的答案

接下来是这个题的代码,代码简陋,希君勿笑

import math
import decimal
x = eval(input())
if abs(x) < 1:
    result = math.sqrt(2-2*x)
    # print(result)
    # 0.0000453999
    # result = result * 10000
    # r = result % 10
    # if r >= 5:
    #     result = result + 10
    # result = result / 10000
    print("f({:.3f})={:.3f}".format(x, result))
elif x <= -1:
    result = math.e

    result = pow(result,x)
    # print(result)
    # 0.0000453999
    # result = result * 10000
    # r = result % 10
    # if r >= 5:
    #     result = result + 10
    # result = result / 10000
    print("f({:.3f})={:.3f}".format(x, result))
else:
    result = math.cos(x) + x*x
    result = result*1.0000/(2.5 + abs(x+math.log1p(99)))
    # print((math.log1p(99)))

    # result = result * 10000
    # print(result)
    # r = result % 10

    # if r >= 5:
    #     result = result + 10
    # result = result / 10000
    # print("{:.4f}".format(result))
    # print("{:.3f}".format(result))
    print("f({:.3f})={:.3f}".format(x, result))

# c = 669 / 100
# print(c)
# print("{:.1f}".format(c))

exit(0)

 

你可能感兴趣的:(PTA,题解)