【问题标题】:Hackerrank - why is my output being written one character at a time?Hackerrank - 为什么我的输出一次写一个字符?
【发布时间】:2022-11-18 03:42:31
【问题描述】:

我正在解决以下“Vertical Sticks”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()

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


4.33
3.00
4.00
6.00
5.80
11.15

但是我返回的 pp stdout 结果如下:

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

即每行一个字符,分类不正确。有人能指出我为什么会这样吗?

【问题讨论】:

    标签: python-3.x output


    【解决方案1】:

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

    【讨论】:

    • 谢谢你。不幸的是我不能编辑下面的任何东西“如果姓名== '主要的':" 并且我尝试返回 p 而不是 pp 失败了“TypeError: 'float' object is not iterable”。如何在函数中将解返回到小数点后两位?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多