2016-09-28 84 views
1

它要求我做到以下幾點:碼學院幫助 - 紅寶石

1. 裏面你當「添加」塊,除去賣出期權「已添加!」聲明。

取而代之,提示用戶輸入電影標題。將結果保存在名爲title的新變量中。 (您的代碼已經有如何做到這一點的示例!)

接下來,提示用戶對電影進行評級。將其保存在名爲rating的新變量中。

將該電影/評分對添加到電影哈希中,並放入一條消息,指示已添加該對。 (不需要to_sym或to_i只是!)

我把這個,並得到一個錯誤,我沒有添加到電影哈希!

movies = { 
    Batman: 10, 
} 

puts "What is your favorite movie?" 
choice = gets.chomp 

case choice 
when 'add' 
    puts "What movie do you want to add?" 
     title = gets.chomp 

    puts "Whats the rating (1-10)?" 
     rating = gets.chomp 

    movies[title] = rating 
    puts "#{title} has been added with a rating of #{rating}!" 

when "update" 
    puts "Updated!" 
when "display" 
    puts "Movies!" 
when "delete" 
    puts "Deleted!" 
else 
    puts "Error!" 
end 
+0

你如何嘗試從哈希中檢索電影? – Bustikiller

+0

@Bustikiller我認爲這將會被問到問題的進一步,但它不會讓我到下一步,它說我不添加標題和評級電影哈希 – SG17

回答

0

這是非常誘人的:)所以,我實際登錄到codeacademy,找到了這個例子,並在其上工作。只要結果符合預期,Codeacademy只接受你的任務,不管其是否正確。所以我嘗試了各種各樣的答案,直到我得到了codeacademy喜歡的東西。 enter image description here

另外,在代碼中,當賦值是針對字符串時,您將創建一個帶符號的散列。另外,您不會將您的輸入值轉換爲符號。所以,即使您的解決方案可能工作,CodeAcademy也會失敗。

+0

...並且在「電影」散列表中的唯一一行之後有一個額外的逗號 – Sid

+0

它工作:)感謝幫助@Sid – SG17

0

很可能你的散列需要符號鍵,而你正在添加字符串鍵。嘗試:

movies[title.to_sym] = rating 
+0

仍然得到相同的錯誤信息:它看起來像你沒有添加到電影哈希! – SG17

0

如果添加了電影「閃亮」與例如等級10,可能是代碼科學院期待的movies散列等於{:Batman=>10, :Shinning=>10},但你的代碼,我們將有movies等於{:Batman=>10, "Shinning"=>"10"}。如果是這樣的話,那麼你必須牢記以下幾點:

  1. 哈希鍵應該是一個符號,而不是字符串
  2. 值(rating)需要(如:Batman,不"Batman"。)一個整數,而不是一個字符串。有下列

    movies[title] = rating 
    

    ::(10,不"10"

所以替換此行

movies[title.to_sym] = rating.to_i 

這是我能想出的唯一解釋。然而,如果情況並非如此,那麼我會說你的代碼是好的,新的密鑰值會被加入到movies散列中。

+0

我仍然得到一個錯誤我認爲它必須是codecadmey上的錯誤 – SG17

+0

該死的!雅我認爲它的錯誤。因爲我可以使用我的機器中的代碼成功添加到「電影」哈希。 –

1

你的代碼是

我可以證實,這是從Codecademy網站的錯誤,因爲我的解決方案几乎是相似的,它通過My code is similar to yours

That shows the code passed

我面臨的Codecademy網站同樣的挑戰實際上是正確的。我認爲你的第一個選擇是確保movies散列沒有被改變,它包括所有的電影是問題的一部分。 Codecademy的問題在於,它實際上是檢查返回值而不是代碼或邏輯,所以有時你可以通過編寫代碼來避免提交,即使它不應該是

如果這樣不能解決問題,編碼並再次鍵入解決方案並提交。希望這應該糾正這個問題。我之前不得不這樣做了幾次,因爲codecademy似乎有幾個bug。所有最好的,並希望這將它spolves它