为什么我在 ruby 中使用 while 和 until 得不到相同的结果?
Why am I not getting same result using while and until in ruby?
好的,我在 windows x64 上使用 Ruby 2.26。
问题是,我真的只是学习如何编码的新手,所以我不确定这是否真的是一个错误,或者这只是我在某个地方犯的错误,因为这个错误非常非常简单,有点愚蠢(?)@_ @
'while' 和 'until' 运算符。
据我所知,
action = gets.chomp
until action == "a" || action == "b"
puts "Answer a or b"
action = gets.chomp
end
puts "The answer: " + action
和
action = gets.chomp
while action != "a" || action != "b"
puts "Answer a or b"
action = gets.chomp
end
puts "The answer: " + action
应该会产生同样的结果。但是在这里使用 'while' 运算符,即使我将 "a" 或 "b" 放在 powershell 上的用户输入上,也会让我无限循环。
谁能告诉我这是为什么?或者这真的是一个错误? (这很遗憾,因为 while and until 运算符应该是一个非常基本的逻辑运算符,对吧?)
解决方案
与
相反
action == "a" || action == "b"
是
action != "a" && action != "b"
参见 De Morgan's Laws。
您的代码
action != "a" || action != "b"
总是 true
:
- 如果
action
是"a"
,就是false || true
,也就是true
- 如果
action
是"b"
,就是true || false
,也就是true
- 如果
action
两者都不是,就是true || true
,也就是true
所以你的循环确实是 while true
。
注意:Ruby 中肯定存在错误,其中一些可能非常简单。但这并不意味着您不理解的任何内容都是错误。 ;)
语言和布尔逻辑
从句子中提取布尔逻辑并不总是那么容易:
"You like cats and dogs"
您想知道您是否喜欢animal
。为此,您需要检查 animal
是狗 还是 猫。
如果你检查 animal
是一只狗 和 一只猫,你肯定不会喜欢这种动物!
好的,我在 windows x64 上使用 Ruby 2.26。 问题是,我真的只是学习如何编码的新手,所以我不确定这是否真的是一个错误,或者这只是我在某个地方犯的错误,因为这个错误非常非常简单,有点愚蠢(?)@_ @
'while' 和 'until' 运算符。
据我所知,
action = gets.chomp
until action == "a" || action == "b"
puts "Answer a or b"
action = gets.chomp
end
puts "The answer: " + action
和
action = gets.chomp
while action != "a" || action != "b"
puts "Answer a or b"
action = gets.chomp
end
puts "The answer: " + action
应该会产生同样的结果。但是在这里使用 'while' 运算符,即使我将 "a" 或 "b" 放在 powershell 上的用户输入上,也会让我无限循环。 谁能告诉我这是为什么?或者这真的是一个错误? (这很遗憾,因为 while and until 运算符应该是一个非常基本的逻辑运算符,对吧?)
解决方案
与
相反action == "a" || action == "b"
是
action != "a" && action != "b"
参见 De Morgan's Laws。
您的代码
action != "a" || action != "b"
总是 true
:
- 如果
action
是"a"
,就是false || true
,也就是true
- 如果
action
是"b"
,就是true || false
,也就是true
- 如果
action
两者都不是,就是true || true
,也就是true
所以你的循环确实是 while true
。
注意:Ruby 中肯定存在错误,其中一些可能非常简单。但这并不意味着您不理解的任何内容都是错误。 ;)
语言和布尔逻辑
从句子中提取布尔逻辑并不总是那么容易:
"You like cats and dogs"
您想知道您是否喜欢animal
。为此,您需要检查 animal
是狗 还是 猫。
如果你检查 animal
是一只狗 和 一只猫,你肯定不会喜欢这种动物!