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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

387閲覧

Python3系で一部変数の使い方で分からない所があります。

amaturePy

総合スコア131

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2020/05/03 10:20

編集2020/05/03 11:13

Python3系で以下のコードの中で変数(len)の使い方に関して分からない物があります。
以下のコードは別のcsvファイルから行データを取得して、その取得した行の大きさによってif文による
処理を分岐させていると思うのですが、この最初に定義されているlen=0の0が何を意味しているのかがわかりません。
かなり初歩的な物かとは思うのですが、この変数の役割についてご教授頂けると幸いです。

def _load_file(file0,file1): f0 = open(file0, "r", encoding="utf-8", errors="", newline="") f1 = open(file1, "r", encoding="utf-8", errors="", newline="") fr0 = csv.reader(f0, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) fr1 = csv.reader(f1, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True) return f0, f1, fr0, fr1 def _id_choice(fr,f2,ind_row,ind_row2): len0 = 0 for row in fr: if len0>0: a, b = row[0], row[ind_row] b1 = b.split("/") for x in b1: if x!="": row_new = _replace(row[ind_row2]) row_new1 = row_new.split("/") ### check later! ### if len(row_new1)>1: if len(row_new1)!=len(b1): print("different numbers of items at line %s" % len0) c = row_new1[b1.index(x)] # check later f2.write("%s/%s\t%s\r\n" % (x,a,c)) # check later else: c = row_new1[b1.index(x)] f2.write("%s/%s\t%s\r\n" % (x,a,c)) else: f2.write("%s/%s\t%s\r\n" % (x,a,row_new)) len0 += 1 return len0
file0 = "./node_file2.csv" file1 = "./node_file3.csv" task_items = [0,1,2,3,4] # item number for each task if switch == 1: f0, f1, fr0, fr1 = _load_file(file0,file1) file2 = "./id_choice.tsv" f2 = codecs.open(file2, "w", "utf-8") f2.write("%s\t%s\r\n" % ("ID_bef/aft","choice")) len2 = _id_choice(fr0,f2,6,7) # depends on csv file len3 = _id_choice(fr1,f2,3,4) # depends on csv file f0.close() f1.close() f2.close() print(file2, len2, len3)

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

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

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

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

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

hayataka2049

2020/05/03 10:32 編集

もしかして、下にまだまだ記述があるのを質問者さんが省略したのでしょうか? その場合はすべて示してください。この部分だけでは何も判断できません。
amaturePy

2020/05/03 11:18

失礼しました。 自作関数の方が途中で切れておりました。 全体を加えました。
guest

回答2

0

ベストアンサー

そのコードだけであれば何もしていません。_id_choicereturnすらないですし、ちょっとよくわかりません。書いた人に聞いてみてください(たぶん作りかけだと思いますが)。

投稿2020/05/03 10:26

hayataka2049

総合スコア30933

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

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

amaturePy

2020/05/03 11:19

失礼いたしました。 関数部分が途切れておりました。 今ほど編集いたしました。
hayataka2049

2020/05/03 11:22 編集

0>0はFalseなので、最初の行だけif文ブロックの処理を飛ばしたいんでしょうね。 二行目以降は加算されて条件がTrueになります。
amaturePy

2020/05/03 12:30

ありがとうございます!なるほど。それで調べると出てきました。 これでFalseの扱いになるのですね。。。 最初の行を指定しているのは、 a, b = row[0], row[ind_row]の部分という認識でよろしいでしょうか? ただa,bという2つの変数を連続で指定したように見えますが。。。。 理解できそうなところでモヤモヤしてます。
hayataka2049

2020/05/03 12:39 編集

コメント欄でのやり取りには限界があるので、一晩くらい考えてもわからなかったら改めて情報を整理して質問を立てられることをおすすめします。
amaturePy

2020/05/03 12:54

承知しました! ありがとうございました!再度、考えてみて、分からなければ、再度質問してみます。
guest

0

作者に聞かないとアレですが、おそらく、
0を代入して、何かで使う予定なんでしょうけど、結局使われてないってことではないかと。

投稿2020/05/03 10:26

y_waiwai

総合スコア87800

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

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

amaturePy

2020/05/03 11:19

ありがとうございます。 不注意ながら関数部分が切れておりました。 今ほど追加しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問