前提・実現したいこと
Pythonを独学で学んでいる初心者です。
データをcsvファイルにして、yのデータについて1行ずつデータを読み込み、2つ前のデータよりも10%減少したときの数値を取得したいです。
試したこと
with open("xxx.csv")as f: reader = csv.reader(f) l = [row for row in reader] y=(l[1][1]) yy=int(y) for b in range(1,501): row=1+1*b y=(l[row][1]) if yy< 0.9*(yy-2): break print ('10%減少',row)
発生している問題・エラーメッセージ
y=(l[row][1]) IndexError: list index out of range
とエラーが出てしまいます。
また、yに伴うxの数字も取得もしたいです。そちらも教えていただけたらと思います。
> x=(l[1][row])のところで
とありますが、ご提示のコードにはその部分が見当たりません。
また、Pythonはインデント(字下げ)の位置がとても大事なプログラミング言語です。コードはマークダウン記法を用いて読みやすくするようにしてください。インデントも崩れ、読みづらいとそれだけで回答は離れがちになります)
https://teratail.com/help/question-tips#questionTips3-5-1
https://teratail.com/questions/238564
あたりを参考にしてソースコードを適切に表示するようにしてください。
コードの間違い修正しました。
コード入力用の書き方があったのですね、、、ご指摘ありがとうございます。
> y=(l[row][1])
エラーが発生したときの"row"の値を確認してください。エラーの理由が分かるはずです。(エラーが起きたらデバッグしましょう)
回答1件
あなたの回答
tips
プレビュー