我必须编写代码将摄氏温度转换为华氏温度。最后,我需要它在语句中显示答案。我试图让它显示用户输入的数字是答案华氏温度。
示例用户输入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."
答案 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