我似乎无法获得数字列表的平均值

时间:2016-02-02 12:11:16

标签: ruby

print " Please enter a list of numbers "
numbers = eval(gets.chomp)
sum = numbers.reduce(:+)
print " The average is  " + sum.to_s / reduce.to_f

2 个答案:

答案 0 :(得分:2)

sum.to_s返回一个字符串。你不能用浮点数划分字符串。并且reduce甚至没有定义。您可能只想使用:

print " The average is  #{sum.to_f / numbers.size}"

此外,在这种情况下使用eval非常危险。想象一下如果有人输入类似system('rm -rf /') ...

的内容会发生什么

答案 1 :(得分:1)

正如Spickerman所指出的那样使用eval在这种情况下是非常危险的所以我建议你做一些像

这样的事情
print " Please enter a list of numbers "
numbers = gets.strip.split(" ").map(&:to_f)
sum = numbers.reduce(:+)
print " The average is  #{sum/ numbers.size}"