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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

283閲覧

pythonのリスト操作(初心者)

tokumei_python

総合スコア3

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/09/23 00:50

編集2022/09/23 01:12

初めて質問させていただきます。
以下に示す10行の入力値を与えてプログラムの実行を行いましたが、うまくいかない部分があります。

###問題点
最初の行の入力値2,3をそれぞれn,mに格納しています。その後、2~4行目をリストkadaikyokuに格納しています。ここまでは問題がないと思われます。
次にn行m列の二次元配列onteiに5行目から10行目の値を格納しています。上からそれぞれ、ontei[0][0],ontei[0][1],ontei[0][2],ontei[1][0],ontei[1][1],ontei[1][2]に値が格納されるようにしています。
#値確認用(1)の部分で確認すると、正しく値が格納されているのですが、#値確認用(2)の処理を実行してみると、ontei[0][0],ontei[0][1],ontei[0][2]に、それぞれontei[1][0],ontei[1][1],ontei[1][2]が上書きされてしまっていて、結果的に別のものが出力されてしまいます。どこが問題であるかご教授お願い致します。

#入力値
2 3
400
410
420
400
400
400
300
300
300

python

1n,m = input().split(' ') 2 3n=int(n)#人数 4m=int(m)#課題曲の長さ 5 6tensu=[100]*n #n人のカラオケの点数(初期値は100) 7 8kadaikyoku=[] #課題曲の正しい音程 9ontei=[[0]*m]*n #n人の歌った音程 10 11#課題曲の音程(2行目からm+1行目までをリストに格納) 12for i in range(m): 13 x=input() 14 x=int(x) 15 kadaikyoku.append(x) 16 17#n人の音程を2次元配列に格納 18#ここから 19for j in range(n): 20 for i in range(m): 21 x=input() 22 x=int(x) 23 ontei[j][i]=x 24 print(ontei[j][i])#値確認用(1) 25#ここまでがおかしい? 26 27#値確認用(2) 28for j in range(n): 29 for i in range(m): 30 print(ontei[j][i]) 31 32#点数減算処理(0点以下になった場合は0点として処理は終了) 33for j in range(n): 34 for i in range(m): 35 if tensu[j]<=0: 36 tensu[j]=0 37 break 38 39 sa=ontei[j][i]-kadaikyoku[i] 40 if -5<=sa and sa<=5: 41 continue 42 elif -10<=sa and sa<=10: 43 tensu[j]-=1 44 elif -20<=sa and sa<=20: 45 tensu[j]-=2 46 elif -30<=sa and sa<=30: 47 tensu[j]-=3 48 else: 49 tensu[j]-=5 50 51tensu.sort(reverse=True) 52print(tensu[0])#最高点を表示

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

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

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

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

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

y_waiwai

2022/09/23 00:52

このままではコードが読めないので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
tokumei_python

2022/09/23 00:54

承知しました。まだ不慣れですので少々お時間かかると思いますが、修正いたします
guest

回答1

0

ベストアンサー

onteiの初期化方法に問題があります。Pythonあるあるです。
理由と解決法は以下を参照ください。

多次元のリストを作るにはどうしますか?

これは、* を使ったリストの複製がコピーを作らず、存在するオブジェクトへの参照を作るだけだからです。

投稿2022/09/23 01:21

can110

総合スコア38266

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

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

tokumei_python

2022/09/23 01:26

ご回答誠にありがとうございます。 こちらのサイトで解決法を確認させていただきます。
tokumei_python

2022/09/23 01:33

正常に動作しました! 自分の力では絶対にわからなかったので助かりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問