質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

3回答

1107閲覧

Ruby n回目だけ違う処理(最後の繰り返し処理)

kinakoooo

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

2クリップ

投稿2019/11/29 00:38

編集2019/11/29 03:25

ruby

1#現在書いているコード 2animals = ["dog", "cat" , "rabbit", "monkey", "elephant", "chameleon"] 3for animal in animals do 4 puts animal 5end 6 7answer = animals[1] 85.times do |i| 9 puts "#{i+1}回目" 10 if answer == gets.chomp 11 puts "正解" 12 exit 13 else 14 puts "不正解" 15 end 16end

現在、動物を当てるゲームを作っています。
最後の繰り返し処理だけ違う処理にしたいです。

n回目だけ、
puts "不正解です! 正解は#{answer}でした!"

 実行結果:不正解です!正解はcatでした!
のような感じにしたいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

参考情報

  • 【Rubyメモ】配列の要素で最初と最後だけ特別な処理をする

http://asamiran.hatenablog.com/entry/2017/07/17/230547

投稿2019/11/30 00:37

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

このコードに限定して考えると、正解の時はexitするので、timesのループの後で、
puts "不正解です! 正解は#{answer}でした!"
すればいいかと。

一般的には、回数が決まっている繰り返しであれば、最後が何回目かはわかるので、ループカウンターをそれと比較するのでしょう。

Ruby

1#現在書いているコード 2animals = ["dog", "cat" , "rabbit", "monkey", "elephant", "chameleon"] 3n = animals.size 4for animal in animals do 5 puts animal 6end 7 8answer = animals[1] # ここは乱数で 9 10(n-1).times do |i| 11 puts "#{i+1}回目" 12 if answer == gets.chomp 13 puts "正解" 14 break 15 else 16 if i < n-2 17 puts "不正解" 18 else 19 puts "不正解です! 正解は#{answer}でした!" 20 end 21 end 22end

後半は、こっちの方が良いか。もっと別の手も考えましたが、わかりにくくなるので止めました。

Ruby

1(1...n).each do |i| 2 puts "#{i}回目" 3 if answer == gets.chomp 4 puts "正解" 5 break 6 else 7 if (1...n-1) === i 8 puts "不正解" 9 else 10 puts "不正解です! 正解は#{answer}でした!" 11 end 12 end 13end

投稿2019/11/29 04:58

otn

総合スコア84553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/11/29 08:14 編集

> わかりにくくなるので止めました。 一応書いておきます。 (1...n).zip(1...n-1).each do |i, cont| puts "#{i}回目" if answer == gets.chomp puts "正解" break else if cont #続きがあるかどうか puts "不正解" else puts "不正解です! 正解は#{answer}でした!" end end end
kinakoooo

2019/11/29 07:41

いつもありがとうございます????‍♂️
guest

0

each_with_index

これを使えばいいのではないでしょうか。

投稿2019/11/29 00:44

2KOH

総合スコア999

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問