-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)

この状況を回避する方法、またはループ計算をスキップして続行する方法

4

2 に答える 2

3

現在の計算をスキップして前に進みたい場合、最も簡単な方法は begin-rescue ステートメントです。

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
于 2012-09-13T20:16:36.473 に答える
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
于 2012-09-14T02:12:57.810 に答える