質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

342閲覧

二次元配列のプログラムを作れません

kanade.

総合スコア1

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2024/08/31 02:56

実現したいこと

成績表の生徒番号と得点の要素を持つに次元配列の、生徒ごとの合計点を求め、出力する。

発生している問題・分からないこと

生徒番号が0の人が途中に入っていて、そこまでの生徒それぞれの合計点をだしたいが、”生徒番号が0になるまで”という指示がわからない。また、表示されない。

該当のソースコード

data = [ ["No", "数学", "英語", "情報"], [1, 85, 90, 78], [2, 72, 88, 65], [3, 92, 78, 85], [4, 88, 82, 90], [5, 79, 86, 93], [6, 77, 91, 80], [7, 83, 75, 88], [8, 90, 81, 87], [9, 75, 89, 92], [10, 84, 86, 77], [11, 76, 83, 85], [12, 81, 90, 78], [13, 88, 85, 92], [14, 79, 92, 86], [15, 82, 78, 90], [16, 86, 87, 83], [17, 90, 76, 85], [18, 88, 79, 92], [19, 77, 84, 80], [20, 82, 91, 87], [21, 81, 87, 93], [22, 79, 85, 78], [23, 88, 92, 85], [24, 90, 77, 90], [25, 85, 79, 88], [26, 82, 88, 92], [27, 78, 90, 77], [28, 87, 76, 85], [29, 89, 81, 90], [30, 76, 88, 84], [31, 83, 86, 90], [32, 85, 78, 76], [33, 91, 87, 83], [34, 88, 75, 85], [35, 77, 82, 92], [36, 79, 90, 78], [37, 82, 89, 86], [38, 84, 77, 90], [39, 89, 82, 85], [40, 76, 88, 93], [41, 78, 85, 80], [42, 88, 92, 87], [43, 90, 79, 92], [44, 85, 83, 77], [45, 82, 90, 85], [46, 76, 88, 92], [47, 89, 85, 80], [48, 77, 92, 87], [49, 82, 79, 93], [50, 85, 88, 78], [51, 78, 90, 85], [52, 88, 87, 92], [53, 79, 76, 77], [54, 83, 82, 85], [55, 76, 89, 90], [56, 90, 86, 78], [0, 85, 78, 87], [58, 79, 92, 92], [59, 88, 82, 80], [60, 77, 85, 87], [61, 89, 90, 93], [62, 82, 88, 78], [63, 77, 90, 85], [64, 85, 79, 92], [65, 90, 83, 80], [66, 82, 85, 87], [67, 88, 89, 93], [68, 79, 76, 78], [69, 83, 90, 85], [70, 76, 88, 92], [71, 85, 85, 77], [72, 88, 82, 85], [73, 79, 89, 90], [74, 87, 78, 80], [75, 85, 82, 87], [76, 78, 92, 93], [77, 89, 79, 78], [78, 77, 88, 85], [79, 82, 90, 92], [80, 85, 76, 80], [81, 88, 85, 87], [82, 79, 90, 93], [83, 87, 86, 78], [84, 85, 78, 85], [85, 76, 92, 92], [86, 90, 82, 80], [87, 85, 85, 87], [88, 78, 89, 93], [89, 82, 76, 78], [90, 76, 90, 85], [91, 85, 88, 92], [92, 90, 79, 80], [93, 82, 85, 87], [94, 78, 89, 93], [95, 87, 77, 78], [96, 85, 92, 85], [97, 76, 90, 92], [98, 90, 85, 80], [99, 85, 88, 87], [100, 78, 79, 93] ] I = 1 while data[I,0] == 0: SUM = 0 for J in range (2,3,1): SUM = (I,J) + SUM print(SUM) I = I + 1

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

よくわからなかくて、解決できなかった

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroki-o

2024/08/31 03:13

言語はPythonですか? 適切なタグを付けたほうが、多くの人に見てもらえると思います。
meg_

2024/08/31 03:13

質問タイトルは「二次元配列のプログラムを作れません」とありますが、分からないのはwhileの使い方ではありませんか?「teratailやGoogle等で検索した」とのことですが、どのような検索ワードで調べましたか?
guest

回答3

0

生徒番号が0の人が途中に入っていて、

既に解決済みですが、生徒番号 0 のデータが存在しない場合にはエラー(IndexError)が発生することになります。

python

1Traceback (most recent call last): 2 File "sum_records.py", line 106, in <module> 3 while data[I][0]: 4 ~~~~^^^ 5IndexError: list index out of range

while 文の条件部にインデックス値を制限する条件を追加しておくとよいかと思います。

python

1I = 1 2while I < len(data) and data[I][0]: 3 print(sum(data[I][1:])) 4 I += 1

投稿2024/08/31 10:28

melian

総合スコア20574

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toge_

2024/08/31 17:19

あ、ほんとうですね。 ありがとうございます。
guest

0

自己解決

できました!ありがとうございます‼

投稿2024/08/31 09:57

kanade.

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Pythonでコーディングしていると仮定して回答しますね。
2次元配列の定義の後のコードを以下に変更してください。
これで想定した動きをするはずです。

python

1I = 1 2# 生徒番号が0でない限り繰り返す 3while data[I][0] != 0: 4 SUM = 0 5 # 各配列の2番目から4番目の要素の合計を求めたいため、indexを1から3まで繰り返す 6 for J in range (1, 4): 7 # 各学科の点数をSUMに足す 8 SUM = data[I][J] + SUM 9 # 生徒番号と一緒に表示 10 print(I, SUM) 11 I = I + 1

分からないところなどありましたら、コメント下さい。

投稿2024/08/31 09:31

toge_

総合スコア226

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問