Python 添加到多项式
在这段代码中有四个测试用例。三个测试用例已成功拍摄,但第四个测试用例未获得预期输出。请帮帮我 我在第4个测试用例中得到了0x^3作为输出,但预期的输出为0 加两个多项式 给定两个多项式A和B,编写一个程序,将给定的两个多项式A和B相加 输出 打印多项式A和B的加法 如果多项式次数为零,且常数项也为零,则只需打印0来表示多项式 对于术语Cix^Pi,如果术语Ci的系数为1,只需打印x^Pi而不是1x^Pi。解释 我们需要所有的测试用例都能在代码运行时出现。我想要所有测试用例的精确输出 下面的url链接中有问题和测试用例的输入和输出Python 添加到多项式,python,Python,在这段代码中有四个测试用例。三个测试用例已成功拍摄,但第四个测试用例未获得预期输出。请帮帮我 我在第4个测试用例中得到了0x^3作为输出,但预期的输出为0 加两个多项式 给定两个多项式A和B,编写一个程序,将给定的两个多项式A和B相加 输出 打印多项式A和B的加法 如果多项式次数为零,且常数项也为零,则只需打印0来表示多项式 对于术语Cix^Pi,如果术语Ci的系数为1,只需打印x^Pi而不是1x^Pi。解释 我们需要所有的测试用例都能在代码运行时出现。我想要所有测试用例的精确输出 下面的url
def check_polinom(polinom):
选中=[]
而polinom:
tmp=polinom.pop(0)
如果polinom:
对于范围内的i(len(polinom)-1,-1,-1):
如果polinom[i][0]==tmp[0]:
tmp[1]+=polinom[i][1]
流行音乐(一)
选中。追加(tmp)
退票
def添加策略(策略1、策略2):
添加=[]
而pol_1或pol_2:
如果Polu_1:
tmp=pol_1.pop(0)
对于范围内的i(len(pol_2)):
如果pol_2[i][0]==tmp[0]:
tmp[1]+=pol_2[i][1]
pol_2.pop(一)
打破
其他:
tmp=pol_2.pop(0)
added.append(tmp)
added.sort(reverse=True)
返回(已添加)
def print_polinom(polinom):
s=“”
如果polinom:
如果polinom[0][1]<0:
s+='-'
polinom[0][1]=-polinom[0][1]
如果polinom[0][1]==1:
如果polinom[0][0]==0:
s+=str(polinom[0][1])
elif polinom[0][0]==1:
s+='x'
其他:
s+='x^'+str(polinom[0][0])
其他:
如果polinom[0][0]==1:
s+=str(polinom[0][1])+'x'
elif polinom[0][0]==0:
s+=str(polinom[0][1])
其他:
s+=str(polinom[0][1])+'x^'+str(polinom[0][0])
polinom.pop(0)
对于polinom中的el:
如果el[1]==0:
持续
elif el[1]<0:
s+='-'
el[1]=-el[1]
其他:
s++='+'
如果el[1]==1:
如果el[0]==0:
s+=str(el[1])
elif el[0]==1:
s+='x'
其他:
s+='x^'+str(el[0])
其他:
如果el[0]==1:
s+=str(el[1])+'x'
elif el[0]==0:
s+=str(el[1])
其他:
s+=str(el[1])+'x^'+str(el[0])
印刷品
def input_data():
尽管如此:
尝试:
n=int(输入())
打破
除:
打印('输入整数N')
持续
a=列表()
i=1
当n>i-1时:
尝试:
tmp=list(映射(int,(input()).split())
如果len(tmp)!=2:
打印('输入两个空格分隔的整数')
持续
a、 附加(tmp)
i+=1
除:
打印('输入两个空格分隔的整数')
归还
a=检查polinom(输入数据())
b=检查策略(输入数据())
c=添加策略(a,b)
印刷政策(c)
您的代码似乎没有清除0系数。应在处理过程中添加一个附加阶段。一旦得到了多项式的最终系数,就应该进行两次调整。您已经描述了一个,它将系数为1的项从形式1x转换为简单的x。另一个是当你把0x变成零的时候。然后你只需要小心地输出一些东西,所以你不应该把每一个术语都变成一无所有。这就是为什么有一个描述将其表示为0
因此,最简单的方法是:
if is_zero_polinom(polinom):
打印('0')
返回
您好,上一个测试用例的结果是什么?先生,我在第四个测试用例中得到了0x^3作为输出,但预期输出为0。任何人请帮助meSir,我可以将此代码放入我的代码中,先生。先生,如果你不是我的,请把这个函数放在代码中,然后发布整个c
def check_polinom(polinom):
checked = []
while polinom:
tmp = polinom.pop(0)
if polinom:
for i in range(len(polinom)-1, -1, -1):
if polinom[i][0] == tmp[0]:
tmp[1] += polinom[i][1]
polinom.pop(i)
checked.append(tmp)
return checked
def add_polinoms(pol_1, pol_2):
added = []
while pol_1 or pol_2:
if pol_1:
tmp = pol_1.pop(0)
for i in range(len(pol_2)):
if pol_2[i][0] == tmp[0]:
tmp[1] += pol_2[i][1]
pol_2.pop(i)
break
else:
tmp = pol_2.pop(0)
added.append(tmp)
added.sort(reverse=True)
return(added)
def print_polinom(polinom):
s = ''
if polinom:
if polinom[0][1] < 0:
s += '-'
polinom[0][1] = -polinom[0][1]
if polinom[0][1] == 1:
if polinom[0][0] == 0:
s += str(polinom[0][1])
elif polinom[0][0] == 1:
s += 'x'
else:
s += 'x^' + str(polinom[0][0])
else:
if polinom[0][0] == 1:
s += str(polinom[0][1]) + 'x'
elif polinom[0][0] == 0:
s += str(polinom[0][1])
else:
s += str(polinom[0][1]) + 'x^' + str(polinom[0][0])
polinom.pop(0)
for el in polinom:
if el[1] == 0:
continue
elif el[1] < 0:
s += ' - '
el[1] = -el[1]
else:
s += ' + '
if el[1] == 1:
if el[0] == 0:
s += str(el[1])
elif el[0] == 1:
s += 'x'
else:
s += 'x^' + str(el[0])
else:
if el[0] == 1:
s += str(el[1]) + 'x'
elif el[0] == 0:
s += str(el[1])
else:
s += str(el[1]) + 'x^' + str(el[0])
print(s)
def input_data():
while True:
try:
n = int(input())
break
except:
print('enter an integer N')
continue
a = list()
i = 1
while n > i-1:
try:
tmp = list(map(int,(input()).split()))
if len(tmp) != 2:
print('enter two space separated integers')
continue
a.append(tmp)
i += 1
except:
print('enter two space separated integers')
return a
a = check_polinom(input_data())
b = check_polinom(input_data())
c = add_polinoms(a,b)
print_polinom(c)
if is_zero_polinom(polinom):
print('0')
return
<here comes the current code>