python3之1010.一元多项式求导 (25分)

题目赘述如下:

设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为n*xn-1。)

输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。

输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0


题目解析:

题意不难理解,需要注意的有以下几处:

1.一元多项式,指数为非负数,题目有误导(什么绝对值的),因此若存在常数项,则最后一个数字为0

2.处理数字组成的序列,输出格式易错

3.特殊情况处理,输入一个常数项


if __name__ =="__main__":
    num_lst = list(map(int, input().split()))
    n = len(num_lst)
    out_lst = []

    for i in range(0,n,2):
        xishu = num_lst[i]
        zhishu = num_lst[i+1]
        if zhishu == 0:
            continue

        out_lst.append(str(xishu * zhishu))
        out_lst.append(str(zhishu-1))

    out_str = " ".join(out_lst)
    if out_str:
        print(out_str.strip())

    else:
        print("0 0")

总结一下:

变量命名比较拙劣,凑合看。

注意当输出字符串out_str为空时(输入只含有常数项),需要让结果输出‘0 0’,即零多项式。

python新手可以注意一些常见的用法:如map函数处理输入数字;“ ”.join的用法;等。。。

该代码当然可以再简洁,比如对输入常数项的处理等处,但是最好保持可读性,各位大佬还请多多指教,再优化一下~


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页