Ruby while ずっと繰り返す スクリプトの書き方

バイオインフォ道場、くまぞうです。

while文は、条件を満たす間ずっとコードブロックを繰り返す場合に使います。例えば、「ファイルの末尾までチェックする」とか、「ある条件を満たすまで」というような回数不定の条件などで用いると便利です。

スポンサーリンク



while文による繰り返し制御

while文の書き方

while文を繰り返すための条件式を書きます。条件がtrueの間ずっと繰り返しを行います。条件を満たしたか?の判断に、「繰り返し処理を脱出するbreak」や「途中で折り返すnext」などの制御文と一緒に用いられることが多いです。

while文の一般的な形式

while 条件式
    対応した文
    ...
end

プログラム

test_while.rb
#! /usr/bin/ruby

require 'io/console'

sec = ("A".."Z").to_a.sample
#puts sec
puts "PLEASE INPUT KEY(A-Z). Quit:Control+C"
begin
  count = 0
  while count<10
    key = (STDIN.gets.chomp)[0]
    count = count+1
    puts sec<key ? "A..#{key}" : "#{key}..Z"
    break if key==sec
  end
  puts count<10 ? "you win" : "ruby win"
rescue Interrupt => e
  exit
end

プログラム実行

test_while
$ test_while.rb
PLEASE INPUT KEY(A-Z). Quit:Control+C
-------------------------------------
A
A..Z
H
H..Z
O
O..Z
Q
Q..Z
V
A..V
T
T..Z
you win

プログラムについて

test_while.rbでは、入力されたキーをチェックするために「while」を使いました。標準入出力STDIN.getsを使って、キーボードから入力された文字を判断します。10回以内の入力でランダムに選ばれた文字と一致したら、「あなたの勝ち」です。10回以内に当てれなかったら、「ruby」の勝ちです。

whileの条件は入力回数のcount<10で、1回入力する度にcount+1されます。key==secでキーが一致したらbreakでwhileの繰り返しを抜けます。begin〜rescueは、強制終了のControl+Cを捕捉するために準備しました。 秘密のキーは、「("A".."Z").to_a.sample」で実行毎に1つ選びます。ヒントを表示していますが、最も近かった情報を記録して表示すると、もっと楽しめると思います。

スポンサーリンク