Pythonで多重ループ(複数ループ)から抜ける方法
講義マンです.
paizaにて多重,というか複数のfor文から一気に抜ける必要がありました.
そこで,とにかく抜けられる方法を書いときます.(美しくはない...
こんな感じで,例えば,numpyを使って全部0の行列を作って,1で置き換えていくことを考えます.(np.zerosの中身はタプルだよ,注意)
この時,1の置き換え,つまりfor文の部分(二つの多重ループ)を抜けたいとする.
つまりこう
このやり方だと,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関数で四捨五入しようとしたら,できてなくて失敗したので,書いておこうと思います.
このように,pyhton3では四捨五入したりしなかったり?するみたい.
正確には,丸めた時の誤差が小さくなるような賢いやり方をしているらしい.(wiki
しかしpaizaでそのままroundを使うと失敗の嵐なので,どうやら自分で関数を作るしかないようです.
できました.
ちなみに以下のサイト様を参考にしました.
ありがとうございました.