1

Ruby中
的while循环我认为问题很简单,但我并不真正理解它。当我回答正确的选项时,它可以是“均匀”或“不均匀”,它会反复问我这个问题。它认为问题出在or运营商身上

puts 'Which numbers do you want to see, the even or uneven ones?'
answer = gets.chomp
    
 while answer != 'Uneven' or answer != 'Even'
   puts 'Please answer Even or Uneven.'
   answer = gets.chomp
 end

有没有办法像这里一样用 2 个选项编写while循环?

4

1 回答 1

2

首先,条件应该由and而不是or连接。

puts 'Which numbers do you want to see, the even or uneven ones?'
answer = gets.chomp

while answer != 'Even' and answer != 'Uneven'
  puts 'Please answer Even or Uneven.'
  answer = gets.chomp
end

其次,代码可以进一步改进:
不要重复自己:gets.chomp在循环内部移动。
添加downcase, 以便用户可以不区分大小写的方式输入字符串,例如 ,oddOdd。使用和使用进行
无限循环 更容易退出循环。 循环创建了一个单独的范围,因此我们需要在外部范围中使其可见。为此,通过使用(带有参数返回该参数)使循环返回。使用所需值的数组和 替换重复的运算符。使用, 这里可以轻松创建字符串数组。loop do ... endbreakif
cur_answercur_answerbreak cur_answerbreak
!=include?Percent Strings%w[...]

#!/usr/bin/env ruby

puts 'Which numbers do you want to see, even or odd ones?'

answer = loop do
  cur_answer = gets.chomp.downcase
  break cur_answer if %w[ even odd ].include? cur_answer
  puts 'Please answer even or odd.'
end

puts "answer=#{answer};"
于 2020-09-29T16:06:16.190 回答