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

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

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

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

Q&A

解決済

1回答

748閲覧

listの参照ができない

mai-mo_n.

総合スコア6

Python

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

1グッド

1クリップ

投稿2020/05/10 13:59

ある問題をといており、以下のコードを書きました。

python

1n,k = map(int,input().split()) 2a = list(map(int, input().split())) 3 4i = 0 5memo = [] 6cnt = 0 7cnt2 = 0 8s = 0 9while True: 10 memo.append(a[i]) 11 i = a[i] 12 if i in memo[:-1]: 13 cnt2 = memo[:-1].index(i) 14 cnt = len(memo[cnt2:]) 15 cntlist = memo[cnt2] 16 break 17s = (k - cnt2)%cnt 18ans = cntlist[s] 19 20print(ans)

実行し、入力を与えると
以下のエラーがでました。

Traceback (most recent call last): File "d.py", line 11, in <module> memo.append(a[i]) IndexError: list index out of range

print([a[i])とすると出力されるので、リスト「a」の参照時にエラーが起きているわけではないとおもったのですが、、
どこでミスがおきているのでしょうか。
よろしくお願いします。

DrqYuto👍を押しています

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

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

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

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

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

meg_

2020/05/10 14:06

memo.append(a[i])の前にprint(a[i])を入れたらどうなりますか?
mai-mo_n.

2020/05/10 14:14

4 5 3 2 4 1 という入力を与えると 3 3 1 2 4 Traceback (most recent call last): File "d.py", line 11, in <module> print(a[i]) IndexError: list index out of range と、ある程度の出力の後、エラーがでました。 while文の外でしかprintの出力について調べていませんでした。。。
mai-mo_n.

2020/05/10 14:43

リストの範囲からiが外れてしまうのは、シンプルに考え方の間違いからでした。。 申し訳ないです。 対応していただき、ありがとうございました。
guest

回答1

0

ベストアンサー

リスト「a」の参照時にエラーが起きているわけではないとおもったのですが、、

リストaの添え字での参照時にエラーが起きていますので、この行の前にiの範囲チェックを入れましょう。範囲外だったらどうしたいのでしょう?

投稿2020/05/10 14:29

otn

総合スコア84529

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

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

mai-mo_n.

2020/05/10 14:42

print(i)を直前に入れて 4 5 3 2 4 1 という入力をあたえると、 0 3 1 2 4 以下のようなエラーがでました。 Traceback (most recent call last): File "d.py", line 11, in <module> memo.append(a[i]) IndexError: list index out of range iがあきらかに範囲からはずれていました。 なぜ問題設定にあわずはずれてしまうかは、解決いたしました。 その問題に対する考え方をそもそも間違えていたからでした。 丁寧に対応していただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問