2017-07-31 49 views
0

该方案的原则是根据足球运动员的表现(进球数)得到最终排名。因此,我必须根据目标的数量来确定积分。阵列中的属性点

只有3名足球运动员,根据进球数目排名从最小到最大。 有两轮更多的最终排名。我必须要学会处理数组和函数(不使用的功能ZIP,排序,等...)

这里是我的阵列

名=“亨利”,“欧文”,“德罗巴”] =>的足球运动员

目标1 =的名称[18,12,6] =>它的第一轮为每个玩家

目标2 =期间是关于目标的数目的[6,8,5] =>它是第二轮每个球员的进球数大约为

gain = [2,4,6] =>根据目标数量得分进行归属如果您标出了最多的进球数,您将获得6分。所以最大。

我不知道是否清楚?对不起我的英语不好。

我的问题,我有另一个数组点= [0,0,0]我怎么能得到这个数组总点数最终排名?对于每一轮,我都希望用当前的点数加起来。

之后我希望用新功能预览最终排名。 非常感谢。

def printOne(name, goal, title, current_pts): 
    print("\t\t\t\t{}\n".format(title)) 
    for i in range(len(name)): 
     print("\t\t\t\t {} \t {} points {} goals".format(name[i], gain[i] ,goal[i])) 
    print("=======================================================") 
    return current_pts 

def sort(name, goal1, goal2, pts): 
    swap = True 
    while swap: 
     swap = False 
     for i in range(len(name) - 1): 
      if goal1[i + 1] < goal1[i]: 
       name[i], name[i + 1] = name[i + 1], name[i] 
       goal1[i], goal1[i + 1] = goal1[i + 1], goal1[i] 
       goal2[i], goal2[i + 1] = goal2[i + 1], goal2[i] 
       pts[i], pts[i + 1] = pts[i + 1], pts[i] 
       swap = True 
    return name, goal1, goal2, pts 

def test(name, goal, pts): 
    for i in range(len(name)): 
    goalTotal.append(goal1[i] + goal2[i]) 
    print(name[i] + " \t ???? points \t " + str(goalTotal[i]) + " goals : ") 

    return name, goal, pts 


name = ["Henry", "Owen", "Drogba"] 
point = [0,0,0] 
goal1 = [18, 12, 6] 
goal2 = [6, 8, 5] 
gain = [2,4,6] 
goalTotal = [] 


name, goal1, goal2, point = sort(name, goal1, goal2, point) 
point = printOne(name, goal1, "First round", point) 

name, goal2, goal1, point = sort(name, goal2, goal1, point) 
point = printOne(name, goal2, "Second round", point) 

test(name, goalTotal, "Ranking total ") 

下面是结果

First round 
Drogba 2 points 6 buts   
Owen  4 points 8 buts   
Henry  6 points 10 buts  
======================================================= 
Second round 

Henry  2 points 4 buts  
Drogba 4 points 5 buts  
Owen  6 points 6 buts  
======================================================= 
Final Ranking 
Drogba 6 points 
Henry  8 points 
Owen  10 points 

回答

0

我真的不知道,如果我理解正确的,但你的意思是这样的?

import numpy as np 
def printOne(name,gain, goal, title, current_pts): 
    print("\t\t\t\t{}\n".format(title)) 
    for i in range(len(name)): 
     print("\t\t\t\t {} \t {} points {} buts \t {} total points".format(name[i], gain[i] ,goal[i],current_pts[i])) 
    print("=======================================================") 
    return current_pts 

def trier(goal, pts, gain): 
    minIndex = goal.index(min(goal)) 
    maxIndex = goal.index(max(goal)) 
    middleIndex = 0 
    if minIndex + maxIndex == 2: 
     middleIndex = 1 
    elif minIndex + maxIndex == 1: 
     middleIndex = 2 
    gain_per_person = [0,0,0] 

    gain_per_person[maxIndex] = gain[2] 
    gain_per_person[middleIndex] = gain[1] 
    gain_per_person[minIndex] = gain[0] 
    pts = np.add(pts, gain_per_person) 
    return gain_per_person, pts 


name = ["Henry", "Owen", "Drogba"] 
point = [0,0,0] 
goal1 = [18, 12, 6] 
goal2 = [6, 8, 5] 
gain = [2,4,6] 

gain1, point = trier(goal1, point, gain) 
point = printOne(name, gain1, goal1, "First round", point) 

gain2, point = trier(goal2, point, gain) 
point = printOne(name, gain2, goal2, "Second round", point) 

这导致这个:

First round 

Henry 6 points 18 buts 6 total points 
Owen  4 points 12 buts 4 total points 
Drogba 2 points 6 buts  2 total points 
======================================================= 
Second round 

Henry 4 points 6 buts  10 total points 
Owen  6 points 8 buts  10 total points 
Drogba 2 points 5 buts  4 total points 
======================================================= 

这是你在找什么?

编辑答案在评论问题
“谢谢你的帮助。我有编辑我在把最终结果的第一篇文章。如何添加第一轮与第二点?对于最终的排名? “

在开始点= [0,0,0]
然后审理者方法被称为为目标1 trier([18,12,6], [0,0,0], [2,4,6])
的gain_per_person对于目标1 = [6,4,2]
在线路pts = np.add(pts, gain_per_person)将和[6,4,2]添加到eachother中,导致pts为[6,4,2] 然后将其作为第二个返回值返回并保存在point中。

在行 pts = np.add(pts, gain_per_person) PTS的 [4,6,2][6,4,2]

然后审理者方法被称为用于目标2
trier([6,8,5], [6,4,2], [2,4,6])
的gain_per_person对于目标1 = [4,6,2]
加到海誓山盟这导致PTS来[10,10,4] 这是然后作为第二个返回值返回并保存在point中。

EDIT 2
如果名称["Henry", "Owen", "Drogba"]
和1个目标的结果是[6,4,2]
和目标2的结果是[2,6,4]
那么期望的结果是[8,10,6]

为了把这个故事python code

points_goal1 = [6, 4, 2] 
points_goal2 = [2, 6, 4] 
points_total = [0, 0, 0] 

for index in range(3): 
    print(index) 
    print("points_goal1[", index, "] =", points_goal1[index]) 
    print("points_goal2[", index, "] =", points_goal2[index]) 
    print() 
    points_total[index] = points_goal1[index] + points_goal2[index] 

print("=======================================================") 
print("points_goal1 =", points_goal1) 
print("points_goal2 =", points_goal2) 
print("points_total =", points_total) 

这给出了结果

0 
points_goal1[ 0 ] = 6 
points_goal2[ 0 ] = 2 

1 
points_goal1[ 1 ] = 4 
points_goal2[ 1 ] = 6 

2 
points_goal1[ 2 ] = 2 
points_goal2[ 2 ] = 4 

======================================================= 
points_goal1 = [6, 4, 2] 
points_goal2 = [2, 6, 4] 
points_total = [8, 10, 6] 
+0

你如何做到这一点http://hpics.li/f84c107?你的结果几乎是正确的 – augustin1340

+0

你是什么意思的“你怎么做到这一点”?我从字面上给你的代码。我是否需要更多地解释代码? –

+0

谢谢你的帮助。我已经编辑了我的第一篇文章,作出最终结果。你如何在第一轮加入积分?为了最后的排名? – augustin1340