初めて質問させていただきます。
以下に示す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])#最高点を表示
回答1件
あなたの回答
tips
プレビュー