我是Ruby的新手,目前正在研究一些类似于以下内容的练习代码:
puts 'Hello there, Can you tell me your favourite number?'
num = gets.chomp
puts 'Your favourite number is ' + num + '?'
puts 'Well its not bad but ' + num * 10 + ' is literally 10 times better!'
这段代码只是放了几个num变量的副本,实际上并没有乘以数字,所以我假设我需要将'num'变量设为整数?我没有成功,所以有人能告诉我哪里出错了吗?
答案 0 :(得分:25)
如果您使用的是to_i
,那么chomp
之前就是多余的。所以你可以这样做:
puts 'Hello there, Can you tell me your favourite number?'
num = gets.to_i
puts 'Your favourite number is ' + num.to_s + '?'
puts 'Well its not bad but ' + (num * 10).to_s + ' is literally 10 times better!'
但一般情况下,使用"#{}"
会更好,因为您不必关心to_s
,而且运行速度更快,更容易看到。方法String#+
特别慢。
puts 'Hello there, Can you tell me your favourite number?'
num = gets.to_i
puts "Your favourite number is #{num}?"
puts "Well its not bad but #{num * 10} is literally 10 times better!"
答案 1 :(得分:6)
使用to_i
方法将其转换为整数。换句话说,改变这个:
num = gets.chomp
对此:
num = gets.chomp.to_i
答案 2 :(得分:0)
您还可以确保用户使用的数字是这样的整数:
num = Integer(gets.chomp)
但是你必须创建一种方法来捕获错误,以防用户输入,否则像char或string这样;最好使用:
num = gets.chomp.to_i
如果用户输入其他类型的数据,num将等于0,就像您在此测试示例中看到的那样:
puts "give me a number:"
num = gets.chomp.to_i
if num >3
puts "#{num} es mayor a 3 "
else
puts "#{num} es menor a 3 o 3"
end
这是与该脚本交互的一个例子:
give me a number:
sggd
0 es menor a 3 o 3
nil
我希望这能更好地澄清你的观点。
答案 3 :(得分:0)
我写了一个与你类似的程序。这是我最终如何正常工作!我不得不将最喜欢的数字指定为整数。然后,在下一行中,我将new_fav_num设置为fav_num +1,然后将其转换为字符串。之后,您只需将代码插入要向用户说的return语句中,只需将第一个fav_num转换为字符串即可。
puts "What is your favorite number?"
fav_num = gets.chomp.to_i
new_fav_num = (fav_num + 1).to_s
puts "Your favorite number is " + fav_num.to_s + ". That's not bad, but " +
new_fav_num + " is bigger and better!"
希望这有帮助。