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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python

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

Q&A

解決済

1回答

927閲覧

pythonにてリスト内をif文で検知してbreakできない

jasa

総合スコア17

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python

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

0グッド

0クリップ

投稿2019/07/12 04:37

編集2019/07/12 04:44

前提・実現したいこと

pythonにおいて、csvファイルにて(260,260)の座標からy=1*x+4が通る座標内の数を調べ、座標内の数が65535となる座標の一つ手前の座標を求めたいです。

発生している問題・エラーメッセージ

エラーメッセージは無いです。
問題なのは、csvの259行目259列目(l[260][260])とその周り100座標分くらいが0で、その周囲を65535で200座標分くらい囲っているのに、if文でbreakしないことです。
rangeは十分にとってあります。
print(o)の結果は表示され、260から449までの数字が表示され、190回for文が回っている事が確認できます。
print(op)の結果は[]と表示されるので、opに格納できていないことが確認できます。
print("if文内の", op)の結果は何も表示されないので、if文で検知できていないです。

なお、if l[p][o] == 65535:をif l[p][o] > 1:とすると下記の様なエラー文が出ます。

python

1Traceback (most recent call last): 2 File "finc.py", line 15, in <module> 3 if l[p][o] < 1: 4TypeError: '<' not supported between instances of 'str' and 'int'

該当のソースコード

python

1import csv 2import pprint 3 4with open("cs.csv") as f: 5 reader = csv.reader(f) 6 l =[row for row in reader] 7 8op=[] 9o=int() 10p=int() 11P=260 12o=260 13for j in range(190): 14 if l[p][o] == 65535: 15 op.append(o) 16 op.append(p) 17 print("if文内の", op) 18 break 19 o=260+j 20 p=1*(260+j)+4 21 print(o) 22print(op)

よろしくお願いいたします。

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

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

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

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

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

hayataka2049

2019/07/12 04:38

teratailの仕様上、デフォルトではインデントが消えます。質問文を編集して、<code>ボタンで挿入できるコードブロックの中にコードを入れてください。
jasa

2019/07/12 04:45

ご指摘とご教授ありがとうございます。 宜しくお願い致します。
guest

回答1

0

ベストアンサー

csv.readerから読み込むと型は文字列になります。予め整数型などに変換してください。

python

1with open("cs.csv") as f: 2 reader = csv.reader(f) 3 l =[[int(x) for x in row] for row in reader]

とかでいけるかな。

投稿2019/07/12 04:46

編集2019/07/12 04:46
hayataka2049

総合スコア30933

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

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

jasa

2019/07/12 04:49

無事解決できました! 素早く、適格なご回答ありがとうございましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問