【PAT B1010】一元多项式求导
第一种方法:边计算边输出
将数组以步长为2进行循环,并计算多项式系数。如果系数不是0就输出该项和下一项,系数为0不进行任何操作。但是这种方法在输出时怎么最后不输出空格呢?尝试用下标判断是否是输出的最后一项,但是后面的项可能是0,此时无法获知后面是否有0项。
参考了这段c++代码,原来可以通过判断第一个控制输出,修改代码:
a = list(map(int,input().split()))
flag = 0
for i in range(0,len(a)-1,2):
a[i] = a[i]*a[i+1]
if a[i] != 0:
if flag == 0:
print(f"{a[i]} {a[i+1]-1}",end="")
flag = 1
else:
print(f" {a[i]} {a[i+1]-1}",end="")
if flag==0:
print("0 0")
第二种方法:
开辟另外一个数组保存符合条件的多项式
a = list(map(int,input().split()))
result = [ ]
for i in range(0,len(a)-1,2):
a[i]=a[i]*a[i+1]
if a[i] != 0:
a[i+1] = a[i+1]-1
result.append(str(a[i]))
result.append(str(a[i+1]))
if result:
print(" ".join(result))
else:
print("0 0")
注意range的运用。这里我懒得循环判断输出,将数字转换为字符串存到数组里了。
一开始部分通过用例,检查发现原来我没有对题目给的零项多项式进行特殊处理。注意列表类型的变量名可以直接表示其是否为空,不用通过长度等函数判断(if result:)。
第三种方法:
在原数组上修改元素,当系数为0时将指数也设置成0,最后删除所有0项->发现错误,只是删除系数为0的项
Python循环数组的几种好用的方法_Python热爱者的博客-CSDN博客_python 循环数组
python删除数组元素remove_python如何对数组删除元素_weixin_39724793的博客-CSDN博客
这是一段没成功的代码:
a = list(map(int,input().split()))
n = 0
for i in range(0,len(a)-1,2):
a[i] = a[i]*a[i+1]
if a[i] != 0:
a[i+1] = a[i+1]-1
else:
a[i+1] = 0
n = n+1
for i in range(0,len(a)-1,2):
# for j in range(n)
# del a[i]
# del a[i+1]
if a:
for i in range(len(a)-1):
print(f"{a[i]}",end=" ")
print(a[len(a)-1])
else:
print("0 0")
一开始发现不能删除所有0,又想到以步长为2去删除,如果某次循环中系数为0则删除它和后一项。但是写代码的过程中发现这样数组也在动态改变,所以最后在原数组上操作的方法没成功。