这个想法很简单:如果" red"," green"," orange",或" yellow"输入然后消息传递。
我得到的结果是它失败了。另外,我想在colors
数组中随机选择一种颜色。
我相信使用它会起作用:
colors = [].sample
colors = ["red", "green", "orange", "yellow", "blue", "purple"]
correct_guesses = ["red","green","orange","yellow"]
total_guesses = 10
print "Enter your guess: "
guess = gets.chomp
if correct_guesses.include?(colors)
puts "You got it right."
else
puts "You got it wrong. Guess again."
end
答案 0 :(得分:2)
你想要的是
if correct_guesses.include?(guess)
通过检查correct_guesses
数组中的每个元素,检查您的猜测是否正确。
guess
是为您在控制台中键入的值的变量。
这也可行
if correct_guesses.any?{|g| g == guess}
这将检查correct_guesses
数组中的任何元素是否等于用户输入的值。
答案 1 :(得分:1)
您基本上要求colors
的任何元素都等于对象correct_guesses
。
所以在纸上看起来像这样:
["red", "green", "orange", "yellow", "blue", "purple"]
是否包含数组["red","green","orange","yellow"]
?
答案是错误的。 colors
只是一个包含6个字符串元素的数组。
那么在这种情况下,true
会传递什么?如果colors
有第二个数组,你可以通过它:
colors = [["red", "green", "orange", "yellow"], "blue", "purple"]
这显然有问题,现在是红色,绿色橙色&黄色全部耦合在一起,我们需要它们在同一组中或创建其他排列以便通过。
那就是说,我想我们都会得到你在这里尝试做的事情。您将此作为"将列表correct_guesses
中的任何内容与列表颜色中的任何内容进行匹配"。
这本质上意味着我们需要循环遍历每个数组才能获得结果。
if includes_any?(colors, correct_guesses)
puts "you are correct"
else
puts "you got it wrong"
end
然后你只需编写一个函数来进行这样的检查:
def includes_any(colors, correct_guesses)
correct_guesses.each do |guess|
return true if colors.include?(guess)
end
false
end
此示例与用户输入无关,因为您的原始代码似乎绕过了guess
变量,因此我也省略了它。