2017-04-17 11 views
1

EDIT:ランダム "for loop"出力が固定されています。今、 "リストの範囲外エラーリスト"を受信して​​います。Python:毎回ランダムに生成されたアイテムをforループでリストに印刷するには?

私はランダムに生成された文字グレード(A-F)に基づいて格付けプログラムを作成することを意図しています。プログラムは割当量を求め、割当番号をレターグレードで印刷します。また、ランダムに生成されたグレードの平均グレードを見つける必要があります。出力は次のようになります。

Assignment 1 grade is an F 
Assignment 2 grade is a C 
Assignment 3 ... 
The average is a ... 

ランダムに文字のグレードを生成するリストがあります。私は文字のグレードの平均を見つけるためのコードを設定するのに問題があります。また、私のループは、毎回新しい文字等級を吐き出さない。ここに私のコードの一部です:

numberlist = [] 
numberlist.append("A") 
numberlist.append("B") 
numberlist.append("C") 
numberlist.append("D") 
numberlist.append("F") 

count = 1 
for i in range(total): 
    numberindex = random.randint(0, 5) 
    print("The grade for assignment", count, \ 
      "is a {}".format(numberlist[numberindex])) 
    count = count + 1 

それが現在出力します

Assignment 1 grade is an F 
Assignment 2 grade is an F 
Assignment 3 grade is an F... 
+1

あなたはループの前に 'numberindex'を並べているので、ループするたびに値は同じ/変更されません。 。 。 – ernie

+1

あなたは1つの乱数しか生成していません。ループ内で新しいランダム値を取得します。 –

+0

マイナー:あなたの "ナンバーリスト"には文字列だけが含まれています.. – DSM

答えて

1

あなたが唯一のようにする必要がありループが新しい要素に反復するたびにランダムな選択が行われます。

numberlist = ["A", "B", "C", "D", "F"] 

for i in range(total): 
    choice = random.choice(numberlist) 
    print('The grade for assignment {i} is a {mark}'.format(i=i+1, mark=choice)) 
+1

手紙を直接選ぶ場合は、番号リストにインデックスを作成しないでください。 – DSM

+0

「番号リストへのインデックス」とは何を意味するのか正確にはわかりません。 'random.choice'は、反復可能な要素から1つの要素を選択します。どのタイプの要素がiterable内にあるかは関係ありません。 – valeas

+0

あなたの 'numberlist [choice]'は何をしていると思いますか? – DSM

1

あなたがループの内側に乱数生成を置く必要があります。

for i in range(total): 
    numberindex = random.randint(0, 5) ####here! 
    print("The grade for assignment", count, \ 
     "is a {}".format(numberlist[numberindex])) 
    count = count + 1 
関連する問題