Last active
December 20, 2015 02:09
-
-
Save yucao24hours/6054328 to your computer and use it in GitHub Desktop.
1. 耳の遠いおばあちゃんのプログラムを書いてみましょう。 おばあちゃんに何を言っても(何をタイプしても)、叫ばない限り (つまり、全部大文字でタイプしない限り)、 は?! もっと大きな声で話しておくれ、坊や! と返事をします。もし叫んだときは、彼女はあなたの言葉を聞いて (少なくとも聞いた気がして)、 いやー、1938年以来ないねー! と大声で返事をします。 プログラムにちょっと真実味 を持たせるため、 1930年から1950年のランダムな数字で毎回違う年を叫ぶようにしましょう。
2. 上で作った、「耳の遠いおばあちゃんのプログラム」を拡張しましょう。 おばあちゃんはあなたに行って欲しくないのです。 あなたがBYEと叫んでもおばあちゃんは聞こえないふりをします。 BYEを3回連続で …
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| puts 'Hello! May I help you?' | |
| word = gets.chomp | |
| while word != 'BYE' | |
| if word.upcase == word | |
| puts 'Well, it hasn\'t happened since ' + (1930 + rand(21)).to_s + ' !' | |
| else | |
| puts 'Huh? Could you speak up, please??' | |
| end | |
| word = gets.chomp | |
| end | |
| puts 'Thanks. Come back anytime.' |
TRUISH_YEARS = (1930..1950).to_a.freeze
puts 'Hello! May I help you?'
while words = gets.chomp
case words
when 'BYE'
break
when words.upcase
puts "Well, it hasn't happened since #{TRUISH_YEARS.sample} !"
else
puts 'Huh? Could you speak up, please??'
end
end
puts 'Thanks. Come back anytime.'- 「入力ある限り繰り返す」の意図ならこんかいはwhileで良さそう(条件がややこしいときはloop do...endのが良さそう)
- 1930から1950っていうのが意図ならそう書きたい(1951とは)。で、その範囲はあらかじめ决まってる。
- 「入力を受け付ける」と「受け付けた入力に応じて処理をする(何かputsしたり抜けたり)」という境界で分けたほうが扱いやすいとおもう
BYEは3回がんばれ 👵
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
rubyでは
prettyOldWoman.rbよりpretty_old_woman.rbがよいですね。クラス名は Upper Camel Case、ファイル名は Snake Case とするのが通例です。
autoloadがいずれ出てくるので習慣つけましょう。while word != 'BYE'until word == 'BYE'という書き方もできます。if value != conditionよりunless value == conditionのほうが意図が伝わりやすい場合もあるので、そのときに適した書き方をしましょう。この辺はコーディングルールで規定されていることも多そうです。
(1930 + rand(21))Kernel.#randは range を引数に取るので、rand(1930 .. 1951)とも書けますね。while true明示的に無限ループを書く場合や脱出条件が複雑だったり複数あったりする場合は
Kernel.#loopを使う方がよいかもしれません。word = gets.chomp2回出てきますが、1回で済ませる方法はないでしょうか?
続編blog楽しみにしてます! 🌺