kiri___
@kiri___

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

二重ループで区切った数字を読み込みたい

解決したいこと

二重ループ内で、インデックス付きで獲得したい。

入力例
9 4 5 2 3
1 0
1 2
1 3
1 4
2 2
2 3
2 4
3 3
3 4

発生している問題・エラー

Traceback (most recent call last):
  File "Main.py", line 11, in <module>
    ans = li[i][j]        
IndexError: string index out of range

該当するソースコード

num, lengthwise, side, p, q = list(map(int,input().split()))
li = []
for i in range(num):
    li.append(input())

for i in range(lengthwise):
    for j in range(side):
        ans = li[i][j]        
        print(ans)

自分で試したこと

lengthwiseとsideの位置を置き替えました。過去の自分のコードを確認しました。

0

2Answer

scr.png

②で入力した配列を③で出力すると想定できますが、②と③で処理する行数と列数が合っていないので、これが最大の問題です。

入力例を二次元配列に読み込むならば、例えば↓こうです。

num, _, _, _, _ = list(map(int, input().split()))

li = []
for i in range(num):
    li.append(list(map(int, input().split())))

for i in range(len(li)):
    for j in range(len(li[i])):
        ans = li[i][j]
        print(ans, end=' ')
    print()

print(li)
1Like

ひとまず,今出ているエラーの解消まで

 num, lengthwise, side, p, q = list(map(int,input().split()))
 li = []
 for i in range(num):
-    li.append(input())
+    li.append(list(map(int, input().split())))
 
 for i in range(lengthwise):
     for j in range(side):
         ans = li[i][j]        
         print(ans)

理由としては,li[i]が文字列で,それに対するindexであるj番目にアクセスしようとしてエラーになります.解消するために入力2行目以降を2つの数値として受け取るのが一般的だと考えこのコードになります(これはあくまで競プロでよく見る状態なので推察できましたが,そうでない場合は全くの見当違いの回答になります).

この次には,

Traceback (most recent call last):
  File "/path/to/python/code/app.py", line 8, in <module>
    ans = li[i][j]        
          ~~~~~^^^
IndexError: list index out of range

というエラーが出ますが,文脈が不明なので適切な解決策を示しようがありません.

0Like

Your answer might help someone💌