繁体   English   中英

如何评估随机数学运算符?

[英]How do I evaluate a random math operator?

我是Ruby和一般编程人员的新手。 我一直在尝试编写一个小的脚本,该脚本可以随机创建数学问题并可以解决它们,但是我在生成随机数学运算符时遇到了麻烦。

到目前为止,我的脚本是:

num = (1..10).to_a

num1 = num.shuffle[0]
num2 = num.shuffle[0]

op = %w{+ - = /} 
op1 = op.sample

puts w = "#{num1} #{op1} #{num2}"

puts "Your answer is:"
answer = gets()

solution = num1 + "what do I put here??" + num2

if answer.to_i == solution
  puts "Correct! The answer is #{solution}"
else
  puts "Incorrect, the answer is #{solution}"
end

我设法挑选出一个随机运算符,但由于它是字符串,所以无法在解决方案中使用它。

为什么不使用符号,然后将其发送给带有参数的操作数?

5.send(:+, 10)

例如:

> syms = [:+, :-, :*, :/]
=> [:+, :-, :*, :/]
> num1.send(syms.sample, num2)
=> 50

您为什么要在操作中使用sample ,而不是数字?

您要寻找的魔术字是“ eval ”。 一旦[抱歉,在我的办公桌前打断了您的电话]一旦有了字符串,您就可以简单地求值以得到结果:

expr = "42"+"+"+"54"
result = eval(expr)

irb(main):006:0> expr = "42"+"+"+"54"
=> "42+54"
irb(main):007:0> result = eval(expr)
=> 96

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM