Pythonにおいて、変数名に変数を入れる方法について
python初心者です。点数計算コードを使って、引数と戻り値の勉強をしており、呼び出しの部分でfor文を使ってコードを見やすくしたいと考えています。表題の通り変数名に変数を入れようとしたところ、エラーが出て解決方法がわからないため、ご教授いただけると幸いです
点数計算コード
とある参考書に記載された、生徒の得点科目の平均値を求めるコードは以下のようになっていました。
def input_scores(name):
scores = list()
scores.append(int(input(f'{name}さんの国語の点数を入力>> ')))
scores.append(int(input(f'{name}さんの数学の点数を入力>> ')))
scores.append(int(input(f'{name}さんの社会の点数を入力>> ')))
scores.append(int(input(f'{name}さんの理科の点数を入力>> ')))
scores.append(int(input(f'{name}さんの英語の点数を入力>> ')))
return scores
def calc_avg(totalscore):
avg = sum(totalscore)/len(totalscore)
return avg
def result(resultName, resultAvg):
print(f'{resultName}さんの平均点は{resultAvg}点です')
kawata_scores = input_scores('川田')
kawata_avg = calc_avg(kawata_scores)
kawata_result = result('川田', kawata_avg)
oono_scores = input_scores('大野')
oono_avg = calc_avg(oono_scores)
oono_result = result('大野', oono_avg)
呼び出し箇所のコードについて、生徒の数が増えるほど同じコードを書く必要があり冗長的となってコードの可読性が低下すると思いました。そのため呼び出し箇所のコードについてfor文を使ったほうがスッキリすると思い、以下のコードに修正しようとしたところ、studentList = ['山田', '大野', '佐藤']以降の変数名の変数numを入れる方法がわからず、手詰まりとなってしまいました。解消方法を教えていただけますでしょうか
点数計算コード(呼び出し箇所にfor文を使用)
def input_scores(name):
scores = list()
scores.append(int(input(f'{name}さんの国語の点数を入力>> ')))
scores.append(int(input(f'{name}さんの数学の点数を入力>> ')))
scores.append(int(input(f'{name}さんの社会の点数を入力>> ')))
scores.append(int(input(f'{name}さんの理科の点数を入力>> ')))
scores.append(int(input(f'{name}さんの英語の点数を入力>> ')))
return scores
def calc_avg(totalscore):
avg = sum(totalscore)/len(totalscore)
return avg
def result(resultName, resultAvg):
print(f'{resultName}さんの平均点は{resultAvg}点です')
studentList = ['山田', '大野', '佐藤']
for num in range(len(studentList)):
studentList[num] + _score = input_scores(studentList[num]) #ここでつまづいた
studentList[num] + _avg = calc_avg(studentList[num].score)
studentList[num] + _result = result(studentList[num], studentList[num].avg )
自分で試したこと
studentList[num] + _score = input_scores(studentList[num]) とした場合
SyntaxError: cannot assign to expression here. Maybe you meant '==' instead of '='?
が出ました。エラー内容から
studentList[num] + _score == input_scores(studentList[num])
に修正したところ、「_score」のところが定義されていませんというエラーが出ました。