我开始学习编程,我选择使用Codecademy学习Ruby。但是,我试图巩固我的学习,但我无法让这个工作!
print "What is 2 + 2 ="
sum_var = gets.chomp
sum_var.downcase!
if sum_var == "four" || 4
puts "Correct!"
else sum_var != "four" || 4
puts "Wrong! #{sum_var} is not the answer!"
end
它只是返回'正确!'即使它是错的。
答案 0 :(得分:5)
您需要编写如下代码:
print "What is 2 + 2 ="
sum_var = gets.chomp
# don't need to apply the bang method like you did - sum_var.downcase!
if sum_var.downcase == "four" || sum_var == '4'
puts "Correct!"
else # else don't need condition checking, so I removed.
puts "Wrong! #{sum_var} is not the answer!"
end
sum_var = gets.chomp
会为您提供字符串,不会将您转换为数字。所以,即使你从控制台传递号码,它也会变成"4"
或"7"
等。
让我向您解释为什么总是将"Correct!"
作为输出
sum_var == "four" || 4
- 在此表达式中,只要sum_var
不等于"four"
,您的第一个表达式就会被评估为false
,但是当控件去测试第二个表达式时,它找到4
。您知道在Ruby中,除了true
和nil
之外,所有对象都是false
。因此4
被视为true
。因此,在您的代码中始终会if
块被执行,并且您将继续作为输出"Correct!"
。
现在在你的代码中,你做了一些其他的混乱,我在上面的代码中纠正了。
答案 1 :(得分:1)
您的代码存在问题
if sum_var == "four" || 4
==
通常会返回false
,因此会评估第二部分,因为==
的优先级高于||
的优先级。由于除false
和nil
之外的所有对象都是" truthy"在Ruby中,无论用户输入什么,表达式最终都是true
。 @ArupRakshit提出的更正,只是想增加一些理由。