所以我试图完成Hackerrank.com的挑战“ Compare The Triplets”,但得到了意外的输出:
Input (stdin)
5 6 7
3 6 10
Your Output (stdout)
0 1
Expected Output
1 1
因此,我已经有了可以满足挑战要我执行的代码,将一个数组与三个元素进行比较,但是我认为使用一个包含n个元素的数组并对它们进行比较将更加有用。我写了一些代码来尝试使它正常工作,但是输出却不应该如此。目的是比较两个单独数组中元素的值。这是我的代码:
#!/bin/python3
import math
import os
import random
import re
import sys
# Complete the compareTriplets function below.
def compareTriplets(a, b):
loopLen = 0
if len(a) > len(b):
loopLen = len(a)
elif len(a) == len(b):
loopLen = len(a)
elif len(a) < len(b):
loopLen = len(b)
for i in range(0, loopLen):
bob = 0
alice = 0
if a[i] > b[i]:
bob += 1
elif a[i] == b[i]:
bob += 0
alice += 0
elif a[i] < b[i]:
alice += 1
i += 1
return bob, alice
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
a = list(map(int, input().rstrip().split()))
b = list(map(int, input().rstrip().split()))
result = compareTriplets(a, b)
fptr.write(' '.join(map(str, result)))
fptr.write('\n')
fptr.close()
编辑:在评论中回答的问题
答案 0 :(得分:1)
您可以压缩列表并从那里进行评估,这现在适用于任何尺寸的列表
alice = [5, 6, 7]
bob = [3, 6, 10]
score = [0,0]
l = list(zip(alice, bob))
for i in l:
if i[0] > i[1]:
score[0] += 1
elif i[1] > i[0]:
score[1] += 1
else:
pass
print(score)
[1, 1]
答案 1 :(得分:1)
我猜下面的函数可以用于2个列表中的任意数量的元素
def compTrip(a,b):
alice = 0
bob = 0
result = []
for i, j in zip(a,b):
if i < j:
alice = alice + 1
if j < i:
bob = bob + 1
result.append(bob)
result.append(alice)
return(result)
答案 2 :(得分:1)
@Jodast-代码中的错误是您在for循环的每次迭代中都将变量alice
和bob
重新初始化为0。将其从for循环中删除,您的代码将像超级按钮一样工作。
有错误的行(将这些行移出for循环):
bob = 0
alice = 0
快乐编码! :)