python题目记录(9.25)

【PAT B1010】一元多项式求导

 第一种方法:边计算边输出

将数组以步长为2进行循环,并计算多项式系数。如果系数不是0就输出该项和下一项,系数为0不进行任何操作。但是这种方法在输出时怎么最后不输出空格呢?尝试用下标判断是否是输出的最后一项,但是后面的项可能是0,此时无法获知后面是否有0项。

解决方法:【PAT B1010】一元多项式求导 - 知乎

参考了这段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则删除它和后一项。但是写代码的过程中发现这样数组也在动态改变,所以最后在原数组上操作的方法没成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值