| Python | Ruby | |
NULL |
None |
nil |
加算 |
1+2 |
1+2 |
減算 |
1-2 |
1-2 |
乗算 |
1*2 |
1*2 |
累乗 |
2**3 |
2**3 |
除算 |
3/1 |
3/1.to_f |
切り捨て除算 |
3//2 |
3/2 |
剰余演算 |
3%2 |
3%2 |
コメント |
#foo baz |
#foo baz |
Boolean |
True,False |
true,false |
小なり, 大なり |
<, > |
<, > |
または, かつ |
|,or #または &,and #かつ |
|,||,or #または &,&&,and #かつ |
同値 |
3==4,3 is 4 |
3==4,3===4 |
同値ではない |
3!=4,3 is not 4 |
3!=4 |
否定 |
not |
!,not |
ある範囲内に存在するか |
1 in range(5) |
(0...5)===1 #一見中置演算子に見え,交換法則が成り立ちそうであるが #実はメソッドであるため,交換法則は成り立たない |
型の判定 |
isinstance(1,int) |
Integer===1 |
変数宣言 |
i=1 |
i=1 |
定数宣言 |
ない |
FOO=1 #英字大文字で始まれば定数 |
Hello,World |
print("Hello,World")
#かっこはなくてはならない
|
print("Hello,World\n")
#かっこはなくてもよい
#puts("Hello,World")やprintf("Hello,World\n")でも可
|
構文の中身の判断 |
インデントで判断 |
endで判断 |
関数宣言 |
def foo():
pass
|
def foo() end |
再帰関数 |
def foo():
foo()
|
def foo()
foo()
end
|
if |
if i==0:pass elif i==1:pass else:pass #戻り値はなし |
if i==0 then elsif i==1 then else end #戻り値は最後に評価した式の値 or nil |
whileで5回ループ |
i=0
while i<5:
i++
#戻り値はなし
|
i=0
while i<5 do #doはなくてもよい
i++
end
#戻り値はnil
|
forで5回ループ |
for i in range(5):
pass
#戻り値はなし
|
for i in 0...5 do #doはなくてもよい end #戻り値は0...5 |
無限ループ |
while True:
pass
|
loop do end |
ループ中にbreakしたら実行されないHello,Worldの記述 |
for i in range(5)
pass
else
print("Hello,World")
|
if( for i in 0...5
end != nil) then
print("Hello,World\n")
end
|
switch |
if n==1:
pass
elif n in range(2,5):
pass
else: #defaultに相当
pass
|
case n when 1 then when 2...5 then else #defaultに相当 end #case式の条件評価は===演算子で行っている #戻り値は戻り値は最後に評価した式の値 |
整数を保存するデータ型 |
int型のみ,データ長制限はメモリサイズ |
Integer型のみ,データ長制限はメモリサイズ |
小数を保存するデータ型 |
float型のみ,C言語のdoubleで実装されている |
Float型のみ,C言語のdoubleで実装されている |
その他の数値を保存するデータ型 |
複素数を保存するcomplex型がある |
複素数を保存するComplex型と, 有理数を保存するRational型がある |
配列の宣言と,添え字番号の要素へのアクセス |
a=[1,2,3] a[2] #実際はリスト |
a=[1,2,3] a[2] #実際はArrayオブジェクト |
リストの作成 |
l=[] #l=list()でも可 |
l=[] #l=Array.new()でも可 |
要素が全て1で長さが3のリストの作成 |
l=[1,1,1] #l=[1 for i in range(3)]やl=list((1,1,1))でも可 |
l=[1,1,1] #l=Array.new(3,1)でも可 |
要素が(添え字番号+1)の二乗で長さ3のリストの作成 |
l=[(i+1)**2 for i in range(3)] |
Array.new(3){|i|(i+1)**2}
|
リストの第2要素の後ろに整数要素5の追加 |
l.insert(2,5) |
l.insert(2,5) |
リストの第2要素の削除 |
l.pop(1) |
l.delete_at(1) |
sに入っている文字列のコピー |
t=s |
t=s |
文字列のサイズ取得 |
len("Hello")
|
"Hello".size() #かっこはなくてもよい #"Hello".length()でも可.同様にかっこはなくてもよい |
文字列の連結 |
"Hello"+"World" #変数がない部分のみ,+演算子は省略可能 |
"Hello"+"World" #変数がない部分のみ,+演算子は省略可能 |
構造体 |
class foo:
def __init__(self,a=None,b=None):
self.a=a
self.b=b
#メソッドのないクラスを構造体のように扱うことができる
|
class Foo #Rubyのクラス名は英字大文字から始まらなければならない
def initialize(a=nil,b=nil)
@a=a
@b=b
end
attr_accessor:a
attr_accessor:b
#Rubyのクラスメンバは全て外からの直接アクセスは不可能
#なのでattr_accessor:でアクセスできるようにしている
end
#メソッドのないクラスを構造体のように扱うことができる
|
読込み専用モードでのファイル読み込み |
f=open("FileName","r")
#使い終わったファイルはclose()しなければならない
#この例の場合の記述はf.close()
|
f=File.open("FileName","r")
#使い終わったファイルはclose()しなければならない
#この例の場合の記述はf.close()
|
close()を自動でしてくれるファイル読み込み |
with open("FileName","r") as f:
pass
#with文を抜けると自動的にf.close()される
#f = open("FileName","r")
#with f:
# pass
#でも可
|
File.open("FileName", "r") do |f|
end
|
配列aの内容を一行ずつファイルに書き込み |
with open("FileName","w") as f:
for i in a:
f.write(str(i))
f.write("\n")
|
File.open("FileName", "w") do |f|
for i in a
f.write(i)
f.write("\n")
#この二つは合わせてf.puts(i)と等価
end
end
|