为什么我会陷入这个 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的方式输入字符串,例如odd
、Odd
等
使用 loop do ... end
进行无限循环并使用 break
和 if
更容易退出循环。
该循环创建了一个单独的作用域,因此我们需要使 cur_answer
在外部作用域中可见。为此,使用 break cur_answer
(break
和一个参数 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};"
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的方式输入字符串,例如odd
、Odd
等
使用 loop do ... end
进行无限循环并使用 break
和 if
更容易退出循环。
该循环创建了一个单独的作用域,因此我们需要使 cur_answer
在外部作用域中可见。为此,使用 break cur_answer
(break
和一个参数 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};"