Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Hackerrank质询发出~stdout~无响应错误_Python - Fatal编程技术网

Python Hackerrank质询发出~stdout~无响应错误

Python Hackerrank质询发出~stdout~无响应错误,python,Python,挑战是 给定一个整数数组,计算其元素的分数 正、负和零。打印 每一个分数在一个新行上 这是我的代码: #!/bin/python3 import math import os import random import re import sys # Complete the plusMinus function below. def plusMinus(arr): l = len(arr) #get length of the array p = 0 #positive in

挑战是

给定一个整数数组,计算其元素的分数 正、负和零。打印 每一个分数在一个新行上

这是我的代码:

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the plusMinus function below.
def plusMinus(arr):
    l = len(arr) #get length of the array
    p = 0 #positive ints
    n = 0 # negative ints
    z = 0 # zeroes
    for i in range(0, len(arr)):
        if arr[i] > 0:   #check if num is positive
            p = p+1
        elif arr[i] < 0:    #check if num is negative
            n = n+1
        else: z = z+1     #check if num is zero

    return p/l, n/l, z/l

if __name__ == '__main__':
    n = int(input())

    arr = list(map(int, input().rstrip().split()))

    plusMinus(arr)
它确实输出了挑战的正确答案,但我猜这不是hackerrank期望的正确格式,它说输出是:

(0.5,0.3333333,0.166666666)

而不是:

50万 0.333333 0.166667


我做错了什么?提前感谢。

您没有提供输入,您的代码也不会打印任何内容,因此即使我可以运行它,它也不会重现您描述的问题。幸运的是,不难猜测您在“如何从python函数返回多个值”方面存在问题

函数有多个返回值,因此它返回一个元组。打印元组时,它有括号

def f():
    return 1/2, 1/3, 1/6

t = f()
print (t)
a, b, c = f()
print (a, b, c)
(0.5,0.3333,0.1666666)
0.5 0.3333333 0.166666666

您可以使用*解包元组,这样就可以将每个元素作为单独的参数传递给print,如下所示:

print (*f())
但通常,如果要返回多个值,最好为每个返回使用命名良好的变量,因此在调用代码中可以清楚地看到发生了什么

positives, negatives, zeroes = get_plusminus_ratios(data)
这个链接似乎有很多信息

在python中,当您从一个函数返回多个值时,它将返回一个包含值的元组。 在您的情况下,我将打印元组的每个变量

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the plusMinus function below.
def plusMinus(arr):
    l = len(arr) #get length of the array
    p = 0 #positive ints
    n = 0 # negative ints
    z = 0 # zeroes
    for i in range(0, len(arr)):
        if arr[i] > 0:   #check if num is positive
            p = p+1
        elif arr[i] < 0:    #check if num is negative
            n = n+1
        else: z = z+1     #check if num is zero

    return p/l, n/l, z/l

if __name__ == '__main__':
    n = int(input())

    arr = list(map(int, input().rstrip().split()))

    p, n, z = plusMinus(arr)
    print(p, n, z)
#/垃圾桶/蟒蛇3
输入数学
导入操作系统
随机输入
进口稀土
导入系统
#完成下面的plusMinus函数。
def plusMinus(arr):
l=len(arr)#获取数组的长度
p=0#正整数
n=0#负整数
z=0#零
对于范围(0,len(arr))内的i:
如果arr[i]>0:#检查num是否为正
p=p+1
elif arr[i]<0:#检查num是否为负
n=n+1
否则:z=z+1#检查num是否为零
返回损益表,n/l,z/l
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
n=int(输入())
arr=list(映射(int,input().rstrip().split())
p、 n,z=plusMinus(arr)
打印(p、n、z)

在计算了p、n和z之后,您没有打印它们,您只需返回它们,当它们返回到调用函数的代码时,它们不会存储在任何变量中,也不会打印,这就是为什么它会说“stdout上没有输出” 尝试:

def plusMinus(arr):
l=len(arr)#获取数组的长度
p=0#正整数
n=0#负整数
z=0#零
对于范围(0,len(arr))内的i:
如果arr[i]>0:#检查num是否为正
p=p+1
elif arr[i]<0:#检查num是否为负
n=n+1
否则:z=z+1#检查num是否为零
打印(p/1,n/1,z/1)#更改部分
希望这能奏效


此外,我认为p,n,z不需要除以“/1”,因为它们已经是整数了。

您是否尝试过将答案四舍五入,以使其符合预期输出?
#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the plusMinus function below.
def plusMinus(arr):
    l = len(arr) #get length of the array
    p = 0 #positive ints
    n = 0 # negative ints
    z = 0 # zeroes
    for i in range(0, len(arr)):
        if arr[i] > 0:   #check if num is positive
            p = p+1
        elif arr[i] < 0:    #check if num is negative
            n = n+1
        else: z = z+1     #check if num is zero

    return p/l, n/l, z/l

if __name__ == '__main__':
    n = int(input())

    arr = list(map(int, input().rstrip().split()))

    p, n, z = plusMinus(arr)
    print(p, n, z)
def plusMinus(arr):
    l = len(arr) #get length of the array
    p = 0 #positive ints
    n = 0 # negative ints
    z = 0 # zeroes
    for i in range(0, len(arr)):
        if arr[i] > 0:   #check if num is positive
            p = p+1
        elif arr[i] < 0:    #check if num is negative
            n = n+1
        else: z = z+1     #check if num is zero

    print (p/1, n/1, z/1) # Changed Part