2012-09-13 35 views
-1

在某些情況下,這樣的表達紅寶石防止被零除

...some loop 
    solution = n[0].to_s+a[0]+n[1].to_s+a[1]+n[2].to_s+a[2]+n[3].to_s+a[3]+n[4].to_s+a[4]+n[5].to_s 
    puts solution if eval(solution) == 100 

#=> `eval': divided by 0 (ZeroDivisionError) 

如何防止這種情況發生,或者也許,跳過循環計算,並繼續

回答

3

如果你真的只是想跳過當前的計算和步最簡單的方法是開始營救聲明

loop do 
    begin 
    solution = n[0].to_s+a[0]+n[1].to_s+a[1]+n[2].to_s+a[2]+n[3].to_s+a[3]+n[4].to_s+a[4]+n[5].to_s 
    puts solution if eval(solution) == 100 
    rescue ZeroDivisionError 
    # catch error 
    end 
end 
1

哇。我懷疑:

n[0].to_s+a[0]+n[1].to_s+a[1]+n[2].to_s+a[2]+n[3].to_s+a[3]+n[4].to_s+a[4]+n[5].to_s 

又名:

n[0].to_s + 
a[0] + 
n[1].to_s + 
a[1] + 
n[2].to_s + 
a[2] + 
n[3].to_s + 
a[3] + 
n[4].to_s + 
a[4] + 
n[5].to_s 

可以更好地寫爲:

n[0..5].map(&:to_s).zip(a[0..4]).flatten.join 

或:

n.map(&:to_s).zip(a).flatten.join