如何解决python中的hackerrank平均功能
嗨,我尝试过运行此代码,但在大多数测试中它一直失败,我不是问题所在!
#!/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)
改用这个函数。
,在编码时可以考虑一些更正:
-
sum=0
- 您正在使用sum
,它是 Python 的内置函数。 使用预定义名称进行编码并不是一种有效的方式。 -
moy=sum/len(num)
- 这一行浪费了 Python 编译器的大量时间,因为您要求它从第一次迭代到最后一次执行计算,当所有数字的总和为需要计算才能找到平均值。 -
moy=sum/len(num)
- 应用于整数时,标准除法符号 (/
) 在 Python 3 和 Python 2 中的操作方式不同。在 Python 3 中将一个整数除以另一个整数时,除法运算
x / y
表示真正的除法(使用__truediv__
方法)并产生浮点结果。同时,Python 2 中的相同操作代表了一个经典的除法,将结果向下舍入到负无穷大(也称为下限)。意思是,
5/2
在 Python2 中是2.00
,而在 Python3 中是2.50
。最好进行类型转换:
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))
,
#!/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()
,
代替:
for i in num:
使用这个:
for i in nums:
并且您的代码将起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。