PTA中关于python的非零返回和格式错误

1.关于非零返回

这是官方给出的结果,但其实python中是不会有这种关于0的返回要求,出现非零返回其实很有可能是写出的代码无法运行其中的某个案例,可能是数组溢出,也可能是产生了非法的运算,总而言之可以简单理解就是代码无法执行完案例便有了报错

例如这个pta中打印沙漏的这个题目

 开始我写的代码是:

n,s=input().split()
n=int(n)
s=str(s)
arr=[]
num=3
if n==0:
    print(0)
elif n==1:
    print(s)
    print(0)
elif n==2:
    print(s)
    print(1)
else:
    if n % 2 == 1:
        half = (n - 1) // 2
        left = 0
    else:
        half = (n - 2) // 2
        left = 1
    while half >= num:
        half -= num
        arr.append(str(s) * num)
        num += 2
    l = len(arr)
    ll = len(arr[l - 1])
    for i in range(l - 1, -1, -1):
        if i == l - 1:
            print(arr[i])
        else:
            print(" " * (l - 1 - i), end='')
            print(arr[i])
    print(" " * ((ll - 1) // 2),end='')
    print(s)
    for i in range(l):
        if i == l - 1:
            print(arr[i])
        else:
            print(" " * (l - 1 - i),end='')
            print(arr[i])
    print(left + 2 * half)











里面有一个案例便是非零返回,原因很简单当我的n在3到6直接如果有案例的话,我的arr数组里面不会有值,但是我还是用arr的长度去进行for循环了,所以自然的程序无法运行就会产生非零返回,有时候也可能是语法错误,但是大家一般都是在外部编译器运行后才把代码复制到pta上所以产生非零返回很有可能就是这种情况,案例考虑不完全导致的错误

2.关于格式错误

也是上一个题目,它要求我们打印

*****
 ***
  *
 ***
*****

我使用

print(" " * (l - 1 - i), s)

会显示格式错误,但是我用

print(" " * (l - 1 - i), end='')
print(arr[i])

就运行成功了,俩个代码运行结果是一样的,这可能跟里面内置函数运行的结果有关系,目前还不知道是为什么

所以遇见这种情形可以多尝试几种方式去打印结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值