2017-07-31 10 views
0

プログラムの原則は、サッカー選手のパフォーマンス(ゴール数)に応じて最終的なランキングを得ることです。したがって、目標の数に応じてポイントを属性付けなければなりません。配列内の属性ポイント

サッカー選手は3人しかいません。順位は目標の数に応じて最小から最大です。 さらに2つのラウンドが最終順位になります。私は配列や機能を操作することを学ぶ必要があります(関数は、ソート、ジップ使用しないなど...)ここで

は私の配列

名= [「ヘンリー」、「オーウェン」、「ドログバ」] =>ですサッカー選手

目標1 = [18、12]、[6] =>それは各プレーヤー

目標2 = [6,8、5] =>の最初のラウンド中に目標の数がだのについてですの名前各プレーヤーの第2ラウンドのゴール数について約

ゲイン= [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 
======================================================= 

が、これはあなたが探しているものですか?

コメント
「の質問に対するEDIT回答は、あなたの助けをいただき、ありがとうございます。私はあなたが第二と第一ラウンドのポイントを追加どのように編集最終結果を置くことで私の最初のポストを。持っている?最終順位のために?ラインで目標1、次いでトリアー方法はgain_per_person目標1 trier([18,12,6], [0,0,0], [2,4,6])
呼び出される最初の時点で「

= [0,0,0]
[6,4,2] =
[0,0,0]のptsと[6,4,2]が加算され、結果としてptsは[6,4,2] となり、これが第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])
目標1ためgain_per_person呼び出され

= [4,6,2]
はPTSが、これはある[10,10,4] であることをもたらすお互いに追加され2番目の戻り値として返され、pointに保存されます。

EDIT 2
名は["Henry", "Owen", "Drogba"]
であり、目標1の結果は[6,4,2]
され、その後、所望の結果は[8,10,6]

がこの物語を置くことです目標2の結果は、[2,6,4]
ある場合Pythonコード

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

ありがとうございます。私は最初の投稿を編集して最終結果を出しました。第1ラウンドのポイントを第2ラウンドに追加する方法は?最終ランキングには? – augustin1340

関連する問題