私はPythonの初心者で、forループによって生成された合計のリストを作成するのに苦労しています.
私のプログラムが複数選択テストで視覚障害のある生徒のクラスのスコアをシミュレートする必要がある学校の課題を受け取りました。
def blindwalk(): # Generates the blind answers in a test with 21 questions
import random
resp = []
gab = ["a","b","c","d"]
for n in range(0,21):
resp.append(random.choice(gab))
return(resp)
def gabarite(): # Generates the official answer key of the tests
import random
answ_gab = []
gab = ["a","b","c","d"]
for n in range(0,21):
answ_gab.append(random.choice(gab))
return(answ_gab)
def class_tests(A): # A is the number of students
alumni = []
A = int(A)
for a in range(0,A):
alumni.append(blindwalk())
return alumni
def class_total(A): # A is the number of students
A = int(A)
official_gab = gabarite()
tests = class_tests(A)
total_score = []*0
for a in range(0,A):
for n in range(0,21):
if tests[a][n] == official_gab[n]:
total_score[a].add(1)
return total_score
class_total() 関数を実行すると、次のエラーが発生します。
total_score[a].add(1)
IndexError: list index out of range
問題は、各生徒のスコアを評価してリストを作成する方法です。これが class_total() 関数でやりたいことだからです。
私も試しました
if tests[a][n] == official_gab[n]:
total_score[a] += 1
しかし、同じエラーが発生したため、Python でリストがどのように機能するかをまだ完全には理解していないと思います。
ありがとう!
(また、私は英語のネイティブ スピーカーではないので、十分に明確にできなかったら教えてください)