到目前为止我已经
了puts "Enter a calculation: "
calc = gets.chomp
def add(a, b)
puts a + b
end
puts add(calc)
现在我很惭愧承认,但我很难过,我已经尝试过编写添加方法等等......但我似乎无法绕过这个来计算并输出正确的结果。
为简化此操作,我如何才能增加工作效果?
I.E用户输入计算(2个整数),程序添加 计算,程序输出结果,程序要求另一个 计算
答案 0 :(得分:3)
我认为这种脚本非常适合案例陈述。这是第一个适用于二元运算符的传递:
#! /usr/bin/ruby
def calc
puts "Calculator 1.0 \nEnter 'q' to quit."
while true
print ">> "
str = gets.chomp.split(" ") # splits into array, rejects blanks
return if str[0] == 'q' # quit if first element is 'q'
operand1 = str[0].to_i
operand2 = str[2].to_i
operator = str[1].to_sym
case operator
when :+ then puts operand1 + operand2
when :- then puts operand1 - operand2
when :* then puts operand1 * operand2
when :/ then puts operand1 / operand2
when :% then puts operand1 % operand2
else
puts "invalid input"
end
end
end
if __FILE__ == $0 # if run as script, start calc: see http://j.mp/HOTGq8
calc
end
然后,在命令行:
$ ./calc.rb
Calculator 1.0
Enter 'q' to quit.
>> 55 / 5
11
>> 90 / 10
9
>> 5 * 3093
15465
祝你好运!
如果你刚刚开始,这些资源很棒:RubyMonk Codecademy
答案 1 :(得分:2)
一次一步地想一想你的问题。您希望用户提供整数。所以从一个简单的提示开始,就像你已经完成的那样:
puts "Enter your first value"
现在从用户那里获取值:
firstVal = gets.chomp
现在提供另一个提示,并获得第二个值。
puts "Enter your second value"
secVal = gets.chomp
输出结果:
puts "#{firstVal} + #{secVal} = #{firstVal.to_i + secVal.to_i}"
有时只是简单易懂地写出来是最简单的第一步。现在,您可以创建一个add函数来更有效地执行此操作。试一试,看看你有没有运气!
编辑:
另外,我注意到你的add
函数有两个参数,但你只传递了一个参数。
要使用两个参数调用函数,需要两个值来提供它。例如:
x = 5
y = 2
def add(a, b)
return a + b
end
puts add(x, y)
答案 2 :(得分:2)
我知道这篇文章有点旧,但人们仍然会找到这个答案,我想补充一下jkrmr上面说的内容。
jkrmr发布的代码很棒,但不处理浮点计算,这很容易解决,所以我添加了functinoality。 : - )
#! /usr/bin/ruby
def calc
puts "Calculator 1.1 \nEnter 'q' to quit."
while true
print ">> "
str = gets.chomp.split(" ") # splits into array, rejects blanks
return if str[0] == 'q' # quit if first element is 'q'
if str[0].include? "."
operand1 = str[0].to_f
else
operand1 = str[0].to_i
end
operator = str[1].to_sym
if str[2].include? "."
operand2 = str[2].to_f
else
operand2 = str[2].to_i
end
case operator
when :+ then puts operand1 + operand2
when :- then puts operand1 - operand2
when :* then puts operand1 * operand2
when :/ then puts operand1 / operand2
when :% then puts operand1 % operand2
else
puts "invalid input"
end
end
end
if __FILE__ == $0 # if run as script, start calc: see http://j.mp/HOTGq8
calc
end
答案 3 :(得分:1)
这是一个快速的小计算器我掀起来帮助你开始:
#! /usr/bin/ruby
def add(a, b)
a + b
end
while(true) do
puts "Enter a calculation: "
# chomp off the \n at the end of the input
calc = gets.chomp
# quit if the user types exit
exit if calc.include?("exit")
# puts the result of the add function, taking input of calc "split" into two numbers
puts add(calc.split("").first.to_i, calc.split("").last.to_i)
# spacing
puts
end
答案 4 :(得分:1)
以此为基础。如果您想继续接收计算请求,可以将流程置于循环中(在许多解决方案中)。
while true
puts 'Enter Val 1'
v1 = gets.chomp.to_i
puts 'Enter Val 2'
v2 = gets.chomp.to_i
puts "#{v1} + #{v2} = #{v1+v2} "
end