Ruby只为字符串获取/放置?

我是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!' 

但是这段代码只放了10个num变量的副本,实际上并没有乘以这个数字,所以我假设我需要将’num’变量设为整数? 我没有成功,所以有人能告诉我哪里出错了吗?

如果您使用的是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!" 

使用to_i方法将其转换为整数。 换句话说,改变这个:

 num = gets.chomp 

对此:

 num = gets.chomp.to_i 

您还可以通过这种方式确保用户使用的数字是整数:

 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 

我希望这能更好地澄清你的观点。

我写了一个与你类似的程序。 这是我最终如何正常工作! 我不得不将最喜欢的数字指定为整数。 然后,在下一行中,我将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!"