使用python将两个数组与For循环进行比较

时间:2017-06-27 08:17:16

标签: arrays python-2.7

在stackoverflow中你好新来的,也是我在Python中编程的新手,还在学习。

我想知道为什么我在第二个for循环中得到一个语法错误,我试图比较两个相同长度的数组,当ax> bx当ax< bx B记录1点,其中ax == bx无人得分。

def solve(a0, a1, a2, b0, b1, b2):
  A = 0
  B = 0
  a = [a0 , a1 ,a2]
  b = [b0, b1, b2]
  for x in a and for y in b:
    if x > y:
        pointA + 1
    if x==y:
        pass
    else:
        pointB + 1
  result = [pointA, pointB]
  return result


a0, a1, a2 = raw_input().strip().split(' ')
a0, a1, a2 = [int(a0), int(a1), int(a2)]
b0, b1, b2 = raw_input().strip().split(' ')
b0, b1, b2 = [int(b0), int(b1), int(b2)]
result = solve(a0, a1, a2, b0, b1, b2)
print " ".join(map(str, result))

然后我尝试了一些调查:

from itertools import product
import sys


def solve(a0, a1, a2, b0, b1, b2):
  A = 0
  B = 0
  a = [a0 , a1 ,a2]
  b = [b0, b1, b2]
  A = sum(1 if x>y else 0 for x, y in product(a, b))
  B = sum(1 if x<y else 0 for x, y in product(a, b))
  result = [A, B]
  return result

a0, a1, a2 = raw_input().strip().split(' ')
a0, a1, a2 = [int(a0), int(a1), int(a2)]
b0, b1, b2 = raw_input().strip().split(' ')
b0, b1, b2 = [int(b0), int(b1), int(b2)]
result = solve(a0, a1, a2, b0, b1, b2)
print " ".join(map(str, result))

但输入为:

1 1 1
0 0 0

我得到了:

9 0

有人可以解释我做错了什么,为什么?提前谢谢。

此致 [R

1 个答案:

答案 0 :(得分:0)

and期望布尔值不是表达式,因此:for x in a and for y in b:永远不会有效。

您可以使用zip()

1 a
2 b
3 c
>>> a = [1, 2, 3]
>>> b = ['a', 'b', 'c']
>>> for x, y in zip(a, b):
...   print('{} {}'.format(x, y))
... 
1 a
2 b
3 c

请纠正你的缩进。