挑战是
给出一个整数数组,计算其元素的分数 是正数,负数和零。打印的十进制值 每个分数都换行。
这是我的代码:
#!/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)
由于某种原因,它说我的输出是
〜标准输出无响应〜
所以我尝试将函数放在这样的打印函数中:
print(plusMinus(arr))
它确实输出了挑战的正确答案,但我猜它不是hackerrank期望的正确格式,它说的输出是:
(0.5,0.3333333333333333,0.16666666666666666)
代替:
0.500000 0.333333 0.166667
我在做什么错?预先感谢。
答案 0 :(得分:1)
在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)
答案 1 :(得分:0)
您没有提供输入,您的代码也没有打印任何内容,因此即使我可以运行它,也不会重现您描述的问题。幸运的是,不难猜测“如何从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.3333333333333333,0.16666666666666666)
0.5 0.3333333333333333 0.16666666666666666
您只需用*拆开元组,这样就可以将每个元素作为单独的参数传递给print,就像这样:
print (*f())
但是通常,如果您要返回多个值,最好为每个返回值使用命名良好的变量,因此在调用代码中清楚说明了正在发生什么。
positives, negatives, zeroes = get_plusminus_ratios(data)
此链接似乎包含很多信息 How do I return multiple values from a function?
答案 2 :(得分:0)
在任何地方计算完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
希望这行得通
我还认为p,n,z不必除以“ / 1” ,因为它们已经是整数。