ここの更新数日さぼってしまった。

年だからかな、ここ2〜3日は夜起きていられなかったですよorz

子どもを寝かしつけようとして、そのまま子どもと一緒に(時には子どもより先に)寝てしまっていました。もう水曜日には30になってしまうし、いつまでも若くないって事なのかなとちょっとブルーな気持ちっす。

ほんと、非常に残念。慙愧の念に耐えないです。
(その空気を読んだのか、奥さんやらKidsやらが風邪をひいたりして一家でgdgdになってるし)


明日なんて来なければ良いのに><
そうすれば三十路にならずに済むのに><

5.さぁPython!(基礎構文-2 演算子とか)

Python演算子Javaと比べてみようとして。。。で、複素数がよく分からなかったせいで結果の検証が出来なかった、とかちょっとてこずりましたが何とかまとめました。

#encoding=shift_jis

# 単項演算
p1=10
print +p1       #10
print ++p1      #10
print -p1       #-10
print --p1      #10
print +-p1      #-10
print ~p1       #-11

# 二項演算
p1=1
p2=2

# 四則演算
print p1+p2     #2
print p1-p2     #-1
print p1*p2     #2
print p1/p2     #0

# 余りを求める
print p1%p2     #1

# 色々な数字
p2=4
print p1+p2     #5(整数)
p2=0.55
print p1+p2     #1.55(浮動小数点数)
p2=010
print p1+p2     #9(8進数)
p2=0x10
print p1+p2     #17(

# 値の代入をまとめて実施
p1=p2=100
print p1
print p2

# 複素数
p1=1.5+0.5j
print p1        #(1.5+0.5j)
print p1.real   #1.5
print p1.imag   #0.5
# ちなみにこれでもOK
p1=complex(1.5,0.5)
print p1        #(1.5+0.5j)

# 小数点数丸め
p1=3.1415
print round(p1,2)   #3.14

コメントには、出力が予想される値を書いています。そしてこれを実行した結果がこちら。(ログごときに縦に長く占有されても辛いのでちょっと調整しました)

10
10
-10
10
-10
-11
3
-1
2
0
1
5
1.55
9
17
100
100
(1.5+0.5j)
1.5
0.5
(1.5+0.5j)
3.14

続いてJavaでこれを実装してみました。

package for_blog;

import java.io.PrintStream;
import java.math.BigDecimal;
import java.text.NumberFormat;

public class Entry02 {

    public static void main(String[] args) {
        PrintStream out = System.out;

//      # 単項演算
//      p1=10
        int p1 = 10;
//      print +p1       #10
        out.println(+p1);
//      print ++p1      #10
        out.println(++p1);
//      print -p1       #-10
        out.println(-p1);
//      print --p1      #10
        out.println(--p1);
//      print +-p1      #-10
        out.println(+-p1);
//      print ~p1       #-11
        out.println(~p1);

//      # 二項演算
//      p1=1
        p1 = 1;
//      p2=2
        int p2 = 2;

//      # 四則演算
//      print p1+p2     #2
        out.println(p1 + p2);
//      print p1-p2     #-1
        out.println(p1 - p2);
//      print p1*p2     #2
        out.println(p1 * p2);
//      print p1/p2     #0
        out.println(p1 / p2);

//      # 余りを求める
//      print p1%p2     #1
        out.println(p1 % p2);

//      # 色々な数字
//      p2=4
        p2 = 4;
//      print p1+p2     #5(整数)
        out.println(p1 + p2);
//      p2=0.55
        float p2_2 = 0.55F;
//      print p1+p2     #1.55(浮動小数点数)
        out.println(p1 + p2_2);
//      p2=010
        p2 = 010;
//      print p1+p2     #9(8進数)
        out.println(p1 + p2);
//      p2=0x10
        p2 = 0x10;
//      print p1+p2     #17(
        out.println(p1 + p2);

//      # まとめて代入
//      p1=p2=100
        p1 = p2 = 100;
//      print p1
        out.println(p1);
//      print p2
        out.println(p2);

//      # 複素数
//      p1=1.5+0.5j
//      print p1        #(1.5+0.5j)
//      print p1.real   #1.5
//      print p1.imag   #0.5
//      # ちなみにこれでもOK
//      p1=complex(1.5,0.5)
//      print p1        #(1.5+0.5j)
        // よくわかんない
        // Hint?=http://d.hatena.ne.jp/t_yano/20060527/complex
        // きしださんとかけいすけさんに聞いたら、波線とか音声フィルタの計算に使うらしい。
        Object orz = new NullPointerException("null");

//      # 小数点数丸め
//      p1=3.1415
//      print round(p1,2)   #3.14
        BigDecimal bd = new BigDecimal(3.1415D);
        NumberFormat nf = NumberFormat.getNumberInstance();
        nf.setMaximumFractionDigits(2);
        System.out.println(nf.format(bd));
    }

}

はい。ちょびっと頑張って駄目だったので、無期延期にしちゃいました。なんという根性無し><


ともあれ、基本的に演算子PythonJavaも似たような記法で動くんですね。とくに(私が完敗した)複素数と小数点数の丸めに限っては、ビルトイン関数でまかなえてしまう点でPythonが便利なように感じました。というか、何より整数も浮動小数点数も同じ変数を使い回せるのが楽です。実業務でそんなことすると何が起こるかgkbrですが、こういった簡易なコードを書く時にこういったものが案外便利なんですよね。
まだ触れていないですが、Pythonのコードブロックと言い、実はPythonってものすごくSI向けな言語なんじゃないか、とか思えてきましたよ。


ただ、ちょっと恥ずかしかったのが、Javaも「まとめて代入」って出来たんですね、知りませんでしたorz(もちろん、実際にまとめて代入しなきゃいけないようなシチュエーションってそうそう無い、というのもあるんでしょうが。。。知識としては持っておくべきでした。反省