Ruby只为字符串获取/放置?
我是Ruby新手,目前正在编写一些练习代码,如下所示:Ruby只为字符串获取/放置?,ruby,integer,Ruby,Integer,我是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变量的十个副本,实际
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'变量设置为整数?我在这方面没有成功,所以有人能告诉我哪里出了问题吗?使用
to_I
方法将其转换为整数。换言之,改变这一点:
num = gets.chomp
为此:
num = gets.chomp.to_i
如果您使用的是
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!'
但是一般来说,使用“#{}”
更好,因为您不必关心到_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!"
您还可以通过以下方式确保用户使用的数字是整数:
num = Integer(gets.chomp)
但是您必须创建一种方法来捕获错误,以防用户输入字符或字符串之类的错误;最好使用:
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
我希望这能更好地阐明你的观点。我编写了一个与你类似的程序。下面是我最终如何让它正常工作的!我必须将最喜欢的数字指定为整数。然后,在下一行中,我使用fav_num+1的值设置新的_fav_num,然后将其转换为字符串。之后,您只需将代码插入要对用户说的return语句,只需将第一个fav_num转换为字符串
显示“你最喜欢的号码是什么?”
fav_num=gets.chomp.to_i
new_fav_num=(fav_num+1)。到
把“你最喜欢的号码是”+fav_num.to_s+”。这还不错,但是+
new_fav_num+“更大更好!”
我确实尝试过,但我得到了相同的错误:“RubyTest.rb:3:in`+':无法将Fixnum从RubyTest.rb转换为字符串(TypeError):3@AppSlap:哎呀,我以为Ruby在连接字符串和整数时可能会隐式强制转换。当您需要将+
与字符串和整数一起使用时,请首先将整数转换为带有to_s
的字符串。例如:把“你的号码是”+num.to_s+”
@icktoofay谢谢你这么说,但我还是收到了同样的错误。我的代码现在看起来是这样的:“你好,你能告诉我你最喜欢的号码吗?”num=gets.chomp.to_我把“你最喜欢的号码是”+num.to_s+”?“+”这还不错,但“+num*10+”确实好10倍@AppSlap:..+(num*10).to_s+'.
@AppSlap:请注意,如果使用{}
而不是+
,则不需要使用to_s
,这在ruby.num=gets.chomp.to_i或num.to_i*10(代码中较低)中通常是首选使用整数(gets.chomp)的一点
事实上,这是一个很好的方法,可以确保你真的得到一个整数<代码>开始;打印“输入一个数字”;num=整数(gets.chomp);补救错误;写上“那不是一个数字,再试一次”;重试;结束;放置数值>3?“{num}大于3”:“{num}小于3或3”