【问题标题】:Ruby: Put one message if the while loop breaks and another message if the while loop endsRuby:如果while循环中断则放一条消息,如果while循环结束则放另一条消息
【发布时间】:2015-07-06 22:02:01
【问题描述】:

从 Ruby 开始,做一个我在网上找到的练习。最初只是制作一个脚本,生成一个随机数,让用户猜测它是什么,并反馈猜测是太高“热”还是太低“冷”。

我想通过只给用户 5 次猜测来补充这一点。所以我想要的是让剧本说“正确!你赢了!”如果用户猜对了,但说“对不起,你输了。正确答案是#{answer}。”如果你用尽了所有的猜测。

我的代码:

answer = rand(1..100)
guess_count = 5

puts answer

print "Pick a number between 1 and 100. You get 5 guesses. "
guess = gets.chomp.to_i

while guess_count > 1
  guess_count -= 1
  break puts "Correct! You win!" if guess == answer
  if guess > answer
    print "Hot. "
  else
    print "Cold. "
  end
  puts guess_count != 1 ? "Guess again. You have #{guess_count} guesses left." : "Guess again. You have 1 guess left."
  guess = gets.chomp.to_i
end puts "Sorry, you lose. The correct answer was #{answer}."

但这不起作用,因为您不能像使用“break”那样在“end”末尾添加“puts”行。有什么建议吗?

谢谢。

【问题讨论】:

    标签: ruby while-loop break


    【解决方案1】:

    如何将字符串分配给一个变量并在循环结束时打印它?

    output = "Sorry, you lose. The correct answer was #{answer}."
    while guess_count > 1
      guess_count -= 1
      if guess == answer
        output = "Correct! You win!"
        break
      end
      if guess > answer
        print "Hot. "
      else
        print "Cold. "
      end
      puts guess_count != 1 ? "Guess again. You have #{guess_count} guesses left." : "Guess again. You have 1 guess left."
      guess = gets.chomp.to_i
    end
    puts output
    

    【讨论】:

    • 谢谢,这样就完成了。我想我更感兴趣的是是否有任何方法可以将所有内容都放在一条线上“当它到达循环结束时会发生这种情况,但如果循环提前退出就会被忽略”。但我想这不存在。
    【解决方案2】:

    也许你可以使用这样的东西

    def guess_number
      number, attempts = rand(1..100), 5
    
      while attempts != 0
        attempts -= 1
        puts "Your's guess ?"
        guess = gets.chomp.to_i
        if number == guess
          return "Correct! You win!"
        else
          if attempts != 0
            puts number < guess ? "Cold." : "Hot."
            puts "Guess again. You have #{attempts} attempts left."
          end
        end
      end
      "Sorry, you lose. The correct answer was #{number}."
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 2020-02-06
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      相关资源
      最近更新 更多