第一次程序員,我很困惑,爲什麼我的ruby代碼沒有給出我想要的結果。我寫了一個簡單的程序來模擬滾動不同的多面骰子。涉及插值的Ruby代碼沒有給出我想要的結果
d4 = rand (1..4)
d6 = rand (1..6)
d8 = rand (1..8)
d12 = rand (1..12)
d20 = rand (1..20)
percent = rand (1..100)
puts "Which dice would you like to roll?"
which_dice = gets.chomp
puts "You rolled a #{which_dice}!"
前六行定義每個骰子輸出1和骰子邊的數量之間的隨機數。然後我要求用戶用gets方法輸入他們想要的骰子,然後將結果與最後一行一起輸出。
問題是,當最後一行被執行時,它會顯示「你把一個(用戶用gets方法輸入的字符串作爲一個字符串輸入)!」。例如,當用戶在提示時輸入d8時,它會放入「你滾動了d8!」而不是我想要的1到8之間的實際隨機數。我怎麼能擁有它,所以它把一個實際的隨機數?
小心使用這種方法,雖然 - https://stackoverflow.com/questions/5349624/how-to-call-methods-dynamically-based-on-their-name/26284769#26284769 –
當然@BradWerth !但正如所說的,「有更好的方法來實現它」。我避免做出假設,只想解決它。實際上,從安全角度來看,我認爲這是最糟糕的解決方案,但我可以說,這種解決方案是唯一提出的解決方案,能夠在不改變剩餘代碼的情況下產生理想的結果。另外,作者沒有告訴我們這個代碼運行的環境。也許他只是試圖解決學校問題,解決在線練習或在輸入被控制的環境中運行(可能不是由人類輸入) – Codextremist
我只是希望OP瞭解評估用戶 - 提供輸入... –