2017-11-04 5 views
0

英語の不規則な動詞を含むテキストファイルから配列を作成します。私は、コードが私に動詞をランダムに順番に尋ねて、私が正しく応答する場合にのみ進めるようにしたい。配列の要素と文字列を比較する必要があります。私はこれを書いた:Ruby、どのように配列の特定の要素と文字列を比較できますか?

a = [] 
File.open('documents/programmi_test/verbi.txt') do |f| 
    f.lines.each do |line| 
    a <<line.split.map(&:to_s) 
    end 
end 
puts '' 
b = rand(3) 
puts a[b][0] 
puts 'infinitive' 
infinitive = gets.chomp 
    if infinitive = a[b][1] #--> write like this, I receive alway "true" 
    puts 'simple past' 
    else 
    puts 'retry' 
    end 
pastsimple = gets.chomp 
    if pastsimple == a[b][2] #--> write like this, I receive alway "false" 
    puts 'past participle' 
    else 
    puts 'retry' 
    end 
pastpart = gets.chomp 
    if pastpart == a[b][3] 
    puts 'compliments' 
    else 
    puts 'oh, no' 
    end 

誰かが私を助けることができますか?

+0

もっと良い結果が得られましたか?試してみましたか?もしそうなら、それも提供してください。 – IncredibleHat

+0

コードで動詞 "battere"(配列[b]の位置[0]、テキストファイルでは配列[1]の位置[0])の無限値を書くように要求された場合は、 "beat"(配列[1]の位置[1])を書き込んでください。私が何かを書くなら、私はもう一度やり直さなければならない。 – dadex

答えて

1

if infinitive = a[b][1]は、a[b][1]という値を無効に割り当てています。これは、両方の値の比較であるpastsimple == a[b][2]とは異なります。

===を置き換えることができます。

a = [] 

File.open('documents/programmi_test/verbi.txt') do |file| 
    file.lines.each do |line| 
    a << line.split.map(&:to_s) 
    end 
end 

puts '' 
b = rand(3) 
puts a[b][0] 
puts 'infinitive' 

infinitive = gets.chomp 
puts infinitive == a[b][1] ? 'simple past' : 'retry' 
pastsimple = gets.chomp 
puts pastsimple == a[b][2] ? 'past participle' : 'retry' 
pastpart = gets.chomp 
puts pastpart == a[b][3] ? 'compliments' : 'oh, no' 
+0

問題は、コードが "無限"を[b](ランダム)配列の位置[1]にあるファイルの文字列と比較しないと思うということです。 – dadex

+0

byebugを使用してそのような値をデバッグする必要があります簡単に確認できます。 –

関連する問題