Ruby on rails 20个问题问答游戏应用程序问题?

Ruby on rails 20个问题问答游戏应用程序问题?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正试图为学校编写一个20个问题的应用程序,但我遇到了一个减速带 在第26行,我得到了错误:20q2.rb:26:warning:string literal in condition 另外,我有一个评分系统,可以告诉用户他们的最终分数是多少,它会在每个问题之后打印分数,而这个分数应该在测验结束时显示出来 如果有人能帮我解决这两个问题,那就太好了 代码如下: #list quesions in an array QANDA = [["Is the sky blue?", "y"],["Is i

我正试图为学校编写一个20个问题的应用程序,但我遇到了一个减速带

在第26行,我得到了错误:
20q2.rb:26:warning:string literal in condition

另外,我有一个评分系统,可以告诉用户他们的最终分数是多少,它会在每个问题之后打印分数,而这个分数应该在测验结束时显示出来

如果有人能帮我解决这两个问题,那就太好了

代码如下:

#list quesions in an array

QANDA = [["Is the sky blue?", "y"],["Is it dark at night?", "y"],                                  
["Is this a yes or no question?", "y"],
["Is this a short answer question", "n"],
["Is this program written in rails?", "n"],["Is this program written in ruby?", "y"]]
#create a variable for the scoring system
num = 0
#create a loop to ask questions automatically
QANDA.each do |options|
puts options[0]
#ask for user input
puts "enter y or n"
ans = gets.chomp
ansdown = ans.downcase
#compair user input with correct answer
if ansdown == options[1]
#add number to score and give praise
num = num + 1
puts "correct"
#give shame
elsif ansdown == "n"
puts "incorrect"
#reprint question if responce is invalid
end
if ansdown != "y" && "n" && "Y" && "N"
puts "invaild input, please try again. Enter y/n only."
    redo
end
#convert num to a string
score = num.to_s
#print score
puts "you got " + score + " of 6 questions right."
#shame the foolish
if num <= 3
puts "you did a pretty bad job"
#praise the wise
elsif num > 4
puts "great job!"
elsif num == 4
puts "not to bad"
end
end
#在数组中列出问题
QANDA=[“天是蓝的吗?”,“是的”],[“晚上是黑的吗?”,“是的”],
[“这是一个肯定还是否定的问题?”,“y”],
[“这是一个简短的回答问题”,“n”],
[“这个程序是用rails写的吗?”,“n”],[“这个程序是用ruby写的吗?”,“y”]
#为评分系统创建一个变量
num=0
#创建一个自动提问的循环
QANDA.每个do |选项|
看跌期权[0]
#请求用户输入
输入“y或n”
ans=get.chomp
ansdown=ans.downcase
#回答正确的compair用户输入
如果ansdown==选项[1]
#给分数加上数字并给予表扬
num=num+1
放“正确”
#羞愧
elsif ansdown==“n”
“不正确”
#如果响应无效,请重新打印问题
结束
如果ansdown!=“y”&“n”&“y”&“n”
输入“输入ILD,请重试。仅输入y/n。”
重做
结束
#将num转换为字符串
分数=num.to\u s
#打印分数
正确回答6个问题中的“你得到”+分数+”
#愚人羞耻
如果num 4
“干得好!”
elsif num==4
把“不坏”
结束
结束
除了第一个条件,这句话对我来说毫无意义。你需要根据你想要做的来解决这个问题。这是“字符串文字”警告

这只是一个警告,在Ruby中字符串被认为是正确的,但我猜这不是你想要的

我建议

unless ["y","n"].include? ansdown
你需要冷静下来,但你已经这样做了


至于第二个问题,请改进你的缩进。我想你的分数代码太深了。它应该在每个块之外

以下条件错误:

 if ansdown != "y" && "n" && "Y" && "N"
其解释如下:

 if (ansdown != "y")     &&      ("n")     &&       ("Y")     &&     ("N")
您可能想做的是:

 if ansdown != "y" && ansdown != "n" && ansdown != "Y" && ansdown != "N"
或者简而言之,您可以这样做:

 if !["y", "Y","n","N"].include?(ansdown)
如果您使用的是ActiveSupport,那么还可以使用
exclude?
(在纯Ruby中不可能):


谢谢,现在代码末尾有个错误。你知道是什么引起的吗?20q2.rb:40:语法错误,输入意外结束,需要关键字_end这意味着,您有一个额外的
end
或多余的部分。正确缩进代码,这有助于识别这一点。谢谢,现在我在代码末尾发现一个错误。你知道是什么引起的吗?20q2.rb:40:语法错误,输入意外结束,应为关键字_end如果修复缩进,可能会发现其中一个块未关闭。。这就是错误听起来的样子。
 if !["y", "Y","n","N"].include?(ansdown)
 if ["y", "Y","n","N"].exclude?(ansdown)