Hackerrank -为什么我的输出一次只写一个字符?



我正在解决以下"垂直棒"hackerrank挑战:https://www.hackerrank.com/challenges/vertical-sticks/problem?isFullScreen=true&h_r=next-challenge&h_v=zen&h_r=next-challenge&h_v=zen

这是我的解决方案:

def solve(y):
out = []
x = list(itertools.permutations(y))

for yp in x: 

arr = []
arr.append(1)
for i in range(int(1),int(len(yp))):
#flag = 0
for j in range(int(i-1),int(-1),int(-1)):
if yp[j] >= yp[i]:
arr.append(i-j)
#flag+=1
break
if j==0:
arr.append(i+1)
out.append(sum(arr))


p = round((sum(out)/len(out)),2)
pp = "%0.2f" % (p)
print(pp)
return pp

if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
t = int(input().strip())
for t_itr in range(t):
y_count = int(input().strip())
y = list(map(int, input().rstrip().split()))
result = solve(y)
fptr.write('n'.join(map(str, result)))
fptr.write('n')
fptr.close()

对于测试用例,我的打印(pp)输出正确地显示为:


4.33
3.00
4.00
6.00
5.80
11.15

但是我的返回值是:

4
.
3
3
3
.
0
0
4
.
0
0
6
.
0
0
5
.
8
0
1
1
.
1
5

。每行一个字符,并且被分类为不正确。有人能告诉我为什么会这样吗?

从solve返回的结果已经是一个字符串。当你在它上面调用join时,你是在把它分成单独的字符,用换行符分隔。

最新更新