2017-03-16 23 views
-2

我有一个数组A = [1 - 100],我需要找到这个数组中所有两位数字值的总和。我会如何处理这个问题?我曾尝试:Python排序数组得到两位数字

def solution(A): 
    A =array[0-100]) 
    while A > 9 & A < 99 
     total = sum(A) 
     print "%s" % total 

是否有给定的由N个整数的数组的函数返回所有两位数字的总和,即A = [1,1000,80,-91]的函数应该返回-11(因为这两个是80和-91)。不是范围,多个阵列

+1

你应该在解释器中测试你的代码,因为有一些语法错误。 – elena

+1

您的代码有许多语法问题。你应该回顾一下如何声明数组,访问数组元素,并在Python中循环数组。 – Cecilia

+0

@Cecilia我需要帮助来获得一个函数,给定一个由N个整数组成的数组返回所有两位数字的和,即A = [1,1000,80,-91]函数应该返回-11(因为两者都是80和-91)。不是一个范围,多个阵列 –

回答

0

使用关键字and而不是按位&

编辑:更全面的答案,因为这是不是唯一的东西错了:

def solution(): 
    A = range(101) 
    total = sum([a for a in A if 9 < a <= 99]) 
    print total 

这将使用列表理解和链接的不平等,所以是相当的“Python”。

+0

虽然@Pit击败了我在评论中写下了相同的答案。 – spco

+1

不用担心 - 我删除了评论,因为还有更多问题。 – Pit

+0

@spco原谅我即将要做的人,请,我有一个困境,在这里我甚至不知道如何开始在this.is有一种方式,给予一个积极的iunteer N,打印连续的数字从1到N,每个单独一行。然而,任何可以被3,5或7整除的数字应分别由Fizz,Buzz或Woof替换。如果可以被3和5整除,它将输出FizzBu​​zz,并且如果它输出FizzBu​​zzWoof - –

0

您的代码中存在大量错误,请在发布前下次发布,花一些时间尝试自己弄清楚并确保您的代码不会含有任何明显的语法错误。通过数组,我假设你在谈论list。并改变它的范围(101),每一个数字从0到100

def solution(A): 
    return sum([x for x in range(A) if len(str(abs(x))) == 2]) 
print(solution(101)) 

作为一个侧面说明,使用and代替&,因为这是一个按位或标志。

+0

呼叫'list()'在这个例子中为你做? – cdlane

+0

'.digits()'方法从哪里导入? – cdlane

+0

我一直以为它有一个很好的 – abccd

0

您可以使用列表理解和检查字符串格式的长度等于2,像这样:

sum([x if len(str(x))==2 else 0 for x in xrange(1,101)]) 
+1

如果len(str(x))== 2)为什么不避免'else'和临时列表,通过执行sum(x for xrange(1,101) ' – cdlane

0

这里有几种方法去这个问题,首先是最相似的方法,你似乎想:​​

def solution1(array): 
    total = 0 

    for a in array: 
     if 9 < a < 100: 
      total += a 
    return total 

print(solution1(range(101))) 

这里是一个使用的理解(实际上,发电机表达式)更紧凑的解决方案:

def solution2(array): 
    return sum(a for a in array if 9 < a < 100) 

print(solution2(range(101))) 

请注意,在您的原始您是混淆循环和条件。