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])
就运行成功了,俩个代码运行结果是一样的,这可能跟里面内置函数运行的结果有关系,目前还不知道是为什么
所以遇见这种情形可以多尝试几种方式去打印结果
作者:m0_74893598