python中的hackerrank平均函数

2024-04-26 23:43:51 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,伙计们,我试过运行这段代码,它在大多数测试中都失败了,我不知道问题出在哪里

#!/bin/python

import math
import os
import random
import re
import sys


# write your code here
def avg(*num):
    if len(num)==0:
        return None
    sum=0
    for i in num:
        sum=sum+i
        moy=sum/len(num)
    return(moy)

    

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')
    
    nums = map(int, raw_input().split())
    res = avg(*nums)
    
    fptr.write('%.2f' % res + '\n')

    fptr.close()

Tags: 代码importlenreturnifosresnum
3条回答
#!/bin/python

import math
import os
import random
import re
import sys


# write your code here
def avg(*num):
    if len(num)==0:
        return None
    sum=0
    for i in num:
        sum=sum+i
        moy=sum/len(num)
    return(moy)

    

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')
    
    nums = map(int, raw_input().split())
    res = avg(*nums)
    
    fptr.write('%.2f' % res + '\n')

    fptr.close()
def avg(*nums):
    return sum(nums)/len(nums)

请改用此函数

<> P>编码时可以考虑到一些修正:

  1. sum=0-您正在使用^{},它是Python的内置函数。 使用预定义名称不是一种有效的编码方式

  2. moy=sum/len(num)-这一行浪费了Python编译器的大量时间,因为您要求它从第一次迭代到最后一次迭代执行计算,在最后一次迭代中,只需要计算所有数字之和时的最后一次迭代才能找到平均数

  3. moy=sum/len(num)-当应用于整数时,标准除法符号(/)在Python 3和Python 2中的操作不同

    在Python3中,将一个整数除以另一个整数时,除法运算x / y表示一个真除法(使用__truediv__方法)并生成浮点结果。同时,Python2中的相同操作表示一个经典的除法,它将结果向下舍入到负无穷大(也称为发言)

    也就是说,Python2中的5/22.00,而Python3中的2.50

    最好使用typecast:float()-此函数用于将任何数据类型转换为浮点数

固定代码:

def avg(*num):
    if len(num)==0:
        return None
    sum_num=0
    for i in num:
        sum_num += i
    return(float(sum_num)/len(num))

相关问题 更多 >