在 Ruby 中,是否有办法让用户在输入错误范围时通过条件语句循环返回?

In Ruby, is there a way to have the user loop back through a conditional statement if they input the wrong range?

我想知道是否有办法使用 if-else 语句来触发让用户重新输入有效输入的循环?我曾尝试使用 While 循环,因为这种结构在技术上是可行的,但我无法获得正确的实现。截至目前,我已经使用 if-else 条件单独测试有效范围内的每个数字,如果用户输入这些值中的任何一个,它就会继续。 else 语句告诉用户这是不正确的,但我似乎无法找到一种方法让用户返回,直到他们输入有效数字。 这是我正在使用的代码:

 class Humanoid < Player
  def play()
    userinput = print 'Enter your move [1 - 5]: '
    input = gets&.rstrip
    if input == '5'
      return input
    elsif input == '4'
      return input
    elsif input == '3'
      return input
    elsif input == '2'
      return input
    elsif input == '1'
      return input
    else
      return "That is not an option, choose again"
    end
  end
end

如果不正确,是否可以提示用户输入另一个号码?我觉得它应该是,但我目前不知道该怎么做。

我会使用一个永远运行的简单 loop,除非你明确地 return(或 break)来自它:

class Humanoid < Player
  def play()
    loop do
      print 'Enter your move [1 - 5]: '
      input = gets.chomp
    
      if %w[1 2 3 4 5].include?(input)
        return input
      else
        puts "That is not an option, choose again"
      end
    end
  end
end

此外,我清理了你的条件。

我会这样写:’

loop do
    userinput = print 'Enter your move [1 - 5]: '
    input = gets&.rstrip
    if input == '5'
      return input
    elsif input == '4'
      return input
    elsif input == '3'
      return input
    elsif input == '2'
      return input
    elsif input == '1'
      return input
    puts "That is not an option, choose again"
end 

基本上,这只是让它永远重复,直到返回一个值。如果 none 是,则打印问题并再次循环。