为什么我会陷入这个 While 循环?

Why do I get stuck in this While loop?

While 循环 Ruby
我认为问题很简单,但我不太明白。当我回答正确的选项时,可以是 'Even' 或 'Uneven',它会反复问我这个问题。它认为问题出在 or operator

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 循环?

首先,条件应该用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,以便用户可以以case-insensitive的方式输入字符串,例如oddOdd
使用 loop do ... end 进行无限循环并使用 breakif 更容易退出循环。
该循环创建了一个单独的作用域,因此我们需要使 cur_answer 在外部作用域中可见。为此,使用 break cur_answerbreak 和一个参数 return 使循环 return 成为 cur_answer
使用一组所需值和 include?. The array of strings can be easily created using 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};"