根据用户选择的内容乘以用户的输入

时间:2015-11-24 18:18:26

标签: ruby hash

我尝试在这里寻找类似的案例,但没有成功。

我希望用户首先介绍一定数量的金钱,然后他需要陈述一些天:" 30"," 45"或" 60",而不是其他选项,而不是这些,最后,该程序将乘以固定数字的金额。此数字取决于用户选择的天数。如果他选择30,"金额* 1.0219&#34 ;; 45:"金额* 1.0336&#34 ;; 60:"金额* 1.0467"。

到目前为止,这是我写的代码:

puts "Indicate money to invest"
money_invested = gets.to_i 

puts "Indicate time of investment"
time_investment = gets.to_i

investment_calculation = { 30 => 1.0219, 45 => 1.0336, 60 => 1.0467 }
# will be `nil` if not one of the defined ones

我知道哈希内部已经发生了一些可怕的事情,所以我决定停在那里。我不确定=>是否意味着我想要的意思,即:相乘。

2 个答案:

答案 0 :(得分:1)

您可以存储“固定值”'在哈希中并根据给定的用户输入访问它们。 E.g:

fixed_values = { "30" => 1.0219,
                 "45" => 1.0336, 
                 "60" => 1.0467 }

然后你必须将它与*运算符相乘:

investment_calculation = money_invested * fixed_values[time_investment]

当然,您应该检查哈希中是否有用户输入的天数,以避免错误或不当行为。

答案 1 :(得分:0)

即使您的问题非常基础,但写得很好并且易于理解。干得好!

现在跟着我:哈希,在其他一些非Ruby语言中也被称为“地图”,是一种数据结构,它允许我们将键与值相关联。散列中的键等同于数组中的索引:数组的主要目的是通过使用索引来存储和访问元素,散列的主要目的是按键存储和访问元素。与通用键值数据结构的其他天真实现相比,哈希真的快。

在此示例中,您将密钥30与值1.0219相关联。您可以使用irb命令在控制台中评估哈希的行为:

> investment_calculation = { 30 => 1.0219, 45 => 1.0336, 60 => 1.0467 }
=> {30=>1.0219, 45=>1.0336, 60=>1.0467}
> investment_calculation[30]
=> 1.0219
> investment_calculation[45]
=> 1.0336
> investment_calculation[100]
=> nil

相比之下,您可以使用具有稀疏值的数组解决问题,即将许多值设置为0 / nil,但由于大部分内存用于什么都不存储。