如何在陈述中显示答案

时间:2019-06-19 04:09:32

标签: ruby

我必须编写代码将摄氏温度转换为华氏温度。最后,我需要它在语句中显示答案。我试图让它显示用户输入的数字是答案华氏温度。

  

示例用户输入104,因此语句应显示为:104摄氏度   是219华氏度。

我尝试了多种方法使其正常工作,但我能尽其所能地显示出219华氏度而没有句子的开头。

这是我的代码:

尝试使用#{degrees}时出现错误。我尝试使用+将它们连接为一个句子,但出现错误。您在下面看到的是所有有效的方法。

def c_to_f
  puts "Enter degrees Celsius"
  degrees = gets
  (degrees.to_i * 9/5) + 32
end

puts c_to_f

puts "Fahrenheit."

3 个答案:

答案 0 :(得分:2)

  

如何在陈述中显示答案

假设您有两个具有整数值的变量:

celsius = 104
fahrenheit = 219

有几种方法可以将它们变成句子“ 104摄氏度是219华氏度。”

您可以使用print单独打印每个部分,而不会添加换行符:

print celsius
print ' Celsius is '
print fahrenheit
print ' Fahrenheit.'
puts  # <- this adds a newline

或者您可以通过一次print调用来打印所有零件:

print celsius, ' Celsius is ', fahrenheit, ' Fahrenheit.'
puts

您还可以尝试使用+连接字符串来构建句子。但是,为了起作用,每个部分都必须是字符串,因此需要通过to_s来转换数字:

puts celsius.to_s + ' Celsius is ' + fahrenheit.to_s + ' Fahrenheit.'

更惯用的方法是使用#{...}将值内插到字符串中:(必须使用双引号)

puts "#{celsius} Celsius is #{fahrenheit} Fahrenheit."

最后还有format,它使用占位符从模板构建字符串:(%d =十进制)

puts format('%d Celsius is %d Fahrenheit.', celsius, fahrenheit)

除了这句话外,我注意到您的c_to_f方法当前所做的不仅仅是将摄氏温度转换为华氏温度:

def c_to_f
  puts "Enter degrees Celsius"  # <- printing
  degrees = gets                # <- collecting input
  (degrees.to_i * 9/5) + 32     # <- string conversion and finally C to F
end

我将其写为:

def c_to_f(degrees)
  degrees * 9 / 5 + 32
end

将输出/输入移到方法之外:

puts 'Enter degrees Celsius'
celcius = gets.to_i
fahrenheit = c_to_f(celsius)

这使方法更具通用性,例如在没有用户输入的情况下使用:

puts 'Conversion table:'
(-30..100).step(10) do |c|
  puts format('%3d °C = %3d °F', c, c_to_f(c))
end

%3d表示宽度为3的十进制值。较短的数字将用空格填充,从而使输出很好地对齐:

Conversion table:
-30 °C = -22 °F
-20 °C =  -4 °F
-10 °C =  14 °F
  0 °C =  32 °F
 10 °C =  50 °F
 20 °C =  68 °F
 30 °C =  86 °F
 40 °C = 104 °F
 50 °C = 122 °F
 60 °C = 140 °F
 70 °C = 158 °F
 80 °C = 176 °F
 90 °C = 194 °F
100 °C = 212 °F

答案 1 :(得分:0)

尝试这种方式:

def c_to_f 
  puts "Enter degrees Celsius" 
  degrees = gets 
  fh = (degrees.to_i * 9/5) + 32 
  puts "#{fh} Fahrenheit."
end

# call the function
c_to_f

答案 2 :(得分:0)

由于要在语句中同时显示输入值和输出值,因此可能应该在方法内部puts

def c_to_f
  puts "Enter degrees Celsius"
  c_degrees = gets.to_i
  f_degrees = (c_degrees * 9/5) + 32
  puts "#{c_degrees} celsius is #{f_degrees} in Fahrenheit"
end

c_to_f