题目赘述如下:
设计函数求一元多项式的导数。(注: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的用法;等。。。
该代码当然可以再简洁,比如对输入常数项的处理等处,但是最好保持可读性,各位大佬还请多多指教,再优化一下~