使用Python数组
此代码有什么问题,请:使用Python数组,python,arrays,python-2.7,Python,Arrays,Python 2.7,此代码有什么问题,请: from array import array import math def solution(A): A = array('i') for i in A: if i > 0: digits = int(math.log10(i))+1 elif i == 0: digits = 1 else: digits = int(math.log10(-i))+2 if digits
from array import array
import math
def solution(A):
A = array('i')
for i in A:
if i > 0:
digits = int(math.log10(i))+1
elif i == 0:
digits = 1
else:
digits = int(math.log10(-i))+2
if digits == 2:
sum += i
return sum
任务是编写一个函数,给定一个由N个整数组成的数组a,返回所有两位数的总和,这将完成此任务
import math
def solution(A):
#A = array('i')
sumofarr=0
for i in A:
if i != 0:
digits = int(math.log10(math.fabs(i)))+1
if digits == 2:
sumofarr += i
return sumofarr
solution([12,3,45]) #output 57
请注意,不需要区分正数和负数。取绝对值。此外,您需要在开始时初始化
sumofarr
变量。另外,最好不要使用sum
作为变量的名称,因为这在python中已经被用作函数名。代码的问题是没有初始化sum
,没有正确的缩进,覆盖输入参数,检查一个数字是否为2位数比需要更复杂
这里有一个更简单的版本
def mysum(A):
total = 0
for i in A:
if 10 <= abs(i) < 100: # abs if you want to include negative numbers
total += i
return total
或使用内置和和和生成器表达式
>>> sum( i for i in test if 10 <= abs(i) < 100 )
80
>>>
>>总和(如果10>>
<代码> <代码>返回是在循环中,所以< <代码> > 循环只执行一次。此外,您不认为<代码> 9 < i<100 >代码>是一个更优雅的测试吗?它是一个没有多角的情况下的一个内衬。如果要考虑负数,也可以使用<代码> 9 ABS(i)<100
…当我从for循环中删除return语句时,我收到一个错误:“UnboundLocalError:赋值前引用的局部变量'sum'。数组元素的假定范围为[-2147483648..2147483647]错误是什么???您从未定义sum,您只是尝试添加到它。在函数体中,您需要一个sum=0
它的第一个错误是第5行中的缩进。
>>> sum( i for i in test if 10 <= abs(i) < 100 )
80
>>>