HackerRank比较三元组。JavaScript解决方案与Python 3

HackerRank比较三元组。JavaScript解决方案与Python 3,javascript,python-3.x,Javascript,Python 3.x,因此,我试图解决HackerRank()中的比较三胞胎问题 我的JavaScript解决方案通过了所有测试用例,但Python3却失败了一些(HackerRank不允许查看哪些测试用例)。正如您所看到的,我遵循了相同的逻辑,但在Python中它不起作用。我的Python代码和JS代码有什么区别 JS: 函数求解(a0、a1、a2、b0、b1、b2){ var-alice=(a0>b0-1:0)+(a1>b1-1:0)+(a2>b2-1:0); var bob=(a0b2,则alice=0+1;如

因此,我试图解决HackerRank()中的比较三胞胎问题

我的JavaScript解决方案通过了所有测试用例,但Python3却失败了一些(HackerRank不允许查看哪些测试用例)。正如您所看到的,我遵循了相同的逻辑,但在Python中它不起作用。我的Python代码和JS代码有什么区别

JS:

函数求解(a0、a1、a2、b0、b1、b2){ var-alice=(a0>b0-1:0)+(a1>b1-1:0)+(a2>b2-1:0); var bob=(a0 }

蟒蛇3:

def solve(a0, a1, a2, b0, b1, b2):
alice = 1 if a0 > b0 else 0 + 1 if a1 >v b1 else 0 + 1 if a2 > b2 else 0
bob = 1 if a0 < b0 else 0 + 1 if a1 < b1 else 0 + 1 if a2 < b2 else 0
return (alice, bob)
def解算(a0、a1、a2、b0、b1、b2):
如果a0>b0,则alice=1;如果a1>v b1,则alice=0;如果a2>b2,则alice=0+1;如果a2>b2,则alice=0
如果a0
在每个if/else后面使用括号

        alice = (1 if (a0>b0) else 0) + (1 if (a1>b1) else 0) + (1 if (a2>b2) else 0)
        bob = (1 if (a0<b0) else 0) + (1 if (a1<b1) else 0) + (1 if (a2<b2) else 0)
alice=(1 if(a0>b0)else 0)+(1 if(a1>b1)else 0)+(1 if(a2>b2)else 0)

bob=(1 if(a0您应该在每个if/else语句之后使用括号。因为python
bool
需要括号才能达到100%的精度。比较的优先级高于布尔运算符。下面是您修改过的代码:

def solve(a0, a1, a2, b0, b1, b2):
  a = (1 if a0 > b0 else 0) + (1 if a1 > b1 else 0) + (1 if a2 > b2 else 0)
  b = (1 if a0 < b0 else 0) + (1 if a1 < b1 else 0) + (1 if a2 < b2 else 0)
  return (a,b)
def解算(a0、a1、a2、b0、b1、b2):
a=(如果a0>b0,则为1)+(如果a1>b1,则为1)+(如果a2>b2,则为1)
b=(如果a0
def比较程序(a、b):
总数=0
总数b=0
对于范围内的i(len(a)):
如果a[i]>b[i]:
总计=总计+1
以利夫a[i]
幸运的是,我得到了与Geraldo Braho相同的逻辑,但很难得到“For循环表达式”中的逻辑,我得到的答案是,我需要在“len(a)/len(b)”之前使用range,因为在这种情况下,两者的长度相同。非常感谢Geraldo Braho先生教我,我们需要在“For循环表达式”中使用“range(len(a))”


我希望,这也有帮助

a = list(map(int, input("Enter The First input").split()))
b = list(map(int, input("Enter The Second input").split()))

a_score = b_score = 0

for i in range(len(a)):
    if a[i] > b[i]:
        a_score += 1
    elif a[i] < b[i]:
        b_score +=1
    else:
        pass

print(a_score, b_score)
a=list(映射(int,输入(“输入第一个输入”).split())
b=列表(映射(int,输入(“输入第二个输入”).split())
a_分数=b_分数=0
对于范围内的i(len(a)):
如果a[i]>b[i]:
a_分数+=1
以利夫a[i]
与上面其他人的回答一样,您需要将bool操作括起来。但对于python代码,这是一种更好的编写方法

def compareTriplets(a, b):
    alice = sum(1 for i in range(len(a)) if a[i] > b[i] and not a[i] == b[i])
    bob = sum(1 for i in range(len(a)) if a[i] and not a[i] == b[i] and not a[i] > b[i])
    return [alice, bob]
alice和bob变量循环中的每一行都在一个范围内循环(在本例中,我们将数组a的长度放在一起,因为a和b数组都具有相同的长度),并且每次条件发生时,都会产生
1

如果alice的a[i]>b[i]而不是a[i]==b[i]
,以及

如果满足bob的a[i]和非a[i]==b[i]和非a[i]>b[i]


然后将其相加为alice和bob的每个变量的整数值。hacker rank中的问题要求您将其显示在数组中,因此您需要将其作为数组返回。

由于某种原因,您决定在Python版本中不使用括号…?条件运算符的优先级仍然低于
+
。(
bool
也是一个
int
子类,因此您可以只
(a0>b0)+(a1>b1)+(a2>b2)
,在JS中也是如此。)使用Python比较三元组问题是关于两部分代码之间的区别。在为旧问题添加答案时,请务必注意您的答案所针对的问题的新方面。通常,只使用代码的答案可以通过添加对其工作方式和原因的解释来改进。如果您有新问题,请通过单击按钮提问。如果有助于提供上下文,请包含指向此问题的链接-
a = list(map(int, input("Enter The First input").split()))
b = list(map(int, input("Enter The Second input").split()))

a_score = b_score = 0

for i in range(len(a)):
    if a[i] > b[i]:
        a_score += 1
    elif a[i] < b[i]:
        b_score +=1
    else:
        pass

print(a_score, b_score)
def compareTriplets(a, b):
d, g = (0, 0)
for i in range(len(a)):
    if a[i] > b[i]:
        d += 1
    elif b[i] > a[i]:
        g += 1
return d, g


a = [int(i) for i in input('value of a').split(",")]
b = [int(i) for i in input('value of a').split(",")]
print(compareTriplets(a, b))
def compareTriplets(a, b):
    alice = sum(1 for i in range(len(a)) if a[i] > b[i] and not a[i] == b[i])
    bob = sum(1 for i in range(len(a)) if a[i] and not a[i] == b[i] and not a[i] > b[i])
    return [alice, bob]