Pythonで多重ループ(複数ループ)から抜ける方法

講義マンです.

paizaにて多重,というか複数のfor文から一気に抜ける必要がありました.

そこで,とにかく抜けられる方法を書いときます.(美しくはない...

f:id:kazenoha:20171009224429p:plain

こんな感じで,例えば,numpyを使って全部0の行列を作って,1で置き換えていくことを考えます.(np.zerosの中身はタプルだよ,注意)

この時,1の置き換え,つまりfor文の部分(二つの多重ループ)を抜けたいとする.

つまりこう

f:id:kazenoha:20171009230016p:plain

このやり方だと,i = 0, j =  1の時,break二回して抜けてます.

もっといいやり方があると思うので教えてください

python3で後ろから文字を削除したい(rstrip,replace)

うどんくん作

pyhton3にて,

 

文字列の後ろから任意の文字列を削除したい時使える関数を紹介します。

 

rstrip関数 使い方

文字列.rstrip(任意の文字列)

 

プログラムコード

S="ABCD"
r="BCD"
ans=S.rstrip(r)
print(ans)

出力結果

A

 

rstrip関数の罠

rstrip関数では、削除する任意の文字列の順番まで判別しません。

プログラムコード

S="ABCD"
s="DBC"
ans=S.rstrip(s)
print(ans)

出力結果

A

rstrip関数では、削除する任意の文字列の順番まで判別しません。

プログラムコード

S="ABCDBCD"
s="BCD"
ans=S.rstrip(s)
print(ans)

出力結果

A

 

どうしても後ろから指定の文字列の削除を行いたい場合にはreplace関数を使いましょう。

replace関数 使い方

文字列.replace("置換前の文字" , "置換後の文字" , 置換回数)

 

replace関数は文字を置換する関数ですが置換後の文字列を""にすることで文字の削除に利用することもできます。

ただしreplace関数は文字列の先頭から処理を始めるので後ろから処理する際には文字列を逆転して処理をしましょう。

文字列の逆転は

文字列[::-1]

で行うことができます。

 

プログラムコード

S="BCDABCDBCD"
s="BCD"
S=S[::-1]
s=s[::-1]
ans=S.replace(s,"",1)
ans=ans[::-1]
print(ans)

出力結果

BCDABCD

 

これで完成です。

最後に逆転しなおすのを忘れないようにしましょう。

python3のroundで四捨五入できないという罠

どうも、講義マンです.

pyhton3にて,

paizaで四捨五入の際、round関数で四捨五入しようとしたら,できてなくて失敗したので,書いておこうと思います.

 

f:id:kazenoha:20171009202257p:plain

このように,pyhton3では四捨五入したりしなかったり?するみたい.

正確には,丸めた時の誤差が小さくなるような賢いやり方をしているらしい.(wiki

しかしpaizaでそのままroundを使うと失敗の嵐なので,どうやら自分で関数を作るしかないようです.

 

f:id:kazenoha:20171009204720p:plain

 

できました.

ちなみに以下のサイト様を参考にしました.

ありがとうございました.

python3の四捨五入でハマったのでメモ - Qiita

端数処理 - Wikipedia

ブログ開設しました

どうも、サークル風の葉,主宰の講義マンです.

晴れてサークルとして成果物をだしていこうということになったのでブログをつくってみました.

私の好きなものは化学機械であり,化学機械に対して考察,または実践をしていった経過を書いていこうと思います.

また,プログラミングも最近始めました.できるだけ詰まったところを備忘録代わりに書いていこうと思います.