Ruby と Python の違い

本授業で扱う範囲では、Ruby と Python はほとんど同じだが、 微妙な構文上の違いがある。

Ruby Python
実行方法 普通にターミナルから実行する。
$ ruby sample.rb
普通にターミナルから実行する。
$ python sample.py
構文 Rubyでは、 関数定義 / if / while / for で コロン : が必要ない。 各文の終わりにはendが必要。 関数呼び出しにはカッコ () をつける必要はない。 プログラム中のコメントは # で始める。
# 0からn-1までの数を表示する。
def f(n)
    for i in 0..(n-1)
        puts i
        if i % 2 == 0
            puts "even"  # 偶数
        else
            puts "odd"   # 奇数
        end
    end
end
Pythonでは、 関数定義 / if / while / for で コロン : が必要。 文の終わりはインデントにより表現される。 関数呼び出しにはカッコ () が必要。 プログラム中のコメントは # で始める。
# 0からn-1までの数を表示する。
def f(n):
    for i in range(n):
        print(i)
        if i % 2 == 0:
            print("even")  # 偶数
        else:
            print("odd")   # 奇数
字下げ Rubyでは、字下げ(インデント) は必要ない。 たとえば、以下のプログラムは正しく動く。
def f(n)
for i in 0..n
puts i
if i % 2 == 0
puts "even"
else
puts "odd"
end
end
end
Pythonでは、字下げ(インデント) が必要。 以下のプログラムは動かない。 インデントは、普通スペース 4個分ずつおこなう。
def f(n):
for i in range(n):
print(i)
if i % 2 == 0:
print("even")
else:
print("odd")
基本的な計算
a = 2
b = a + 3
c = (a * b) % 5
割り算は、対象が整数の場合は整数となり (商)、 対象が実数の場合は実数となる。
14 / 5      # 2
14.0 / 5.0  # 2.8
a = 2
b = a + 3
c = (a * b) % 5
割り算は、//演算子を使った場合は整数となり (商)、 /演算子を使った場合は実数となる。
14 // 5   # 2
14 / 5    # 2.8
配列
a = [5,9,4,0]
a[3] = 7
x = a[0]
n = a.length
a = [5,9,4,0]
a[3] = 7
x = a[0]
n = len(a)
文字列の表示
w = "donkey ears"
puts "King Midas has "+w+" !"
w = "donkey ears"
print("King Midas has "+w+" !")
または
print("King Midas has", w, "!")
Pythonでは、カンマで文字列の間にスペースが入る。
文字列の入力
puts "name?"
name = gets()
name = input("name?")
文字列←→整数
"123".to_i
456.to_s
int("123")
str(456)
文字←→文字コード
"A".ord
65.chr
ord("A")
chr(65)
if文
if n < 0
    puts "negative"
elsif 0 < n
    puts "positive"
else
    puts "zero"
end
if n < 0:
    print("negative")
elif 0 < n:
    print("positive")
else:
    print("zero")
while文
n = 0
x = 16
while 0 < x
   n = n + 1
   x = x / 2
end
n = 0
x = 16
while 0 < x:
   n = n + 1
   x = x // 2
for文
a = [5,9,4,0]
for i in 0..3
  puts a[i]
end
a = [5,9,4,0]
for i in range(4):
    print(a[i])

Yusuke Shinyama