如何在Ruby中将数字更改为单词?

时间:2016-04-24 03:23:23

标签: ruby

我需要插入而不是可被3整除的数字," d3"字。而不是可被5整除的数字," d5"字。我该怎么做。我试过这里:

puts "How many digits do u want to see?"                                              
number = gets.to_i                                                                    

number.times do |n|                                                                   
        puts "#{n}"                                                                   

        if (n % 3 == 0)                                                               
                puts "d3"                                                            
        elsif (n % 5 == 0)                                                            
                puts "d5"                                                            
        end                                                                           
end                                                                                   

如果输入数字7,则输出必须为:

1
2
d3
4
d5
d3
7

但是当我输入数字7时,我有不同的输出:

How many digits do u want to see?                                                     
7                                                                                     
0                                                                                     
d3                                                                                  
1                                                                                     
2                                                                                     
3                                                                                     
d3                                                                                
4                                                                                     
5                                                                                     
d5                                                                                 
6                                                                                     
d3

我的错误在哪里?

2 个答案:

答案 0 :(得分:2)

这里:

puts "How many digits do u want to see?"
number = gets.to_i

(1..number).each do |n|
  if (n % 3 == 0 && n % 5 == 0)
    puts "whatever you need"
  elsif (n % 3 == 0)
    puts "d3"
  elsif (n % 5 == 0)
    puts "d5"
  else
    puts n
  end
end

<强>更改

  1. 条件已更新
  2. 使用范围1..number跳过0

答案 1 :(得分:0)

在某个范围内调用时间会引发以下错误:

NoMethodError: undefined method `times' for 1..number:Range

使用次数就像数字一样。时间也将从0开始,在最后一个数字之前结束。这是一个可能的解决方案,它还增加了一个数字可以被3和5整除的可能性。

puts "How many digits do u want to see?"
number = gets.to_i

(1..number).each do |n|
  if (n % 3 == 0 && n % 5 == 0)
    puts "..." # whatever message you like
  elsif (n % 3 == 0)
    puts "d3"
  elsif (n % 5 == 0)
    puts "d5"
  else
    puts n
  end
end