20160926

pythonで二通りある、%の使い道。連番ファイルの出力に使ったり、割り算の余りを計算したりする。

タグ:STR 連番 % Qiita
Qiitaに書こうと思ったら、既に載っていたので、こっちに書く。
http://qiita.com/ayumi0513/items/cc492db68d6d342e59f1
スタックオーバーフローにもあった。英語のお勉強になりますね。
http://stackoverflow.com/questions/961344/what-does-the-percentage-sign-mean-in-python-3-1

pythonで%が出てくる時
1 文字列の中(とすぐ外)に入ってる。(文字列フォーマットの指定のための%)
2 if条件式の中にたまにある。(余りを求めるための演算子の%。剰余演算、モジュロオペレーションModulo operation)

モジュロなんて、初めて聞いたよ。。。
余りといったら、リマインダー(remainder)だよ。
日本語でも、"余り"じゃなくて、"剰余"って難しく言い換えられるし、、、
いや、まったく別物なのかもしれない。面倒くさいので調べないけど。



1の、文字列の中(とすぐ外)に入ってる時は、C言語のprintf的な使い方。

yen = 102.5
"1 $ is %f"%yen#'102.500000'

文字列を、0で埋める時とかに使う。ファイル名は、文字列で指定するはずなので、ここにコレを応用すれば、連番ファイルが出力できる。

文字列で、1.txt〜9999.txtまで出力したい時がある。
よくある
1.txt
10.txt
100.txt
1000.txt
2.txt
.
.
.
となってしまう。

1.txt
2.txt
3.txt



と連番になってくれない。
0で埋めたいので、

a = 10
for i in xrange(a):
print("%02.f.txt"%i)

00.txt
01.txt
02.txt
03.txt
04.txt
05.txt
06.txt
07.txt
08.txt
09.txt

2の、if条件式の中にたまにあるやつは、余りを求めるための演算子としての%。剰余演算、モジュロオペレーションModulo operationとか呼ばれたりする。

>>> 100 / 11
9
>>> 100 % 11
1

あえて英語で、100 divided by 11 is nine, with a remainder of one.
 , 入れるんですね。

2は、具体的には、偶数(even number)か奇数(odd number)か判別するために使った。

(条件)2で割って、余りが0じゃなければ、、、
(命令)奇数と表示。
みたいな。

a = [0,1,2,3,4,5,6,7,8,9,10,11]
for i in xrange(len(a)):
if a[i]%2.0 != 0:
print("%d is Odd number"%a[i])
else:
print("%d is Even number"%a[i])

0は偶数ではないかもしれませんが、本によるらしいのですが、一応書き直してみたのですが。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q136531888

a = [0,1,2,3,4,5,6,7,8,9,10,11]
for i in xrange(len(a)):
if a[i] == 0:
print("%d is zero"%a[i])
elif a[i]%2.0 != 0:
print("%d is Odd number"%a[i])
else:
print("%d is Even number"%a[i])
タグ:STR 連番 % Qiita
posted by yuchan at 07:00 | Comment(0) | python
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: